Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 8991)
+++ trunk/MagicSoft/Mars/Changelog	(revision 8992)
@@ -18,4 +18,15 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2008/07/03 Thomas Bretz
+
+   * datacenter/macros/filldotrun.C:
+     - Replaced MSQKServer by MSQLMagic
+     - this made local functions obsolete
+     - added new format 20080519 including telescope- and file-number
+     - simplified the if-clauses testing for version numbers (due to the
+       initial check only some version numbers allowed anyway)
+
+
 
  2008/07/01 Thomas Bretz
Index: trunk/MagicSoft/Mars/datacenter/macros/filldotrun.C
===================================================================
--- trunk/MagicSoft/Mars/datacenter/macros/filldotrun.C	(revision 8991)
+++ trunk/MagicSoft/Mars/datacenter/macros/filldotrun.C	(revision 8992)
@@ -19,5 +19,5 @@
 !   Author(s): Thomas Bretz, 08/2004 <mailto:tbretz@astro.uni-wuerzburg.de>
 !
-!   Copyright: MAGIC Software Development, 2000-2006
+!   Copyright: MAGIC Software Development, 2000-2008
 !
 !
@@ -42,4 +42,5 @@
 //   070416-0,
 //   080220-0
+//   080519-0
 //
 // Usage:
@@ -82,81 +83,12 @@
 #include <TRegexp.h>
 
-#include <TSQLRow.h>
-#include <TSQLResult.h>
-
 #include "MTime.h"
 #include "MDirIter.h"
-#include "MSQLServer.h"
+#include "MSQLMagic.h"
 
 using namespace std;
 
-Bool_t ExistStr(MSQLServer &serv, const char *column, const char *table, const char *test)
-{
-    TString query(Form("SELECT %s FROM %s WHERE %s='%s'", column, table, column, test));
-    TSQLResult *res = serv.Query(query);
-    if (!res)
-        return kFALSE;
-
-    Bool_t rc = kFALSE;
-
-    TSQLRow *row=res->Next();
-    if (row && (*row)[0])
-        rc=kTRUE;
-
-    delete res;
-    return rc;
-}
-
-//get key for the value
-// if value is not existing, insert value and get key
-Int_t QueryNameKEY(MSQLServer &serv, Bool_t dummy, const char *col, const char *name, Bool_t insert=kTRUE)
-{
-    TString query;
-
-    query = Form("SELECT f%sKEY FROM %s WHERE f%sName='%s'", col, col, col, name);
-    TSQLResult *res = serv.Query(query);
-    if (!res)
-        return -1;
-
-    TSQLRow *row=res->Next();
-
-    Int_t rc = row && (*row)[0] ? atoi((*row)[0]) : -1;
-
-    delete res;
-
-    if (rc>=0)
-        return rc;
-
-    if (!insert)
-        return -1;
-
-    //insert new value
-    query = Form("INSERT %s (f%sName) VALUES (\"%s\");", col, col, name);
-
-    if (dummy)
-    {
-        cout << query << endl;
-        return 0;
-    }
-
-    res=serv.Query(query);
-    if (!res)
-        return -1;
-
-    delete res;
-
-    Int_t key = QueryNameKEY(serv, dummy, col, name, kFALSE);
-    if (key>0)
-    {
-        cout << "New " << col << ": " << name << endl;
-        return key;
-    }
-
-    cout << "ERROR: " << query << endl;
-    return kFALSE;
-}
-
-
-Int_t insert(MSQLServer &serv, Bool_t dummy, TString filename)
+
+Int_t insert(MSQLMagic &serv, Bool_t dummy, TString filename)
 {
     ifstream fin(filename);
@@ -193,5 +125,6 @@
         version!=200603300 && version!=200604010 && version!=200608080 &&
         version!=200704160 &&
-        version!=200802200)
+        version!=200802200 &&
+        version!=200805190)
     {
         cout << filename << ": File Version unknown - please update the macro!" << endl;
@@ -206,4 +139,21 @@
     while (1)
     {
+        Int_t telnumber = 1;
+        if (version >=200805190)
+        {
+            strng.ReadToDelim(fin, ' ');
+            if (!fin)
+                break;
+            if (strng[0]!='M')
+            {
+                cout << "First character is not an M." << endl;
+                cout << strng << endl;
+                strng.ReadLine(fin);
+                continue;
+            }
+
+            telnumber = atoi(strng.Data()+1);
+        }
+
         // ========== Col 1: Run Number =========
         //Reading the line
@@ -224,7 +174,12 @@
         }
 
-        //cout << "RunNo: " << runnumber << " ";
-
-        if (ExistStr(serv, "fRunNumber", "RunData", strng.Data()))
+        Int_t filenumber = 0;
+        if (version >=200805190)
+        {
+            strng.ReadToDelim(fin, ' ');
+            filenumber = atoi(strng.Data());
+        }
+
+        if (serv.ExistStr("fRunNumber", "RunData", strng))
         {
             // FIXME: Maybe we can implement an switch to update mode?
@@ -239,5 +194,5 @@
             strng="n/a";
 
-        Int_t runtype = QueryNameKEY(serv, dummy, "RunType", strng.Data(), kFALSE);
+        Int_t runtype = serv.QueryKeyOfName("RunType", strng, kFALSE);
         if (runtype<0)
         {
@@ -275,5 +230,5 @@
             strng="Unavailable";
 
-        Int_t sourcekey = QueryNameKEY(serv, dummy, "Source", strng.Data());
+        Int_t sourcekey = serv.QueryKeyOfName("Source", strng.Data());
         if (sourcekey<0)
         {
@@ -303,5 +258,5 @@
             strng="Unavailable";
 
-        Int_t projkey = QueryNameKEY(serv, dummy, "Project", strng.Data());
+        Int_t projkey = serv.QueryKeyOfName("Project", strng);
         if (projkey<0)
         {
@@ -321,5 +276,5 @@
         if (version >=200411130)
         {
-            l1triggerkey = QueryNameKEY(serv, dummy, "L1TriggerTable", strng.Data());
+            l1triggerkey = serv.QueryKeyOfName("L1TriggerTable", strng);
             if (l1triggerkey<0)
             {
@@ -332,5 +287,5 @@
                 strng="n/a";
 
-            l2triggerkey = QueryNameKEY(serv, dummy, "L2TriggerTable", strng.Data());
+            l2triggerkey = serv.QueryKeyOfName("L2TriggerTable", strng);
             if (l2triggerkey<0)
             {
@@ -356,5 +311,5 @@
             case 0:
                 {
-                    l2triggerkey = QueryNameKEY(serv, dummy, "L2TriggerTable", strng.Data());
+                    l2triggerkey = serv.QueryKeyOfName("L2TriggerTable", strng);
                     if (l2triggerkey<0)
                     {
@@ -374,5 +329,5 @@
                     L1TT=strng(0,6);
 
-                    l1triggerkey = QueryNameKEY(serv, dummy, "L1TriggerTable", L1TT.Data());
+                    l1triggerkey = serv.QueryKeyOfName("L1TriggerTable", L1TT);
                     if (l1triggerkey<0)
                     {
@@ -381,5 +336,5 @@
                     }
 
-                    l2triggerkey = QueryNameKEY(serv, dummy, "L2TriggerTable", L2TT.Data());
+                    l2triggerkey = serv.QueryKeyOfName("L2TriggerTable", L2TT);
                     if (l2triggerkey<0)
                     {
@@ -392,5 +347,5 @@
             case 2:
                 {
-                    l1triggerkey = QueryNameKEY(serv, dummy, "L1TriggerTable", strng.Data());
+                    l1triggerkey = serv.QueryKeyOfName("L1TriggerTable", strng);
                     if (l1triggerkey<0)
                     {
@@ -443,5 +398,5 @@
             strng="n/a";
 
-        Int_t hvkey = QueryNameKEY(serv, dummy, "HvSettings", strng.Data());
+        Int_t hvkey = serv.QueryKeyOfName("HvSettings", strng);
         if (hvkey<0)
         {
@@ -458,10 +413,5 @@
         Int_t triggerdelaytablekey=1;
         Int_t calibrationscriptkey=1;
-        if (version==200411130 || version==200412090 || version==200412210
-            || version==200502240 || version==200503170 || version==200503220
-            || version==200504010 || version==200504130 || version==200504150
-            || version==200507140 || version==200507190 || version==200508290
-            || version==200510250 || version==200603300 || version==200604010
-            || version==200608080 || version==200704160 || version==200802200)
+        if (version>=200411130)
         {
             // ========== Col 19-35: DC and HV-values, mjd =========
@@ -476,5 +426,5 @@
                 strng="n/a";
 
-            testflagkey = QueryNameKEY(serv, dummy, "TestFlag", strng.Data());
+            testflagkey = serv.QueryKeyOfName("TestFlag", strng);
             if (testflagkey<0)
             {
@@ -488,5 +438,5 @@
                 strng="n/a";
 
-            lightcondkey = QueryNameKEY(serv, dummy, "LightConditions", strng.Data());
+            lightcondkey = serv.QueryKeyOfName("LightConditions", strng);
             if (lightcondkey<0)
             {
@@ -500,5 +450,5 @@
                 strng="n/a";
 
-            dttablekey = QueryNameKEY(serv, dummy, "DiscriminatorThresholdTable", strng.Data());
+            dttablekey = serv.QueryKeyOfName("DiscriminatorThresholdTable", strng);
             if (dttablekey<0)
             {
@@ -512,5 +462,5 @@
                 strng="n/a";
 
-            triggerdelaytablekey = QueryNameKEY(serv, dummy, "TriggerDelayTable", strng.Data());
+            triggerdelaytablekey = serv.QueryKeyOfName("TriggerDelayTable", strng);
             if (triggerdelaytablekey<0)
             {
@@ -524,9 +474,5 @@
 
             // ========== Col 42: Calibration Script =========
-            if (version==200411130 || version==200412090 || version==200412210
-                || version==200502240 || version==200503170 || version==200503220
-                || version==200504010 || version==200504130 || version==200504150
-                || version==200507140 || version==200507190 || version==200508290
-                || version==200510250)
+            if (version>=200411130 && version<=200510250)
                 strng.ReadToDelim(fin, '\n');
             else
@@ -535,5 +481,5 @@
                 strng="n/a";
 
-            calibrationscriptkey = QueryNameKEY(serv, dummy, "CalibrationScript", strng.Data());
+            calibrationscriptkey = serv.QueryKeyOfName("CalibrationScript", strng);
             if (calibrationscriptkey<0)
             {
@@ -545,5 +491,5 @@
 
         Int_t observationmodekey=1;
-        if (version==200603300 || version==200604010 || version==200608080 || version==200704160 || version==200802200)
+        if (version>=200603300)
         {
             // ========== Col 43: Observation Mode =========
@@ -552,5 +498,5 @@
                 strng="n/a";
 
-            observationmodekey = QueryNameKEY(serv, dummy, "ObservationMode", strng.Data());
+            observationmodekey = serv.QueryKeyOfName("ObservationMode", strng);
             if (observationmodekey<0)
             {
@@ -574,11 +520,11 @@
         //assemlbe the query that is needed to insert the values of this run
         TString query;
-        query += "INSERT RunData SET ";
-
-        query += Form("fRunNumber=%d, ",  runnumber);
-        query += Form("fRunTypeKEY=%d, ", runtype);
-        query += Form("fProjectKEY=%d, ", projkey);
-        query += Form("fSourceKEY=%d, ",  sourcekey);
-        query += Form("fNumEvents=%d, ",  evtno);
+        query += Form("fTelescopeNumber=%d, ", telnumber);
+        query += Form("fRunNumber=%d, ",       runnumber);
+        query += Form("fFileNumber=%d, ",      filenumber);
+        query += Form("fRunTypeKEY=%d, ",      runtype);
+        query += Form("fProjectKEY=%d, ",      projkey);
+        query += Form("fSourceKEY=%d, ",       sourcekey);
+        query += Form("fNumEvents=%d, ",       evtno);
         query += Form("fRunStart=\"%s %s\", ", startdate.Data(), starttime.Data());
         query += Form("fRunStop=\"%s %s\", ", stopdate.Data(), stoptime.Data());
@@ -610,22 +556,16 @@
         cnt++;
 
-        if (dummy)
-            continue;
-
         //send query, add dataset to DB
-        TSQLResult *res = serv.Query(query);
-        if (!res)
+        if (serv.Insert("RunData", query)==kFALSE)
             return -1;
-        delete res;
-
-        //create entry in table RunProcessStatus for this runnumber
-        TString query2=Form("INSERT RunProcessStatus SET fRunNumber=%d, fTimingCorrection='1970-01-01 00:00:00', fCompmux='1970-01-01 00:00:00'",
+
+        TString query2=Form("fRunNumber=%d, fTimingCorrection='1970-01-01 00:00:00', fCompmux='1970-01-01 00:00:00'",
                             runnumber);
         if (testflagkey==3)
             query2+=" , fDataCheckDone='1970-01-01 00:00:00'";
-        res = serv.Query(query2);
-        if (!res)
+
+        //create entry in table RunProcessStatus for this runnumber
+        if (serv.Insert("RunProcessStatus", query2)==kFALSE)
             return -1;
-        delete res;
     }
 
@@ -639,5 +579,5 @@
     TEnv env("sql.rc");
 
-    MSQLServer serv(env);
+    MSQLMagic serv(env);
     if (!serv.IsConnected())
     {
@@ -652,4 +592,6 @@
     cout << endl;
 
+    serv.SetIsDummy(dummy);
+
     if (path.EndsWith(".run"))
     {
