File indexing completed on 2024-04-06 12:22:54
0001 #ifndef LMFLMRSUBIOV_H
0002 #define LMFLMRSUBIOV_H
0003
0004
0005
0006
0007
0008 #include <map>
0009
0010 #include "OnlineDB/EcalCondDB/interface/LMFUnique.h"
0011 #include "OnlineDB/EcalCondDB/interface/LMFIOV.h"
0012
0013 class LMFLmrSubIOV : public LMFUnique {
0014 public:
0015 friend class EcalCondDBInterface;
0016
0017 LMFLmrSubIOV();
0018 LMFLmrSubIOV(EcalDBConnection *c);
0019 LMFLmrSubIOV(oracle::occi::Environment *env, oracle::occi::Connection *conn);
0020 ~LMFLmrSubIOV() override;
0021
0022 LMFLmrSubIOV &setLMFIOV(const LMFIOV &iov);
0023 LMFLmrSubIOV &setLMFIOV(int i);
0024 LMFLmrSubIOV &setTimes(const Tm &t1, const Tm &t2, const Tm &t3);
0025 LMFLmrSubIOV &setTimes(const std::vector<Tm> &t);
0026 LMFLmrSubIOV &setTimes(Tm *t);
0027
0028 int getLMFIOVID() const { return m_lmfIOV; };
0029 LMFIOV getLMFIOV() const {
0030 LMFIOV iov(m_env, m_conn);
0031 iov.setByID(m_lmfIOV);
0032 return iov;
0033 };
0034 inline void getTimes(Tm *t1, Tm *t2, Tm *t3) const {
0035 *t1 = m_t[0];
0036 *t2 = m_t[1];
0037 *t3 = m_t[2];
0038 }
0039 std::vector<Tm> getTimes() const {
0040 std::vector<Tm> v;
0041 v.push_back(m_t[0]);
0042 v.push_back(m_t[1]);
0043 v.push_back(m_t[2]);
0044 return v;
0045 }
0046 inline void getTimes(Tm *t) const {
0047 t[0] = m_t[0];
0048 t[1] = m_t[1];
0049 t[2] = m_t[2];
0050 }
0051 inline Tm getTime(int i) {
0052 Tm t;
0053 if ((i > 0) && (i < 4)) {
0054 t = m_t[i - 1];
0055 }
0056 return t;
0057 }
0058 inline Tm getT1() { return m_t[0]; }
0059 inline Tm getT2() { return m_t[1]; }
0060 inline Tm getT3() { return m_t[2]; }
0061
0062 std::list<int> getIOVIDsLaterThan(const Tm &t) noexcept(false);
0063 std::list<int> getIOVIDsLaterThan(const Tm &tmin, const Tm &tmax) noexcept(false);
0064 std::list<int> getIOVIDsLaterThan(const Tm &t, int howMany) noexcept(false);
0065 std::list<int> getIOVIDsLaterThan(const Tm &t, const Tm &tmax, int howMany) noexcept(false);
0066
0067
0068 inline bool operator==(const LMFLmrSubIOV &m) const {
0069 return ((m_lmfIOV == m.m_lmfIOV) && (m_t[0] == m.m_t[0]) && (m_t[1] == m.m_t[1]) && (m_t[2] == m.m_t[2]));
0070 }
0071
0072 inline bool operator!=(const LMFLmrSubIOV &m) const { return !(*this == m); }
0073
0074 std::list<LMFLmrSubIOV> fetchByLMFIOV(const LMFIOV &iov);
0075
0076 private:
0077 int m_lmfIOV;
0078 Tm m_t[3];
0079
0080 std::string fetchIdSql(Statement *stmt) override;
0081 std::string setByIDSql(Statement *stmt, int id) override;
0082 std::string writeDBSql(Statement *stmt) override;
0083 void getParameters(ResultSet *rset) override;
0084 void init();
0085 };
0086
0087 #endif