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 // TString serverHost="mysql://pcald30.cern.ch";
12 TString serverHost="mysql://aldaqgw01-gpn.cern.ch:1434";
13 fServer = TSQLServer::Connect(serverHost.Data(),"shuttle","alice");
15 printf("Connecting to mysql server on %s !!!!!!\n", serverHost.Data());
17 if (!fServer || !fServer->IsConnected()) {
18 printf("Can't establish connection to DAQ log book DB!\n");
19 if(fServer) delete fServer;
24 TSQLResult* aResult=0;
25 aResult = fServer->GetTables("SHUTTLE_TEST");
30 //______________________________________________________________________________________________
31 Bool_t QueryShuttleLogbook(AliShuttleLogbookEntry& entry, Int_t runNumber=-1)
33 // Query DAQ's Shuttle logbook and fills detector status array
35 if(runNumber<=0 && entry.GetRun()<=0) {
36 printf("Use a valid Run number!\n");
39 if(!Connect()) return kFALSE;
40 if(runNumber<=0) runNumber= entry.GetRun();
41 //entry.SetRun(runNumber);
43 // check connection, in case connect
44 if(!Connect()) return kFALSE;
47 sqlQuery = Form("select * from logbook_shuttle where run = %d", runNumber);
49 TSQLResult* aResult = fServer->Query(sqlQuery);
51 printf("Can't execute query <%s>!\n", sqlQuery.Data());
55 // TODO Check field count!
56 // if (aResult->GetFieldCount() != 24) {
57 // printf("Invalid SQL result field number!\n");
63 while ((aRow = aResult->Next())) {
64 TString runString(aRow->GetField(0), aRow->GetFieldLength(0));
65 Int_t run = runString.Atoi();
68 for(UInt_t ii = 0; ii < 22; ii++){
69 entry.SetDetectorStatus(aResult->GetFieldName(ii), aRow->GetField(ii));
75 delete aResult; aResult=0;
77 // Query run parameters from logbook!
79 sqlQuery = Form("select * from logbook where run=%d", runNumber);
81 aResult = fServer->Query(sqlQuery);
83 printf("Can't execute query <%s>!", sqlQuery.Data());
87 if(aResult->GetRowCount() == 0) {
88 printf("QueryRunParameters - No entry in DAQ Logbook for run %d!", runNumber);
93 if(aResult->GetRowCount() > 1) {
94 printf("More than one entry in DAQ Logbook for run %d!", runNumber);
99 while ((aRow = aResult->Next())) {
101 for(UInt_t ii = 0; ii < aResult->GetFieldCount(); ii++)
102 entry.SetRunParameter(aResult->GetFieldName(ii), aRow->GetField(ii));
104 UInt_t startTime, endTime;
105 TString startTimeString = entry.GetRunParameter("time_start");
106 UInt_t startTime = startTimeString.Atoi();
107 TString endTimeString = entry.GetRunParameter("time_end");
108 UInt_t endTime = endTimeString.Atoi();
110 if (!startTime || !endTime || startTime > endTime) {
111 printf("QueryRunParameters - Invalid parameters for Run %d: startTime = %d, endTime = %d",
112 runNumber, startTime, endTime);
118 // entry.SetStartTime(startTime);
119 // entry.SetEndTime(endTime);
129 //______________________________________________________________________________________________
130 Bool_t UpdateShuttleLogbook(AliShuttleLogbookEntry& entry, Int_t runNumber=-1)
132 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
135 if(runNumber<=0 && entry.GetRun()<=0) {
136 printf("Use a valid Run number!\n");
139 if(!Connect()) return kFALSE;
140 if(runNumber<=0) runNumber= entry.GetRun();
141 entry.SetRun(runNumber);
143 TString sqlQuery("update logbook_shuttle set ");
145 for(UInt_t i=0; i < AliShuttleInterface::NDetectors(); i++){
146 sqlQuery += Form("%s=\"%s\"", AliShuttleInterface::GetDetName(i), entry.GetDetectorStatusName(entry.GetDetectorStatus(i)));
147 if(i < AliShuttleInterface::NDetectors()-1) sqlQuery += ", ";
150 sqlQuery += Form(" where run=%d;",entry.GetRun());
152 printf("sqlQuery: %s\n", sqlQuery.Data());
155 aResult = fServer->Query(sqlQuery);
157 printf("Can't execute query <%s>!\n", sqlQuery.Data());
166 //______________________________________________________________________________________________
167 Bool_t UpdateShuttleLogbook(Int_t runNumber, const char* detCode, AliShuttleLogbookEntry::Status status)
169 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
172 if(AliShuttleInterface::GetDetPos(detCode) < 0) return kFALSE;
173 if(!Connect()) return kFALSE;
175 TString sqlQuery("update logbook_shuttle set ");
178 sqlQuery += Form("%s=\"%s\" ", detCode, AliShuttleLogbookEntry::GetDetectorStatusName(status));
180 sqlQuery += Form("where run=%d;",runNumber);
182 printf("sqlQuery: %s\n", sqlQuery.Data());
185 aResult = fServer->Query(sqlQuery);
187 printf("Can't execute query <%s>!\n", sqlQuery.Data());
196 //______________________________________________________________________________________________
197 Bool_t UpdateShuttleLogbook(Int_t runNumber, const char* detCode, const char* status)
199 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
202 if(AliShuttleInterface::GetDetPos(detCode) < 0) return kFALSE;
203 if(!Connect()) return kFALSE;
205 TString sqlQuery("update logbook_shuttle set ");
208 sqlQuery += Form("%s=\"%s\" ", detCode, status);
210 sqlQuery += Form("where run=%d;",runNumber);
212 printf("sqlQuery: %s\n", sqlQuery.Data());
215 aResult = fServer->Query(sqlQuery);
217 printf("Can't execute query <%s>!\n", sqlQuery.Data());
226 //______________________________________________________________________________________________
227 Bool_t InsertNewRun(AliShuttleLogbookEntry& entry, Int_t runNumber=-1)
229 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
231 if(runNumber<=0 && entry.GetRun()<=0) {
232 printf("Use a valid Run number!\n");
235 if(!Connect()) return kFALSE;
236 if(runNumber<=0) runNumber= entry.GetRun();
237 entry.SetRun(runNumber);
239 TString sqlQuery = Form("insert into logbook_shuttle (run) values (%d);", runNumber);
241 printf("sqlQuery: %s\n", sqlQuery.Data());
244 aResult = fServer->Query(sqlQuery);
246 printf("Can't execute query <%s>!\n", sqlQuery.Data());
252 UpdateShuttleLogbook(entry);
257 //______________________________________________________________________________________________
258 Bool_t DeleteEntries(Int_t runNumber=-1)
260 // Update Shuttle logbook table - TEST ONLY, USE WITH CARE!
262 if(!Connect()) return kFALSE;
265 if(runNumber>0) runStr=Form("where run=%d",runNumber);
266 TString sqlQuery = Form("delete from logbook_shuttle %s;", runStr.Data());
268 printf("sqlQuery: %s\n", sqlQuery.Data());
271 aResult = fServer->Query(sqlQuery);
273 printf("Can't execute query <%s>!\n", sqlQuery.Data());
282 //______________________________________________________________________________________________
283 void TestShuttleLogbook(){
285 gSystem->Load("libSHUTTLE.so");
289 AliShuttleLogbookEntry::Status y[18]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
290 AliShuttleLogbookEntry lb(21242, y);
291 lb.SetDetectorStatus("HMP","Unprocessed"); // HMPID
292 lb.SetDetectorStatus("ZDC","Unprocessed"); // ZDC
293 lb.SetDetectorStatus("TPC","Unprocessed"); // TPC
294 lb.SetDetectorStatus("SPD","Unprocessed"); // SPD
295 lb.SetDetectorStatus("GRP","Unprocessed"); // GRP
299 InsertNewRun(lb,21243);
300 InsertNewRun(lb,21244);
301 InsertNewRun(lb,21245);
302 // InsertNewRun(lb,21246);
303 // InsertNewRun(lb,1000);