Index: trunk/MagicSoft/Mars/datacenter/macros/insertdataset.C
===================================================================
--- trunk/MagicSoft/Mars/datacenter/macros/insertdataset.C	(revision 7037)
+++ trunk/MagicSoft/Mars/datacenter/macros/insertdataset.C	(revision 7037)
@@ -0,0 +1,174 @@
+/* ======================================================================== *\
+!
+! *
+! * 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 <mailto:dorner@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2005
+!
+!
+\* ======================================================================== */
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// InsertDataset.C
+// ===============
+//
+/////////////////////////////////////////////////////////////////////////////
+
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+
+#include <TEnv.h>
+
+#include <MSQLServer.h>
+#include <TSQLRow.h>
+#include <TSQLResult.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;
+}
+
+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 MyMagic.%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;
+
+    query = Form("INSERT MyMagic.%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 insertdataset(TString number, TString source, TString wobble, Bool_t dummy=kTRUE)
+{
+    TEnv env("sql.rc");
+
+    MSQLServer serv(env);
+    if (!serv.IsConnected())
+    {
+        cout << "ERROR - Connection to database failed." << endl;
+        return 0;
+    }
+    cout << "insertdataset" << endl;
+    cout << "-------------" << endl;
+    cout << endl;
+    cout << "Connected to " << serv.GetName() << endl;
+    cout << endl;
+
+    Int_t sourcekey = QueryNameKEY(serv, dummy, "Source", source.Data());
+    if (sourcekey<0)
+    {
+        cout << "Error - could not get sourcename from DB" << endl;
+        return 0;
+    }
+
+    cout << "no:" << number << endl;
+
+    if (!ExistStr(serv, "fDataSetNumber", "MyMagic.DataSets", number.Data())) // Form("%d", number)
+    {
+        TString query=Form("INSERT MyMagic.DataSets SET fDataSetNumber='%s', "
+                   " fSourceKEY=%d, fWobble='%s' ",
+                   number.Data(), sourcekey, wobble.Data());
+
+        if (dummy)
+        {
+            cout << query << endl;
+            return 0;
+        }
+
+        TSQLResult *res = serv.Query(query);
+        if (!res)
+        {
+            cout << "Error - could not insert dataset" << endl;
+            return 0;
+        }
+        delete res;
+
+
+        query=Form("INSERT MyMagic.DataSetProcessStatus SET fDataSetNumber='%s', "
+                   " fDataSetInserted=Now() ",
+                   number.Data());
+
+        res = serv.Query(query);
+        if (!res)
+        {
+            cout << "Error - could not insert dataset" << endl;
+            return 0;
+        }
+        delete res;
+    }
+    else
+    {
+        cout << number << " already exists... " << endl;
+        return 0;
+    }
+
+    return 1;
+}
+
+
Index: trunk/MagicSoft/Mars/datacenter/macros/setupdb.C
===================================================================
--- trunk/MagicSoft/Mars/datacenter/macros/setupdb.C	(revision 7031)
+++ trunk/MagicSoft/Mars/datacenter/macros/setupdb.C	(revision 7037)
@@ -534,4 +534,19 @@
 
     list.Add(new TObjString(
+         "CREATE TABLE MyMagic.DataSets ("
+         "  fDataSetNumber      INT           UNSIGNED   PRIMARY KEY, "
+         "  fSourceKEY          SMALLINT      UNSIGNED   NOT NULL,"
+         "  fWobble             ENUM('Y','N')            NULL,"
+         "  fLastUpdate         TIMESTAMP"
+         ")"));
+
+    list.Add(new TObjString(
+         "CREATE TABLE MyMagic.DataSetProcessStatus ("
+         "  fDataSetNumber    INT       UNSIGNED   PRIMARY KEY, "
+         "  fDataSetInserted  DATETIME             NULL,"
+         "  fGanymed          DATETIME             NULL"
+         ")";
+
+    list.Add(new TObjString(
          "CREATE TABLE MyMagic.SequenceBuildStatus ("
          "  fDate                  DATE                 PRIMARY KEY, "
Index: trunk/MagicSoft/Mars/datacenter/scripts/insertdatasets
===================================================================
--- trunk/MagicSoft/Mars/datacenter/scripts/insertdatasets	(revision 7037)
+++ trunk/MagicSoft/Mars/datacenter/scripts/insertdatasets	(revision 7037)
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# ========================================================================
+#
+# *
+# * 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  08/2004 <mailto:dorner@astro.uni-wuerzburg.de>
+#
+#   Copyright: MAGIC Software Development, 2000-2004
+#
+#
+# ========================================================================
+#
+#
+
+source /home/operator/Mars.cvs/datacenter/scripts/sourcefile
+
+set -C
+
+#cd $mars
+
+macrospath=/home/operator/Mars.cvs/datacenter/macros
+cd /home/operator/Mars.cvs
+
+
+datasetfiles=(`ls /magic/datasets/*/*`)
+echo "datasetfiles: "${datasetfiles[@]} 
+echo ""
+
+for datasetfile in ${datasetfiles[@]}
+do 
+   no=`echo $datasetfile | cut -d/ -f5 | cut -c8-99 | cut -d. -f1`
+   no2=`grep 'AnalysisNumber:' $datasetfile | sed -e 's/AnalysisNumber://g' | sed -e 's/ //g'`
+   no3=`printf %08d $no2`
+   if [ "$no" = "$no3" ]
+   then 
+      echo "number in filename and in file are the same -> continue"
+   else
+      echo "number in filename and in file are not the same "
+      echo " -> continue with next dataset"
+      continue
+   fi
+   source=`grep 'SourceName:' $datasetfile | sed -e 's/SourceName://g' | sed -e 's/ //g' | sed -e 's/#//g'`
+   mode=`grep 'WobbleMode:' $datasetfile`
+   mode2=`echo $mode | grep ^\#`
+   if [ "$mode2" = "" ]
+   then 
+      wobble="Y"
+   else
+      wobble="N"
+   fi
+   echo "file: "$datasetfile
+   echo "  datasetno:  "$no2
+   echo "  sourcename: "$source
+   echo "  wobble:     "$wobble
+   echo " "
+#   check0=`root -q -b $macrospath/insertdataset.C+\("\"$no\""\,"\"$source\""\,"\"$type\""\) | tee $insertdatasetlog | grep int | sed -e 's/(int)//'`
+   check0=`root -q -b $macrospath/insertdataset.C+\("\"$no2\""\,"\"$source\""\,"\"$wobble\"",kFALSE\) | grep int | sed -e 's/(int)//'`
+   case $check0 in 
+      1)   echo "check0=$check0 -> everthing ok ";;
+      *)   echo "check0=$check0 -> ERROR ";;
+   esac
+done
+
+
