File indexing completed on 2024-04-06 12:22:54
0001 #ifndef LMFSEQDAT_H
0002 #define LMFSEQDAT_H
0003
0004
0005
0006
0007
0008 #include <map>
0009
0010 #include "OnlineDB/EcalCondDB/interface/LMFUnique.h"
0011 #include "OnlineDB/EcalCondDB/interface/LMFColor.h"
0012 #include "OnlineDB/EcalCondDB/interface/RunIOV.h"
0013
0014 class LMFSeqDat : public LMFUnique {
0015 public:
0016 friend class EcalCondDBInterface;
0017
0018 LMFSeqDat();
0019 LMFSeqDat(oracle::occi::Environment *env, oracle::occi::Connection *conn);
0020 LMFSeqDat(EcalDBConnection *c);
0021 ~LMFSeqDat() override;
0022
0023
0024 LMFSeqDat &setRunIOV(const RunIOV &iov);
0025 LMFSeqDat &setSequenceNumber(int n) {
0026 setInt("seq_num", n);
0027 return *this;
0028 }
0029 LMFSeqDat &setSequenceStart(const Tm &start) {
0030 setString("seq_start", start.str());
0031 return *this;
0032 }
0033 LMFSeqDat &setSequenceStop(const Tm &end) {
0034 setString("seq_stop", end.str());
0035 return *this;
0036 }
0037 LMFSeqDat &setVersions(int vmin, int vmax) {
0038 setVmin(vmin);
0039 setVmax(vmax);
0040 return *this;
0041 }
0042
0043 RunIOV getRunIOV() const;
0044 int getSequenceNumber() const { return getInt("seq_num"); }
0045 Tm getSequenceStart() const {
0046 Tm t;
0047 t.setToString(getString("seq_start"));
0048 return t;
0049 }
0050 Tm getSequenceStop() const;
0051 int getVmin() const { return getInt("vmin"); }
0052 int getVmax() const { return getInt("vmax"); }
0053
0054 bool isValid() const override;
0055
0056 bool operator==(const LMFSeqDat &m) const {
0057 return (getSequenceNumber() == m.getSequenceNumber() && getRunIOV() == m.getRunIOV() &&
0058 getSequenceStart() == m.getSequenceStart() && getSequenceStop() == m.getSequenceStop() &&
0059 getVmin() == m.getVmin() && getVmax() == m.getVmax());
0060 }
0061
0062 bool operator!=(const LMFSeqDat &m) const { return !(*this == m); }
0063 std::map<int, LMFSeqDat> fetchByRunIOV(RunIOV &iov);
0064 std::map<int, LMFSeqDat> fetchByRunIOV(RunIOV &iov, const LMFColor &col);
0065 LMFSeqDat fetchByRunIOV(RunIOV &iov, int seq_num) { return fetchByRunIOV(iov)[seq_num]; }
0066 std::map<int, LMFSeqDat> fetchByRunNumber(int runno);
0067 LMFSeqDat fetchByRunNumber(int runno, int seq_num) { return fetchByRunNumber(runno)[seq_num]; }
0068 LMFSeqDat fetchByRunNumber(int runno, const Tm &taken_at);
0069 LMFSeqDat fetchByRunNumber(int runno, std::string taken_at);
0070 LMFSeqDat fetchLast();
0071 RunIOV fetchLastRun();
0072
0073 private:
0074 RunIOV m_runIOV;
0075
0076 void setVmin(int v) { setInt("vmin", v); }
0077 void setVmax(int v) { setInt("vmax", v); }
0078 std::string fetchIdSql(Statement *stmt) override;
0079 std::string setByIDSql(Statement *stmt, int id) override;
0080 std::string writeDBSql(Statement *stmt) override;
0081 void getParameters(ResultSet *rset) override;
0082
0083 void fetchParentIDs() noexcept(false) override;
0084 std::map<int, LMFSeqDat> fetchByRunIOV(const std::vector<std::string> &par,
0085 std::string sql,
0086 std::string method) noexcept(false);
0087 std::map<int, LMFSeqDat> fetchByRunIOV(int par, std::string sql, std::string method) noexcept(false);
0088 std::map<int, LMFSeqDat> fetchByRunIOV(std::string sql, std::string method) noexcept(false);
0089 };
0090
0091 #endif