00001 #ifndef DBICTX_H 00002 #define DBICTX_H 00003 00024 #include "DatabaseInterface/Dbi.h" 00025 #include "DatabaseInterface/DbiSqlContext.h" 00026 #include "DatabaseInterface/DbiValidityRec.h" 00027 #include "Context/Context.h" 00028 #include "Context/ContextRange.h" 00029 #include "Context/TimeStamp.h" 00030 00031 #include <string> 00032 using namespace std ; 00033 00034 class DbiCtx 00035 { 00036 public: 00037 DbiCtx(); 00038 DbiCtx( const char* str ); 00039 00040 void SetDefaults(); 00041 virtual ~DbiCtx(); 00042 00043 // update ctx based on string interpretation 00044 int Update( const char* str ); 00045 00046 DbiSqlContext* MakeIntervalContext( DbiSqlContext::IntervalType ity=DbiSqlContext::kWithin ); 00047 00048 // static converters from strings 00049 // these should be moved into Conventions/Context once working 00050 00051 static Dbi::AbortTest AbortTest_FromString( const char* str ); 00052 static Dbi::Task Task_FromString( const char* str ); 00053 static Dbi::SubSite SubSite_FromString( const char* str ); 00054 static Bool_t FindFullTimeWindow_FromString( const char* str ); 00055 static TimeStamp TimeStamp_FromString( const char* str ); 00056 static int SiteMask_FromString( const char* str ); 00057 static int SimMask_FromString( const char* str ); 00058 static int int_FromString( const char* str ); 00059 static string ObjName( const char* pfx, const char* cls ); 00060 00061 00062 // accessors for contained context 00063 00064 const Context& GetContext(){ return m_context ; } 00065 const TimeStamp& GetTimeStamp(){ return m_context.GetTimeStamp() ; } 00066 SimFlag::SimFlag_t GetSimFlag(){ return m_context.GetSimFlag() ; } 00067 Site::Site_t GetSite(){ return m_context.GetSite() ; } 00068 DetectorId::DetectorId_t GetDetectorId(){ return m_context.GetDetId() ; } 00069 00070 void SetContext( const Context& context ); 00071 void SetTimeStamp(const TimeStamp& ts); 00072 void SetSimFlag(SimFlag::SimFlag_t flag); 00073 void SetSite(Site::Site_t site); 00074 void SetDetectorId(DetectorId::DetectorId_t det); 00075 00076 // accessors for direct data members 00077 00078 Dbi::SubSite GetSubSite(){ return m_subsite ; } 00079 Dbi::Task GetTask(){ return m_task ; } 00080 Dbi::AbortTest GetAbortTest(){ return m_abortTest ; } 00081 Bool_t GetFindFullTimeWindow(){ return m_findFullTimeWindow ; } 00082 00083 void SetSubSite( Dbi::SubSite subsite ); 00084 void SetTask( Dbi::Task task ); 00085 void SetAbortTest( Dbi::AbortTest abortTest ); 00086 void SetFindFullTimeWindow( Bool_t findFullTimeWindow ); 00087 00088 // accessors for low-level and extended queries ... 00089 00090 void SetSeqNo( int seqNo ); 00091 void SetDbNo( int dbNo ); 00092 void SetSqlContext( const DbiSqlContext& sqlContext ); 00093 void SetSqlContext( const string& ssqlContext ); 00094 void SetDataSql( const string& dataSql ); 00095 void SetDataFillOpts( const string& dataFillOpts ); 00096 void SetValidityRec( const DbiValidityRec& validityRec ); 00097 void SetTableName( const string& tableName ); 00098 void SetDbName( const string& dbName ); 00099 void SetLogComment( const string& logComment ); 00100 void SetVersionDate( const TimeStamp& versionDate ); 00101 00102 int GetSeqNo(){ return m_seqNo ; } 00103 int GetDbNo(){ return m_dbNo ; } 00104 const DbiSqlContext& GetSqlContext(){ return m_sqlContext ; } 00105 const string& GetDataSql(){ return m_dataSql ; } 00106 const string& GetDataFillOpts(){ return m_dataFillOpts ; } 00107 const DbiValidityRec& GetValidityRec(){ return m_validityRec ; } 00108 const string& GetTableName(){ return m_tableName ; } 00109 const string& GetDbName(){ return m_dbName ; } 00110 const string& GetLogComment(){ return m_logComment ; } 00111 const TimeStamp& GetVersionDate(){ return m_versionDate ; } 00112 00113 00114 // accessors for contained context range 00115 // timestamp proliferation due to ContextRange implementation preventing returning references 00116 00117 const ContextRange& GetContextRange(){ return m_contextRange ; } 00118 TimeStamp GetTimeStart(){ return m_contextRange.GetTimeStart() ; } 00119 TimeStamp GetTimeEnd(){ return m_contextRange.GetTimeEnd() ; } 00120 int GetSiteMask(){ return m_contextRange.GetSiteMask() ; } 00121 int GetSimMask(){ return m_contextRange.GetSimMask() ; } 00122 int GetAggNo(){ return m_aggNo ; } 00123 00124 void SetContextRange(const ContextRange& range); // CAUTION : COLLECTIVE SETTER 00125 void SetTimeStart(const TimeStamp& tstart); 00126 void SetTimeEnd(const TimeStamp& tend); 00127 void SetSiteMask( int siteMask ); 00128 void SetSimMask( int simMask ); 00129 void SetAggNo( int aggNo ); 00130 00131 // masks for tracking use of the above setters , changes and ctors used 00132 00133 00134 Bool_t IsSet(int mask); 00135 Bool_t IsValid(); // mask comparisons to discern if associated object is uptodate 00136 void LogMask( int needmask ); 00137 00138 int GetMask(){ return m_mask ; } // settings (not necessarily changes) 00139 int GetUpdateMask(){ return m_update ; } // changes 00140 int GetCtorMask(){ return m_ctor ; } 00141 00142 void SetMask(int mask){ m_mask = mask ; } 00143 void SetUpdateMask(int mask){ m_update = mask ; } 00144 void SetCtorMask(int mask){ m_ctor = mask ; } 00145 00146 00147 void RegisterCreation( const char* msg ); 00148 void RegisterFail( const char* msg ); 00149 00150 const char* AsString(); 00151 static const char* MaskAsString(int msk ); 00152 00153 private: 00154 string m_class ; 00155 00156 Context m_context ; 00157 Dbi::SubSite m_subsite ; 00158 Dbi::Task m_task ; 00159 Dbi::AbortTest m_abortTest ; 00160 Bool_t m_findFullTimeWindow ; 00161 00162 ContextRange m_contextRange ; 00163 int m_aggNo ; 00164 int m_seqNo ; 00165 int m_dbNo ; 00166 00167 DbiSqlContext m_sqlContext ; 00168 string m_dataSql ; 00169 string m_dataFillOpts ; 00170 DbiValidityRec m_validityRec ; 00171 string m_tableName ; 00172 string m_dbName ; 00173 string m_logComment ; 00174 TimeStamp m_versionDate ; 00175 00176 // masks for settings/updates/ctor 00177 int m_mask ; 00178 int m_update ; 00179 int m_ctor ; 00180 00181 }; 00182 00183 #endif // DBICTX_H