Go to the documentation of this file.00001 #include "OnlineDB/EcalCondDB/interface/LMFDefFabric.h"
00002 #include "OnlineDB/EcalCondDB/interface/LMFColor.h"
00003 #include "OnlineDB/EcalCondDB/interface/LMFTrigType.h"
00004 #include "OnlineDB/EcalCondDB/interface/LMFRunTag.h"
00005 #include "OnlineDB/EcalCondDB/interface/LMFPrimVers.h"
00006 #include "OnlineDB/EcalCondDB/interface/LMFSeqVers.h"
00007
00008 #include <iostream>
00009
00010 LMFDefFabric::LMFDefFabric() {
00011 noDebug();
00012 }
00013
00014 LMFDefFabric::LMFDefFabric(oracle::occi::Environment* env,
00015 oracle::occi::Connection* conn) {
00016 noDebug();
00017 setConnection(env, conn);
00018 initialize();
00019 }
00020
00021 LMFDefFabric::LMFDefFabric(EcalDBConnection *c) {
00022 noDebug();
00023 setConnection(c->getEnv(), c->getConn());
00024 initialize();
00025 }
00026
00027 LMFDefFabric::~LMFDefFabric() {
00028 }
00029
00030 void LMFDefFabric::debug() {
00031 _debug = true;
00032 }
00033
00034 void LMFDefFabric::noDebug() {
00035 _debug = false;
00036 }
00037
00038 std::list<LMFColor> LMFDefFabric::getColors() const {
00039 return _lmfColors;
00040 }
00041
00042 std::list<LMFTrigType> LMFDefFabric::getTriggerTypes() const {
00043 return _lmfTrigTypes;
00044 }
00045
00046 std::list<LMFRunTag> LMFDefFabric::getRunTags() const {
00047 return _lmfRunTags;
00048 }
00049
00050 LMFColor LMFDefFabric::getColor(std::string name) const {
00051 std::list<LMFColor>::const_iterator i = _lmfColors.begin();
00052 std::list<LMFColor>::const_iterator e = _lmfColors.end();
00053 LMFColor ret;
00054 bool loop = true;
00055 while ((loop) && (i != e)) {
00056 if (i->getShortName() == name) {
00057 ret = *i;
00058 loop = false;
00059 }
00060 i++;
00061 }
00062 return ret;
00063 }
00064
00065 LMFColor LMFDefFabric::getColorFromID(int id) const {
00066 std::list<LMFColor>::const_iterator i = _lmfColors.begin();
00067 std::list<LMFColor>::const_iterator e = _lmfColors.end();
00068 LMFColor ret;
00069 bool loop = true;
00070 while ((loop) && (i != e)) {
00071 if (i->getID() == id) {
00072 ret = *i;
00073 loop = false;
00074 }
00075 i++;
00076 }
00077 return ret;
00078 }
00079
00080 LMFColor LMFDefFabric::getColor(int index) const {
00081 std::list<LMFColor>::const_iterator i = _lmfColors.begin();
00082 std::list<LMFColor>::const_iterator e = _lmfColors.end();
00083 LMFColor ret;
00084 bool loop = true;
00085 while ((loop) && (i != e)) {
00086 if (i->getColorIndex() == index) {
00087 ret = *i;
00088 loop = false;
00089 }
00090 i++;
00091 }
00092 return ret;
00093 }
00094
00095 int LMFDefFabric::getColorID(std::string sname) const {
00096 return getColor(sname).getID();
00097 }
00098
00099 int LMFDefFabric::getColorID(int index) const {
00100 return getColor(index).getID();
00101 }
00102
00103 int LMFDefFabric::getTrigTypeID(std::string sname) const {
00104 return getTrigType(sname).getID();
00105 }
00106
00107 LMFTrigType LMFDefFabric::getTrigType(std::string sname) const {
00108 std::list<LMFTrigType>::const_iterator i = _lmfTrigTypes.begin();
00109 std::list<LMFTrigType>::const_iterator e = _lmfTrigTypes.end();
00110 LMFTrigType tt;
00111 bool loop = true;
00112 while ((loop) && (i != e)) {
00113 if (i->getShortName() == sname) {
00114 tt = *i;
00115 loop = false;
00116 }
00117 i++;
00118 }
00119 return tt;
00120 }
00121
00122 LMFTrigType LMFDefFabric::getTrigTypeFromID(int id) const {
00123 std::list<LMFTrigType>::const_iterator i = _lmfTrigTypes.begin();
00124 std::list<LMFTrigType>::const_iterator e = _lmfTrigTypes.end();
00125 LMFTrigType tt;
00126 bool loop = true;
00127 while ((loop) && (i != e)) {
00128 if (i->getID() == id) {
00129 tt = *i;
00130 loop = false;
00131 }
00132 i++;
00133 }
00134 return tt;
00135 }
00136
00137 LMFRunTag LMFDefFabric::getRunTag(std::string tag, int version) const {
00138 std::list<LMFRunTag>::const_iterator i = _lmfRunTags.begin();
00139 std::list<LMFRunTag>::const_iterator e = _lmfRunTags.end();
00140 LMFRunTag rt;
00141 bool loop = true;
00142 while ((loop) && (i != e)) {
00143 if ((i->getGeneralTag()) == tag && (i->getVersion() == version)) {
00144 rt = *i;
00145 }
00146 i++;
00147 }
00148 return rt;
00149 }
00150
00151 LMFRunTag LMFDefFabric::getRunTagFromID(int id) const {
00152 std::list<LMFRunTag>::const_iterator i = _lmfRunTags.begin();
00153 std::list<LMFRunTag>::const_iterator e = _lmfRunTags.end();
00154 LMFRunTag rt;
00155 bool loop = true;
00156 while ((loop) && (i != e)) {
00157 if (i->getID() == id) {
00158 rt = *i;
00159 }
00160 i++;
00161 }
00162 return rt;
00163 }
00164
00165 int LMFDefFabric::getRunTagID(std::string tag, int version) const {
00166 return getRunTag(tag, version).getID();
00167 }
00168
00169 void LMFDefFabric::initialize()
00170 throw (std::runtime_error) {
00171 _lmfColors.clear();
00172 _lmfTrigTypes.clear();
00173 _lmfRunTags.clear();
00174 _lmfPrimVersions.clear();
00175 _lmfSeqVersions.clear();
00176 _lmfCorrVersions.clear();
00177 if ((m_env != NULL) && (m_conn != NULL)) {
00178 boost::ptr_list<LMFUnique> listOfObjects;
00179 boost::ptr_list<LMFUnique>::const_iterator i;
00180 boost::ptr_list<LMFUnique>::const_iterator e;
00181 listOfObjects = LMFColor(m_env, m_conn).fetchAll();
00182 i = listOfObjects.begin();
00183 e = listOfObjects.end();
00184 while (i != e) {
00185 LMFColor *c = (LMFColor*)&(*i);
00186 _lmfColors.push_back(*c);
00187 i++;
00188 }
00189 listOfObjects.clear();
00190 listOfObjects = LMFTrigType(m_env, m_conn).fetchAll();
00191 i = listOfObjects.begin();
00192 e = listOfObjects.end();
00193 while (i != e) {
00194 LMFTrigType *c = (LMFTrigType*)&(*i);
00195 _lmfTrigTypes.push_back(*c);
00196 i++;
00197 }
00198 listOfObjects.clear();
00199 listOfObjects = LMFRunTag(m_env, m_conn).fetchAll();
00200 i = listOfObjects.begin();
00201 e = listOfObjects.end();
00202 while (i != e) {
00203 LMFRunTag *c = (LMFRunTag*)&(*i);
00204 _lmfRunTags.push_back(*c);
00205 i++;
00206 }
00207 listOfObjects.clear();
00208 listOfObjects = LMFPrimVers(m_env, m_conn).fetchAll();
00209 i = listOfObjects.begin();
00210 e = listOfObjects.end();
00211 while (i != e) {
00212 LMFPrimVers *c = (LMFPrimVers*)&(*i);
00213 _lmfPrimVersions.push_back(*c);
00214 i++;
00215 }
00216 listOfObjects.clear();
00217 listOfObjects = LMFCorrVers(m_env, m_conn).fetchAll();
00218 i = listOfObjects.begin();
00219 e = listOfObjects.end();
00220 while (i != e) {
00221 LMFCorrVers *c = (LMFCorrVers*)&(*i);
00222 _lmfCorrVersions.push_back(*c);
00223 i++;
00224 }
00225 listOfObjects.clear();
00226 listOfObjects = LMFSeqVers(m_env, m_conn).fetchAll();
00227 i = listOfObjects.begin();
00228 e = listOfObjects.end();
00229 while (i != e) {
00230 LMFSeqVers *c = (LMFSeqVers*)&(*i);
00231 _lmfSeqVersions.push_back(*c);
00232 i++;
00233 }
00234 listOfObjects.clear();
00235 _lmfColors.sort();
00236 _lmfTrigTypes.sort();
00237 _lmfRunTags.sort();
00238 _lmfPrimVersions.sort();
00239 _lmfSeqVersions.sort();
00240 _lmfCorrVersions.sort();
00241 } else {
00242 throw(std::runtime_error("LMFDefFabric: cannot initialize since connection not"
00243 "set"));
00244 }
00245 }
00246
00247 void LMFDefFabric::dump() {
00248 std::cout << "========= Fabric dump @ address " << this << " ============"
00249 << std::endl;
00250 std::list<LMFColor>::const_iterator i1 = _lmfColors.begin();
00251 std::list<LMFTrigType>::const_iterator i2 = _lmfTrigTypes.begin();
00252 std::list<LMFRunTag>::const_iterator i3 = _lmfRunTags.begin();
00253 std::list<LMFPrimVers>::const_iterator i4 = _lmfPrimVersions.begin();
00254 std::list<LMFSeqVers>::const_iterator i5 = _lmfSeqVersions.begin();
00255 std::list<LMFCorrVers>::const_iterator i6 = _lmfCorrVersions.begin();
00256 std::list<LMFColor>::const_iterator e1 = _lmfColors.end();
00257 std::list<LMFTrigType>::const_iterator e2 = _lmfTrigTypes.end();
00258 std::list<LMFRunTag>::const_iterator e3 = _lmfRunTags.end();
00259 std::list<LMFPrimVers>::const_iterator e4 = _lmfPrimVersions.end();
00260 std::list<LMFSeqVers>::const_iterator e5 = _lmfSeqVersions.end();
00261 std::list<LMFCorrVers>::const_iterator e6 = _lmfCorrVersions.end();
00262 std::cout << "=== Colors" << std::endl;
00263 while (i1 != e1) {
00264 i1++->dump();
00265 }
00266 std::cout << "=== Trigger Types" << std::endl;
00267 while (i2 != e2) {
00268 i2++->dump();
00269 }
00270 std::cout << "=== Run Tags" << std::endl;
00271 while (i3 != e3) {
00272 i3++->dump();
00273 }
00274 std::cout << "=== Prim. Vers." << std::endl;
00275 while (i4 != e4) {
00276 i4++->dump();
00277 }
00278 std::cout << "=== Seq. Vers." << std::endl;
00279 while (i5 != e5) {
00280 i5++->dump();
00281 }
00282 std::cout << "=== Corr. Vers." << std::endl;
00283 while (i6 != e6) {
00284 i6++->dump();
00285 }
00286 }