TDbiDBProxy.hxx

Go to the documentation of this file.
00001 
00002 #ifndef DBIDBPROXY_H
00003 #define DBIDBPROXY_H
00004 
00005 /**
00006  *
00007  * $Id: TDbiDBProxy.hxx,v 1.1 2011/01/18 05:49:19 finch Exp $
00008  *
00009  * \class TDbiDBProxy
00010  *
00011  *
00012  * \brief
00013  * <b>Concept</b> Object to query a specific database table.
00014  *
00015  * \brief
00016  * <b>Purpose</b> To encapsulate the standard context query and
00017  * the management of SEQNOs and meta-data.  This allows clients to
00018  * execute queries without specifying SQL. TDbiDBProxy also supports
00019  * "Extended Context" queries which provides a framework in which
00020  * clients can extended the basic query and can use SQL to fine tune
00021  * their requests.
00022  *
00023  * \brief
00024  * <b>Uage Notes</b> The object can be "programmed" with an SQL condition
00025  * using SetSqlCondition.  If not null the string is prefixed with
00026  *"where" and used when responding to the following validity queries:-
00027  *   QueryAllValidities
00028  *   QueryValidity
00029  *
00030  * Contact: A.Finch@lancaster.ac.uk
00031  *
00032  *
00033  */
00034 
00035 #include <string>
00036 using std::string;
00037 #include <list>
00038 #include <vector>
00039 
00040 #include "TDbi.hxx"
00041 
00042 
00043 class TDbiCascader;
00044 class TDbiInRowStream;
00045 class TDbiTableMetaData;
00046 class TDbiTableProxy;
00047 class TDbiValidityRec;
00048 class TVldContext;
00049 
00050 class TVldTimeStamp;
00051 
00052 class TDbiDBProxy
00053 {
00054 
00055 public:
00056 
00057 #ifndef __CINT__
00058 typedef const std::vector<UInt_t> SeqList_t;
00059 #endif
00060 
00061 // Constructors.
00062            TDbiDBProxy(TDbiCascader& cascader,
00063                       const string& tableName,
00064                       const TDbiTableMetaData* metaData,
00065                       const TDbiTableMetaData* metaValid,
00066                       const TDbiTableProxy* tableProxy);
00067   virtual ~TDbiDBProxy();
00068 
00069 // State testing member functions
00070               Bool_t HasEpoch() const;
00071               UInt_t GetNumDb() const;
00072        const string& GetTableName() const { return fTableName; }
00073 const TDbiTableProxy* GetTableProxy() const { return fTableProxy; }
00074                 void StoreMetaData(TDbiTableMetaData& metaData) const;
00075               Bool_t TableExists(Int_t selectDbNo=-1) const;
00076 
00077 // Query (input) member functions
00078            void FindTimeBoundaries(const TVldContext& vc,
00079                                    const TDbi::Task& task,
00080                                    UInt_t dbNo,
00081                                    const TDbiValidityRec& lowestPriorityVrec,
00082                                    Bool_t resolveByCreationDate,
00083                                    TVldTimeStamp& start,
00084                                    TVldTimeStamp& end) const;
00085   TDbiInRowStream* QueryAllValidities(UInt_t dbNo,UInt_t seqNo=0) const;
00086   TDbiInRowStream* QuerySeqNo(UInt_t seqNo,UInt_t dbNo) const;
00087 #ifndef __CINT__
00088 /// Secondary query for aggregate and extended context queries.
00089   TDbiInRowStream* QuerySeqNos(SeqList_t& seqNos,
00090                             UInt_t dbNo,
00091                             const string& sqlData = "",
00092                             const string& fillOpts = "") const;
00093 #endif
00094   TDbiInRowStream* QueryValidity(const TVldContext& vc,
00095                               const TDbi::Task& task,
00096                               UInt_t dbNo) const;
00097   TDbiInRowStream* QueryValidity(const string& context,
00098                               const TDbi::Task& task,
00099                               UInt_t dbNo) const;
00100   TDbiInRowStream* QueryValidity(UInt_t seqNo,
00101                               UInt_t dbNo) const;
00102 
00103 // Store (output) member functions
00104          Bool_t ReplaceInsertDate(const TVldTimeStamp& ts,
00105                                   UInt_t SeqNo,
00106                                   UInt_t dbNo) const;
00107          Bool_t RemoveSeqNo(UInt_t seqNo,
00108                             UInt_t dbNo) const;
00109          Bool_t ReplaceSeqNo(UInt_t oldSeqNo,
00110                              UInt_t newSeqNo,
00111                              UInt_t dbNo) const;
00112 
00113 // State changing member functions
00114            void SetSqlCondition(const string& sql) {
00115                                                   fSqlCondition = sql; }
00116 
00117 private:
00118 
00119 // Disabled (not implemented) copy constructor and asignment.
00120 
00121  TDbiDBProxy(const TDbiDBProxy&);
00122  TDbiDBProxy& operator=(const TDbiDBProxy&);
00123 
00124 // Data members
00125 
00126 /// Reference to one and only cascader
00127   TDbiCascader& fCascader;
00128 
00129 /// Owned by TDbiTableProxy
00130   const TDbiTableMetaData* fMetaData;
00131 
00132 /// Owned by TDbiTableProxy
00133   const TDbiTableMetaData* fMetaValid;
00134 
00135 /// Optional condition to be applied.
00136 /// See Usage Notes.
00137   string fSqlCondition;
00138 
00139 /// Table Name
00140   string fTableName;
00141 
00142 /// Owning TDbiTableProxy.
00143    const TDbiTableProxy* fTableProxy;
00144 
00145 ClassDef(TDbiDBProxy,0)     //  Proxy for physical database.
00146 
00147 };
00148 
00149 
00150 #endif  // DBIDBPROXY_H
00151 

Generated on 11 Aug 2013 for SKDatabase by  doxygen 1.6.1