00001 #ifndef DBILOGENTRY_H
00002 #define DBILOGENTRY_H
00003
00025 #include <string>
00026 using std::string;
00027 #include <iosfwd>
00028
00029 #include "TObject.h"
00030
00031 #include "Conventions/Site.h"
00032 #include "Conventions/SimFlag.h"
00033 #include "DatabaseInterface/DbiTableRow.h"
00034 #include "DatabaseInterface/Dbi.h"
00035 #include "Context/TimeStamp.h"
00036
00037
00038 class DbiLogEntry;
00039 class DbiOutRowStream;
00040 class DbiResultSet;
00041 class DbiTableProxy;
00042 class DbiValidityRec;
00043
00044 std::ostream& operator<<(std::ostream& s, const DbiLogEntry& logEntry);
00045
00046 class DbiLogEntry : public DbiTableRow
00047 {
00048
00049 public:
00050
00051
00052
00053
00054 DbiLogEntry(const string& tableName = "",
00055 const string& reason = "",
00056 Int_t siteMask = Site::FullMask(),
00057 Int_t simMask = SimFlag::FullMask(),
00058 Dbi::SubSite subsite = 0,
00059 Dbi::Task task = 0,
00060 Int_t logSeqNoMin = 0,
00061 Int_t logSeqNoMax = 0,
00062 Int_t logNumSeqNo = 0);
00063 virtual ~DbiLogEntry();
00064
00065
00066
00067
00068 virtual DbiTableRow* CreateTableRow() const {
00069 return new DbiLogEntry; }
00070 Int_t GetAggregateNo() const { return -1; }
00071
00072
00073 const string& GetLogTableName() const { return fLogTableName; }
00074 Int_t GetSiteMask() const { return fLogSiteMask; }
00075 Int_t GetLogSeqNoMin() const { return fLogSeqNoMin; }
00076 Int_t GetLogSeqNoMax() const { return fLogSeqNoMax; }
00077 Int_t GetLogNumSeqNo() const { return fLogNumSeqNo; }
00078 Int_t GetSimMask() const { return fLogSimMask; }
00079 Dbi::SubSite GetSubSite() const { return fLogSubSite; }
00080 Dbi::Task GetTask() const { return fLogTask; }
00081 const string& GetUserName() const { return fUserName; }
00082 const string& GetProcessName() const { return fProcessName; }
00083 const string& GetHostName() const { return fHostName; }
00084 const string& GetServerName() const { return fServerName; }
00085 const string& GetReason() const { return fReason; }
00086 TimeStamp GetUpdateTime() const { return fUpdateTime; }
00087
00088 Bool_t HasReason() const { return fReason.size() > 0; }
00089
00090
00091 string GetDatabaseLayout();
00092
00093
00094 void SetReason(const string& reason);
00095 void SetSiteMask(Int_t siteMask) { fLogSiteMask = siteMask; }
00096 void SetSimMask(Int_t simMask) { fLogSimMask = simMask; }
00097 void SetTask(Dbi::Task task) { fLogTask = task; }
00098 void SetSubSite(Dbi::SubSite subsite) { fLogSubSite = subsite; }
00099 void SetUpdateTime(const TimeStamp& updateTime) {
00100 fUpdateTime = updateTime; }
00101 void Recreate (const string& tableName = "",
00102 const string& reason = "",
00103 Int_t siteMask = Site::FullMask(),
00104 Int_t simMask = SimFlag::FullMask(),
00105 Dbi::SubSite subsite = 0,
00106 Dbi::Task task = 0,
00107 Int_t logSeqNoMin = 0,
00108 Int_t logSeqNoMax = 0,
00109 Int_t logNumSeqNo = 0);
00110
00111
00112 virtual void Fill(DbiResultSet& rs,
00113 const DbiValidityRec* vrec);
00114 virtual void Store(DbiOutRowStream& ors,
00115 const DbiValidityRec* vrec) const;
00116 Bool_t Write(UInt_t dbNo,Int_t logSeqNo=0);
00117
00118 private:
00119
00120 DbiLogEntry(const DbiLogEntry& from);
00121
00122 void SetServerName();
00123
00124
00125
00127 UInt_t fDbNo;
00128
00130 Int_t fSeqNo;
00131
00133 string fLogTableName;
00134
00136 Int_t fLogSiteMask;
00137
00139 Int_t fLogSimMask;
00140
00142 Dbi::SubSite fLogSubSite;
00143
00145 Dbi::Task fLogTask;
00146
00148 Int_t fLogSeqNoMin;
00149
00151 Int_t fLogSeqNoMax;
00152
00154 Int_t fLogNumSeqNo;
00155
00157 TimeStamp fUpdateTime;
00158
00160 string fUserName;
00161
00163 string fProcessName;
00164
00166 string fHostName;
00167
00169 string fServerName;
00170
00172 string fReason;
00173
00174
00175
00176
00177
00178
00179
00180 };
00181
00182
00183 #endif // DBILOGENTRY_H