#include <OnlineDB/CSCCondDB/interface/CSCOnlineDB.h>
Public Member Functions | |
void | cdbon_last_record (std::string obj_name, int *record) |
void | cdbon_read_rec (std::string obj_name, int record, CSCobject *obj) |
void | cdbon_write (CSCobject *obj, std::string obj_name, int record, int global_run, std::string time) |
condbon () throw (oracle::occi::SQLException) | |
Constructor for condbon. | |
~condbon () throw (oracle::occi::SQLException) | |
Destructor for condbon. | |
Private Attributes | |
oracle::occi::Connection * | con |
oracle::occi::Environment * | env |
oracle::occi::Statement * | stmt |
oracle::occi::Statement * | stmt1 |
Definition at line 17 of file CSCOnlineDB.h.
condbon::condbon | ( | ) | throw (oracle::occi::SQLException) |
Constructor for condbon.
Definition at line 6 of file CSCOnlineDB.cc.
References con, GenMuonPlsPt100GeV_cfg::cout, lat::endl(), and env.
00007 { 00008 std::string db_user; 00009 std::string db_pass; 00010 env = oracle::occi::Environment::createEnvironment (oracle::occi::Environment::OBJECT); 00011 char* c_user = ::getenv("CONDBON_AUTH_USER"); 00012 char* c_pass = ::getenv("CONDBON_AUTH_PASSWORD"); 00013 db_user=std::string(c_user); 00014 db_pass=std::string(c_pass); 00015 con = env->createConnection (db_user,db_pass,"omds"); 00016 std::cout << "Connection to Online DB is done." << std::endl; 00017 }// end of constructor condbon ()
condbon::~condbon | ( | ) | throw (oracle::occi::SQLException) |
Definition at line 230 of file CSCOnlineDB.cc.
Referenced by CSCGainAnalyzer::~CSCGainAnalyzer(), CSCNoiseMatrixAnalyzer::~CSCNoiseMatrixAnalyzer(), and CSCOldGainAnalyzer::~CSCOldGainAnalyzer().
00231 { 00232 std::string sqlStmt; 00233 sqlStmt = "SELECT max(record_id) from "+obj_name; 00234 stmt=con->createStatement (); 00235 stmt->setSQL(sqlStmt); 00236 oracle::occi::ResultSet *rset; 00237 rset = stmt->executeQuery (); 00238 //try{ 00239 while (rset->next ()) 00240 {*record = rset->getInt (1);} 00241 // }catch(oracle::occi::SQLException ex) 00242 //{ 00243 // std::cout<<"Exception thrown: "<<std::endl; 00244 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00245 // std::cout<<ex.getMessage() << std::endl; 00246 //} 00247 con->terminateStatement (stmt); 00248 } // end of cdbon_last_record
Definition at line 250 of file CSCOnlineDB.cc.
References con, d, i, len, CSCobject::obj, p, ss, stmt, and stmt1.
00252 { 00253 int i,len; 00254 int map_id=0, map_index=0, layer_id=0; 00255 std::string tab, tab_map, tab_data; 00256 tab=obj_name; 00257 tab_map=obj_name+"_map"; 00258 tab_data=obj_name+"_data"; 00259 int num_var; 00260 int vec_index; 00261 00262 std::string sqlStmt,sqlStmt1; 00263 stmt=con->createStatement (); 00264 stmt1=con->createStatement (); 00265 oracle::occi::ResultSet *rset, *rset1; 00266 std::ostringstream ss; 00267 00268 char d; 00269 const char* p=tab_data.c_str(); 00270 len=tab_data.length(); 00271 for(i=0;i<len;++i){ 00272 d=toupper(*(p+i)); 00273 ss<<d; 00274 } 00275 sqlStmt = "SELECT count(column_name) from user_tab_columns where table_name='"+ss.str()+"'"; 00276 ss.str(""); // clear 00277 stmt->setSQL(sqlStmt); 00278 rset = stmt->executeQuery (); 00279 // try{ 00280 while (rset->next ()) 00281 {num_var= rset->getInt(1) - 2;} 00282 // }catch(oracle::occi::SQLException ex) 00283 //{ 00284 // std::cout<<"Exception thrown: "<<std::endl; 00285 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00286 // std::cout<<ex.getMessage() << std::endl; 00287 //} 00288 stmt->closeResultSet (rset); 00289 00290 ss<<record; 00291 00292 sqlStmt = "SELECT map_id,map_index,layer_id from "+tab_map+" where record_id="+ss.str()+" order by map_index"; 00293 ss.str(""); // clear 00294 stmt->setSQL(sqlStmt); 00295 rset = stmt->executeQuery (); 00296 // try{ 00297 while (rset->next ()) 00298 {map_id = rset->getInt (1); 00299 map_index = rset->getInt (2); 00300 layer_id = rset->getInt (3); 00301 ss<<map_id; 00302 sqlStmt1 = "SELECT * from "+tab_data+" where map_id="+ss.str()+" order by vec_index"; 00303 ss.str(""); // clear 00304 stmt1->setSQL(sqlStmt1); 00305 rset1 = stmt1->executeQuery (); 00306 // try{ 00307 while (rset1->next ()) 00308 {vec_index = rset1->getInt (2); 00309 obj->obj[layer_id].resize(vec_index); 00310 for(i=0;i<num_var;++i){ 00311 obj->obj[layer_id][vec_index-1].push_back(rset1->getFloat(3+i)); 00312 } 00313 } 00314 // }catch(oracle::occi::SQLException ex) 00315 //{ 00316 // std::cout<<"Exception thrown: "<<std::endl; 00317 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00318 // std::cout<<ex.getMessage() << std::endl; 00319 //} 00320 } 00321 // }catch(oracle::occi::SQLException ex) 00322 //{ 00323 // std::cout<<"Exception thrown: "<<std::endl; 00324 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00325 // std::cout<<ex.getMessage() << std::endl; 00326 //} 00327 } // end of cdbon_read_rec
void condbon::cdbon_write | ( | CSCobject * | obj, | |
std::string | obj_name, | |||
int | record, | |||
int | global_run, | |||
std::string | time | |||
) |
Definition at line 27 of file CSCOnlineDB.cc.
References c, c1, c2, con, GenMuonPlsPt100GeV_cfg::cout, lat::endl(), env, cmsRelvalreport::exit, i, int, j, k, min, LaserDQM_cfi::mon, CSCobject::obj, ss, st, stmt, and stmt1.
Referenced by CSCGainAnalyzer::~CSCGainAnalyzer(), CSCNoiseMatrixAnalyzer::~CSCNoiseMatrixAnalyzer(), and CSCOldGainAnalyzer::~CSCOldGainAnalyzer().
00029 { 00030 int i,j,k; 00031 std::string tab, tab_map, tab_data; 00032 std::string sqlStmt, sqlStmt1; 00033 int rec_id, map_id, map_index; 00034 tm curtime; 00035 time_t now; 00036 00037 tab=obj_name; 00038 tab_map=obj_name+"_map"; 00039 tab_data=obj_name+"_data"; 00040 if(obj_name=="test"){ 00041 tab="gains"; 00042 tab_map="gains_map"; 00043 tab_data="gains_data"; 00044 } 00045 stmt = con->createStatement (); 00046 00047 oracle::occi::ResultSet *rset; 00048 00049 sqlStmt = "SELECT max(record_id) from "+tab; 00050 stmt->setSQL(sqlStmt); 00051 rset = stmt->executeQuery (); 00052 // try{ 00053 while (rset->next ()) 00054 {rec_id= rset->getInt (1);} 00055 // }catch(oracle::occi::SQLException ex) 00056 // { 00057 // std::cout<<"Exception thrown: "<<std::endl; 00058 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00059 // std::cout<<ex.getMessage() << std::endl; 00060 //} 00061 stmt->closeResultSet (rset); 00062 00063 if(record>rec_id){ 00064 sqlStmt = "INSERT INTO "+tab+" VALUES (:1, :2, :3, :4, :5, null)"; 00065 stmt->setSQL(sqlStmt); 00066 time(&now); 00067 curtime=*localtime(&now); 00068 try{ 00069 stmt->setInt (1, record); 00070 stmt->setInt (2, global_run); 00071 stmt->setInt (5, 0); 00072 /* For time as "05/17/2006 16:30:07" 00073 std::string st=data_time.substr(0,2); 00074 int mon=atoi(st.c_str()); 00075 st=data_time.substr(3,2); 00076 int mday=atoi(st.c_str()); 00077 st=data_time.substr(6,4); 00078 int year=atoi(st.c_str()); 00079 st=data_time.substr(11,2); 00080 int hour=atoi(st.c_str()); 00081 st=data_time.substr(14,2); 00082 int min=atoi(st.c_str()); 00083 st=data_time.substr(17,2); 00084 int sec=atoi(st.c_str()); 00085 */ 00086 /* For time of format "Mon May 29 10:28:58 2006" */ 00087 std::map <std::string, int> month; 00088 month["Jan"]=1; month["Feb"]=2; month["Mar"]=3; month["Apr"]=4; 00089 month["May"]=5; month["Jun"]=6; month["Jul"]=7; month["Aug"]=8; 00090 month["Sep"]=9; month["Oct"]=10; month["Nov"]=11; month["Dec"]=12; 00091 std::string st=data_time.substr(4,3); 00092 int mon=month[st]; 00093 st=data_time.substr(8,2); 00094 int mday=atoi(st.c_str()); 00095 st=data_time.substr(20,4); 00096 int year=atoi(st.c_str()); 00097 st=data_time.substr(11,2); 00098 int hour=atoi(st.c_str()); 00099 st=data_time.substr(14,2); 00100 int min=atoi(st.c_str()); 00101 st=data_time.substr(17,2); 00102 int sec=atoi(st.c_str()); 00103 oracle::occi::Date edate(env, year, mon, mday, hour, min, sec); 00104 stmt->setDate(3, edate); 00105 oracle::occi::Date edate_c(env, curtime.tm_year+1900, curtime.tm_mon+1, curtime.tm_mday, 00106 curtime.tm_hour, curtime.tm_min, curtime.tm_sec); 00107 stmt->setDate(4, edate_c); 00108 if(obj_name!="test") stmt->executeUpdate (); 00109 }catch(oracle::occi::SQLException ex) 00110 { 00111 std::cout<<"Exception thrown for insertBind"<<std::endl; 00112 std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00113 std::cout<<ex.getMessage() << std::endl; 00114 } 00115 } 00116 00117 sqlStmt = "SELECT max(map_id) from "+tab_map; 00118 stmt->setSQL(sqlStmt); 00119 rset = stmt->executeQuery (); 00120 // try{ 00121 while (rset->next ()) 00122 {map_id= rset->getInt (1);} 00123 // }catch(oracle::occi::SQLException ex) 00124 //{ 00125 // std::cout<<"Exception thrown: "<<std::endl; 00126 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00127 // std::cout<<ex.getMessage() << std::endl; 00128 //} 00129 stmt->closeResultSet (rset); 00130 00131 std::ostringstream ss; 00132 ss<<record; 00133 00134 sqlStmt = "SELECT max(map_index) from "+tab_map+" where record_id="+ss.str(); 00135 ss.str(""); // clear 00136 stmt->setSQL(sqlStmt); 00137 rset = stmt->executeQuery (); 00138 // try{ 00139 while (rset->next ()) 00140 {map_index= rset->getInt (1);} 00141 // }catch(oracle::occi::SQLException ex) 00142 //{ 00143 // std::cout<<"Exception thrown: "<<std::endl; 00144 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00145 // std::cout<<ex.getMessage() << std::endl; 00146 //} 00147 stmt->closeResultSet (rset); 00148 00149 sqlStmt = "INSERT INTO "+tab_map+" VALUES (:1, :2, :3, :4)"; 00150 stmt->setSQL(sqlStmt); 00151 00152 std::map<int,std::vector<std::vector<float> > >::const_iterator itm; 00153 itm=obj->obj.begin(); 00154 int sizeint=itm->second[0].size(); 00155 sqlStmt1 = "INSERT INTO "+tab_data+" VALUES (:1, :2"; 00156 for(i=1;i<sizeint+1;++i){ 00157 ss<<i+2; 00158 sqlStmt1=sqlStmt1+", :"+ss.str(); 00159 ss.str(""); // clear 00160 } 00161 sqlStmt1=sqlStmt1+")"; 00162 00163 sb4 si=sizeof(int); 00164 sb4 sf=sizeof(float); 00165 ub2 elensi[200]; 00166 ub2 elensf[200]; 00167 int c1[200],c2[200]; 00168 float c[100][200]; 00169 for(i=0;i<200;++i){ 00170 elensi[i]=si; 00171 elensf[i]=sf; 00172 } 00173 00174 stmt1 = con->createStatement (); 00175 stmt1->setSQL(sqlStmt1); 00176 00177 for(itm=obj->obj.begin();itm!=obj->obj.end(); ++itm){ 00178 int id_det=itm->first; 00179 int sizev=obj->obj[id_det].size(); 00180 00181 map_id=map_id+1; 00182 map_index=map_index+1; 00183 // try{ 00184 stmt->setInt (1, map_id); 00185 stmt->setInt (2, record); 00186 stmt->setInt (3, map_index); 00187 stmt->setInt (4, id_det); 00188 if(obj_name!="test") stmt->executeUpdate (); 00189 //}catch(oracle::occi::SQLException ex) 00190 //{ 00191 //std::cout<<"Exception thrown for insertBind"<<std::endl; 00192 //std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00193 //std::cout<<ex.getMessage() << std::endl; 00194 //} 00195 00196 k=0; 00197 for(i=0;i<sizev;++i){ 00198 int sizei=obj->obj[id_det][i].size(); 00199 if(sizei!=sizeint){ 00200 std::cout<<"Inconsistent object - dimention of internal vector is not " 00201 <<sizeint<<std::endl; 00202 exit(1); 00203 } 00204 c1[i]=map_id; 00205 k=k+1; 00206 c2[i]=k; 00207 for(j=0;j<sizei;++j){ 00208 c[j][i]=obj->obj[id_det][i][j]; 00209 } 00210 } 00211 // try{ 00212 stmt1->setDataBuffer(1, c1, oracle::occi::OCCIINT, si , &elensi[0]); 00213 stmt1->setDataBuffer(2, c2, oracle::occi::OCCIINT, si , &elensi[0]); 00214 for(j=0;j<sizeint;++j){ 00215 stmt1->setDataBuffer(j+3, c[j], oracle::occi::OCCIFLOAT, sf, &elensf[0]); 00216 } 00217 if(obj_name!="test") stmt1->executeArrayUpdate(sizev); 00218 // }catch(oracle::occi::SQLException ex) 00219 // { 00220 // std::cout<<"Exception thrown: "<<std::endl; 00221 // std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; 00222 // std::cout<<ex.getMessage() << std::endl; 00223 // } 00224 } 00225 con->commit(); 00226 con->terminateStatement (stmt); 00227 con->terminateStatement (stmt1); 00228 } //end of cdbon_write
oracle::occi::Connection* condbon::con [private] |
Definition at line 22 of file CSCOnlineDB.h.
Referenced by cdbon_last_record(), cdbon_read_rec(), cdbon_write(), condbon(), and ~condbon().
oracle::occi::Environment* condbon::env [private] |
Definition at line 21 of file CSCOnlineDB.h.
Referenced by cdbon_write(), condbon(), and ~condbon().
oracle::occi::Statement* condbon::stmt [private] |
Definition at line 23 of file CSCOnlineDB.h.
Referenced by cdbon_last_record(), cdbon_read_rec(), and cdbon_write().
oracle::occi::Statement * condbon::stmt1 [private] |