//*-- AUTHOR : Ilse Koenig //*-- Created : 26/11/2004 by I.Koenig ////////////////////////////////////////////////////////////////////////////// // FairOraInfo // // Class for additional information from database Oracle // (uses the Oracle C/C++ precompiler) // Functions in this class are not used by the analysis but can be called // by the user on the ROOT interpreter to get additional information from // Oracle tables. ////////////////////////////////////////////////////////////////////////////// using namespace std; #include "FairOraInfo.h" #include "FairOraConn.h" #include "FairOraRunInfo.h" #include #include #define SQLCA_STORAGE_CLASS extern #define ORACA_STORAGE_CLASS extern // Oracle communication area #include // Include the SQL Communications Area #include ClassImp(FairOraInfo) #define NMAX_INFO 2000 void FairOraInfo::showSqlError(char* f) { // shows SQL error messages Error(f,"\n%s",sqlca.sqlerrm.sqlerrmc); } void FairOraInfo::showRunStart(Int_t run) { // prints the start date and time of given run EXEC SQL BEGIN DECLARE SECTION; int id; char runDate[21]; short runDate_Ind=-1; EXEC SQL END DECLARE SECTION; id=run; EXEC SQL WHENEVER SQLERROR DO showSqlError("showRunStart(Int_t)"); EXEC SQL WHENEVER NOT FOUND GOTO notfound; EXEC SQL SELECT TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS') INTO :runDate INDICATOR :runDate_Ind FROM hanal.simul_ref_run WHERE run_id = :id; if (runDate_Ind>=0) cout<<"Run "<setRunId(refruns.rid[i]); refruns.ts[i][20]='\0'; p->setStartTime((char*)(refruns.ts[i])); if (refruns_Ind.te_Ind[i]!=-1) { refruns.te[i][20]='\0'; p->setEndTime((char*)(refruns.te[i])); } runsList->Add(p); nTot++; } } while (nLast==NMAX_INFO); EXEC SQL CLOSE refruns_cursor; cout<<"*** Total number of runs: "<showSqlError("getListOfRuns"); if (runsList) { runsList->Delete(); delete runsList; runsList=0; } return 0; } Bool_t FairOraInfo::getRefRunStart(const char* startAt,TString& pTime) { // gets the run start for a simulation reference run TString s(startAt); EXEC SQL BEGIN DECLARE SECTION; char* pfile; int pid; char ts[21]; EXEC SQL END DECLARE SECTION; EXEC SQL WHENEVER SQLERROR GOTO errorfound; EXEC SQL WHENEVER NOT FOUND GOTO notfound; pfile=0; pid=-1; if (s.Contains("-")) { pTime=startAt; } else { char c=startAt[0]; if (c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9') { pid=atoi(startAt); EXEC SQL SELECT TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS') INTO :ts FROM hanal.simul_ref_run WHERE ref_run_id = :pid; } else { pfile=(char*)startAt; EXEC SQL SELECT TO_CHAR(run_start,'DD-MON-YYYY HH24:MI:SS') INTO :ts FROM hanal.simul_ref_run WHERE ref_run_name = :pfile; } ts[20]='\0'; pTime=ts; } return kTRUE; errorfound: pConn->showSqlError("getRefRunStart"); return kFALSE; notfound: Error("getRefRunStart","Simulation reference run not found for %s",startAt); return kFALSE; }