00001
00002
00003 #include "DatabaseInterface/DbiSqlContext.h"
00004 #include "LeakChecker/Lea.h"
00005 #include "MessageService/MsgService.h"
00006
00007 ClassImp(DbiSqlContext)
00008
00009
00010
00011
00012
00013 CVSID("$Id: DbiSqlContext.cxx,v 1.5 2006/08/08 10:51:32 west Exp $");
00014
00015
00016
00017
00018
00019
00020 DbiSqlContext::DbiSqlContext(const std::string& ctxt) :
00021 DbiString(ctxt),
00022 fIntervalType(kUndefined),
00023 fDetType(Detector::kUnknown),
00024 fSimType(SimFlag::kUnknown)
00025 {
00026
00027
00028
00029
00030
00031
00032 LEA_CTOR
00033
00034 MSG("Dbi", Msg::kVerbose) << "Creating DbiSqlContext" << endl;
00035
00036 }
00037
00038
00039 DbiSqlContext::DbiSqlContext(IntervalType interval,
00040 VldTimeStamp start,
00041 VldTimeStamp end,
00042 Detector::Detector_t det,
00043 SimFlag::SimFlag_t sim) :
00044 fIntervalType(interval),
00045 fTimeStart(start),
00046 fTimeEnd(end),
00047 fDetType(det),
00048 fSimType(sim)
00049 {
00050
00051
00052
00053
00054
00055
00056 LEA_CTOR
00057
00058 MSG("Dbi", Msg::kVerbose) << "Creating DbiSqlContext" << endl;
00059
00060 switch (interval) {
00061
00062 case kBefore:
00063 (*this) << "TIMEEND <= \'" << start.AsString("s") << '\'';
00064 break;
00065
00066 case kAfter:
00067 (*this) << "TIMESTART >= \'" << end.AsString("s") << '\'';
00068 break;
00069
00070 case kMisses:
00071 (*this) << "TIMESTART >= \'" << end.AsString("s") << '\''
00072 << " or TIMEEND <= \'" << start.AsString("s") << '\'';
00073 break;
00074
00075 case kThroughout:
00076 (*this) << "TIMESTART <= \'" << start.AsString("s") << '\''
00077 << " and TIMEEND >= \'" << end.AsString("s") << '\'';
00078 break;
00079
00080 case kWithin:
00081 (*this) << "TIMESTART >= \'" << start.AsString("s") << '\''
00082 << " and TIMEEND <= \'" << end.AsString("s") << '\'';
00083 break;
00084
00085 case kOverlaps:
00086 (*this) << "TIMESTART < \'" << end.AsString("s") << '\''
00087 << " and TIMEEND > \'" << start.AsString("s") << '\'';
00088 break;
00089
00090 case kStarts:
00091 (*this) << "TIMESTART >= \'" << start.AsString("s") << '\''
00092 << " and TIMESTART < \'" << end.AsString("s") << '\'';
00093 break;
00094
00095 case kEnds:
00096 (*this) << "TIMEEND > \'" << start.AsString("s") << '\''
00097 << " and TIMEEND <= \'" << end.AsString("s") << '\'';
00098 break;
00099
00100 default:
00101 (*this) << " 1 = 0 ";
00102 }
00103
00104 (*this) << " and DetectorMask & " << static_cast<unsigned int>(fDetType)
00105 << " and SimMask & " << static_cast<unsigned int>(fSimType);
00106 }
00107
00108
00109
00110
00111 DbiSqlContext::~DbiSqlContext() {
00112
00113
00114
00115
00116
00117
00118
00119 LEA_DTOR
00120
00121 MSG("Dbi", Msg::kVerbose) << "Destroying DbiSqlContext" << endl;
00122
00123 }
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156