CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/OnlineDB/EcalCondDB/src/LMFDefFabric.cc

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 }