/* ======================================================================== *\ ! ! * ! * This file is part of MARS, the MAGIC Analysis and Reconstruction ! * Software. It is distributed to you in the hope that it can be a useful ! * and timesaving tool in analysing Data of imaging Cerenkov telescopes. ! * It is distributed WITHOUT ANY WARRANTY. ! * ! * Permission to use, copy, modify and distribute this software and its ! * documentation for any purpose is hereby granted without fee, ! * provided that the above copyright notice appear in all copies and ! * that both that copyright notice and this permission notice appear ! * in supporting documentation. It is provided "as is" without express ! * or implied warranty. ! * ! ! ! Author(s): Daniela Dorner, 01/2005 ! ! Copyright: MAGIC Software Development, 2000-2005 ! ! \* ======================================================================== */ ///////////////////////////////////////////////////////////////////////////// // // GetDoList.C // =========== // ///////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include #include #include using namespace std; int getdolist(TString table, TString column, TString date) { TEnv env("sql.rc"); MSQLServer serv(env); if (!serv.IsConnected()) { cout << "ERROR - Connection to database failed." << endl; return 0; } cout << "getstatus" << endl; cout << "---------" << endl; cout << endl; cout << "Connected to " << serv.GetName() << endl; cout << endl; TEnv rc("steps.rc"); TString needs = rc.GetValue(table+"."+column+".Needs", ""); cout << "Needs: " << needs << endl; TList l; while (!needs.IsNull()) { needs = needs.Strip(TString::kBoth); Int_t idx = needs.First(' '); if (idx<0) idx = needs.Length(); TString need = needs(0, idx); needs.Remove(0, idx); l.Add(new TObjString(need)); } TString query(Form("SELECT %s.%s FROM MyMagic.%s", table.Data(), rc.GetValue(table+".Primary", ""), table.Data())); if (date!="NULL" && rc.GetValue(table+".TimerTable", "")!="") query+=Form(" left join MyMagic.%s on %s.%s=%s.%s ", rc.GetValue(table+".TimerTable", ""), table.Data(), rc.GetValue(table+".Primary", ""), rc.GetValue(table+".TimerTable", ""), rc.GetValue(table+".Primary", "")); query+=Form(" WHERE ISNULL(%s)", column.Data()); TIter Next(&l); TObject *o=0; while ((o=Next())) query+=Form(" AND NOT ISNULL(%s)", o->GetName()); if (date!="NULL") { if (rc.GetValue(table+".TimerTable", "")!="") { TString day=date+" 13:00:00"; query+=Form(" AND (fRunStart>ADDDATE(\"%s\", INTERVAL -1 DAY) AND fRunStart<\"%s\")", day.Data(), day.Data()); } else query+=Form(" AND %s=%s ", rc.GetValue(table+".Primary", ""), date.Data()); } cout << "query: " << query << endl; TSQLResult *res = serv.Query(query); if (!res) return 0; ofstream fout("/magic/datacenter/lists/ToDo-"+table+"-"+column+".txt", ios::app); // ofstream fout("/data/MAGIC/datacenter/"+table+"-"+column+".txt", ios::app); TSQLRow *row=0; while ((row = res->Next())) fout << (*row)[0] << endl; delete res; return 1; }