4 //______________________________________________________________________________________________
6 // Connect to MySQL Server of the DAQ logbook
8 // check connection: if already connected return
9 if(fServer && fServer->IsConnected()) return kTRUE;
11 fServer = TSQLServer::Connect("mysql://pcald30.cern.ch","offline","alice");
13 if (!fServer || !fServer->IsConnected()) {
14 printf("Can't establish connection to DAQ log book DB!\n");
15 if(fServer) delete fServer;
20 TSQLResult* aResult=0;
21 aResult = fServer->GetTables("REFSYSLOG");
26 //______________________________________________________________________________________________
27 Bool_t QueryShuttleLogbook(AliShuttleLogbookEntry& entry, Int_t runNumber=-1)
29 // Query DAQ's Shuttle logbook and fills detector status array
31 if(runNumber<=0 && entry.GetRun()<=0) {
32 printf("Use a valid Run number!\n");
35 if(!Connect()) return kFALSE;
36 if(runNumber<=0) runNumber= entry.GetRun();
37 entry.SetRun(runNumber);
39 // check connection, in case connect
40 if(!Connect()) return kFALSE;
43 sqlQuery = Form("select * from logbook_shuttle where run = %d", runNumber);
45 TSQLResult* aResult = fServer->Query(sqlQuery);
47 printf("Can't execute query <%s>!\n", sqlQuery.Data());
51 // TODO Check field count!
52 if (aResult->GetFieldCount() != 24) {
53 printf("Invalid SQL result field number!\n");
59 while ((aRow = aResult->Next())) {
60 TString runString(aRow->GetField(0), aRow->GetFieldLength(0));
61 Int_t run = runString.Atoi();
64 for(UInt_t ii = 0; ii < 24; ii++){
65 entry.SetDetectorStatus(aResult->GetFieldName(ii), aRow->GetField(ii));
71 delete aResult; aResult=0;
73 // Query run parameters from logbook!
75 sqlQuery = Form("select * from logbook where run=%d", runNumber);
77 aResult = fServer->Query(sqlQuery);
79 printf("Can't execute query <%s>!", sqlQuery.Data());
83 if(aResult->GetRowCount() == 0) {
84 printf("QueryRunParameters - No entry in DAQ Logbook for run %d!", runNumber);
89 if(aResult->GetRowCount() > 1) {
90 printf("More than one entry in DAQ Logbook for run %d!", runNumber);
95 while ((aRow = aResult->Next())) {
97 for(UInt_t ii = 0; ii < aResult->GetFieldCount(); ii++)
98 entry.SetRunParameter(aResult->GetFieldName(ii), aRow->GetField(ii));
100 UInt_t startTime, endTime;
101 TString startTimeString = entry.GetRunParameter("time_start");
102 UInt_t startTime = startTimeString.Atoi();
103 TString endTimeString = entry.GetRunParameter("time_end");
104 UInt_t endTime = endTimeString.Atoi();
106 if (!startTime || !endTime || startTime > endTime) {
107 printf("QueryRunParameters - Invalid parameters for Run %d: startTime = %d, endTime = %d",
108 runNumber, startTime, endTime);
114 entry.SetStartTime(startTime);
115 entry.SetEndTime(endTime);
125 //______________________________________________________________________________________________
126 Bool_t UpdateShuttleLogbook(AliShuttleLogbookEntry& entry, Int_t runNumber=-1)
128 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
131 if(runNumber<=0 && entry.GetRun()<=0) {
132 printf("Use a valid Run number!\n");
135 if(!Connect()) return kFALSE;
136 if(runNumber<=0) runNumber= entry.GetRun();
137 entry.SetRun(runNumber);
139 TString sqlQuery("update logbook_shuttle set ");
141 for(UInt_t i=0; i < AliShuttleInterface::NDetectors(); i++){
142 sqlQuery += Form("%s=\"%s\"", AliShuttleInterface::GetDetName(i), entry.GetDetectorStatusName(entry.GetDetectorStatus(i)));
143 if(i < AliShuttleInterface::NDetectors()-1) sqlQuery += ", ";
146 sqlQuery += Form(" where run=%d;",entry.GetRun());
148 printf("sqlQuery: %s\n", sqlQuery.Data());
151 aResult = fServer->Query(sqlQuery);
153 printf("Can't execute query <%s>!\n", sqlQuery.Data());
162 //______________________________________________________________________________________________
163 Bool_t UpdateShuttleLogbook(Int_t runNumber, const char* detCode, AliShuttleLogbookEntry::Status status)
165 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
168 if(AliShuttleInterface::GetDetPos(detCode) < 0) return kFALSE;
169 if(!Connect()) return kFALSE;
171 TString sqlQuery("update logbook_shuttle set ");
174 sqlQuery += Form("%s=\"%s\" ", detCode, AliShuttleLogbookEntry::GetDetectorStatusName(status));
176 sqlQuery += Form("where run=%d;",runNumber);
178 printf("sqlQuery: %s\n", sqlQuery.Data());
181 aResult = fServer->Query(sqlQuery);
183 printf("Can't execute query <%s>!\n", sqlQuery.Data());
192 //______________________________________________________________________________________________
193 Bool_t UpdateShuttleLogbook(Int_t runNumber, const char* detCode, const char* status)
195 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
198 if(AliShuttleInterface::GetDetPos(detCode) < 0) return kFALSE;
199 if(!Connect()) return kFALSE;
201 TString sqlQuery("update logbook_shuttle set ");
204 sqlQuery += Form("%s=\"%s\" ", detCode, status);
206 sqlQuery += Form("where run=%d;",runNumber);
208 printf("sqlQuery: %s\n", sqlQuery.Data());
211 aResult = fServer->Query(sqlQuery);
213 printf("Can't execute query <%s>!\n", sqlQuery.Data());
222 //______________________________________________________________________________________________
223 Bool_t InsertNewRun(AliShuttleLogbookEntry& entry, Int_t runNumber=-1)
225 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
227 if(runNumber<=0 && entry.GetRun()<=0) {
228 printf("Use a valid Run number!\n");
231 if(!Connect()) return kFALSE;
232 if(runNumber<=0) runNumber= entry.GetRun();
233 entry.SetRun(runNumber);
235 TString sqlQuery = Form("insert into logbook_shuttle (run) values (%d);", runNumber);
237 printf("sqlQuery: %s\n", sqlQuery.Data());
240 aResult = fServer->Query(sqlQuery);
242 printf("Can't execute query <%s>!\n", sqlQuery.Data());
248 UpdateShuttleLogbook(entry);
253 //______________________________________________________________________________________________
254 Bool_t DeleteEntries(Int_t runNumber=-1)
256 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
258 if(!Connect()) return kFALSE;
261 if(runNumber>0) runStr=Form("where run=%d",runNumber);
262 TString sqlQuery = Form("delete from logbook_shuttle %s;", runStr.Data());
264 printf("sqlQuery: %s\n", sqlQuery.Data());
267 aResult = fServer->Query(sqlQuery);
269 printf("Can't execute query <%s>!\n", sqlQuery.Data());
278 //______________________________________________________________________________________________
279 void TestShuttleLogbook(){
281 gSystem->Load("libSHUTTLE.so");
283 AliShuttleLogbookEntry::Status y[17]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
284 AliShuttleLogbookEntry lb(21242,0,0,y);
285 lb.SetDetectorStatus("HMP","Unprocessed"); // RICH
286 lb.SetDetectorStatus("ZDC","Done"); // ZDC
287 lb.SetDetectorStatus("TPC","Unprocessed"); // TPC
291 InsertNewRun(lb,21244);