#!/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  05/2005 <mailto:dorner@astro.uni-wuerzburg.de>
#
#   Copyright: MAGIC Software Development, 2000-2006
#
#
# ========================================================================
#
# This a resource file for the scripts, in which paths, times and number 
# of jobs for condor are stored. 
#


#source `dirname $0`/sourcefile (is done in jobsourcefile)

user=`whoami`
sourcefile=/home/$user/Mars.cvs/datacenter/scripts/jobsourcefile
source $sourcefile

notcount=0
while (( $notcount < 100 ))
do
   for (( i=0 ; i < ${#scripts[@]} ; i++ ))
   do 
      date  #>> $scriptlog 2>&1
      echo "sleeping $sleeptime..." #>> $scriptlog 2>&1
      sleep $sleeptime
      dayofweek=`date +%u`
      hour=`date +%k`
      source $sourcefile
      echo "script: ${scripts[$i]}" #>> $scriptlog 2>&1
      echo " day: $dayofweek hour: $hour" #>> $scriptlog 2>&1
      queued=`/usr/local/bin/condor_q -global -format "%s\n" Owner | grep -c $user`
      queued=`setzero $queued`
      echo " found $queued jobs in the queue (incl. running jobs)" #>> $scriptlog 2>&1
      queuedscript=`/usr/local/bin/condor_q -global | grep $user | grep -c ${scripts[$i]}`
      queuedscript=`setzero $queuedscript`
      echo " found $queuedscript ${scripts[$i]} in the queue (incl. running jobs)" #>> $scriptlog 2>&1

      pnototal=${pnototal[$hour]}
      #choose array according to the day of the week
      case $dayofweek in
         0 | 6)  pnos=( ${pnoswe[@]} ) ;;
             *)  pnos=( ${pnosweek[@]} ) ;;
      esac
      num=`echo "((( $i + 1 ) * 24 ) + ( $hour + 1 ) ) - 24 - 1 " | bc `
      pnoscript=${pnos[$num]}
      echo " => num=$num => pnoscript=$pnoscript (i.e. $pnoscript ${scripts[$i]} allowed)" #>> $scriptlog 2>&1
      
      echo " queued: $queued - pnototal: $pnototal" #>> $scriptlog 2>&1
      if [ "$queued" -gt "$pnototal" ]
      then
         continue
      else
         echo " queued ${scripts[$i]}: $queuedscript - pno: $pnoscript" #>> $scriptlog 2>&1
         if [ "$queuedscript" -gt "$pnoscript" ]
         then
            continue
         fi
      fi
      
      echo " gettodo..."
      echo "getting db..."
      db=`grep Database $mars/sql.rc | grep -v '#' | sed -e 's/Database: //' -e 's/ //g'`
      col=${scriptscolname[$i]}
      table=`grep "$col:" $steps | sed -e "s/[.]$col://" -e 's/#//' -e 's/ //g'`
      coltab=`grep "$col:" $steps | sed -e 's/://' -e 's/#//' -e 's/ //g'`
      needs=`grep "$coltab[.]Needs:" $steps | sed -e "s/$coltab[.]Needs://"`
      influences=`grep "$coltab[.]Influences:" $steps | sed -e "s/$coltab[.]Influences://"`
      primary=fSequenceFirst
      echo "db: $db - col $col - table $table - coltab $coltab"
      echo "needs: $needs"
      echo "influences: $influences"
      query="select $primary from $table where "
      for need in $needs
      do
         query=$query" not isnull($need) and"
      done
      for influence in $influences
      do 
         query=$query" isnull($influence) and"
      done
      query=$query" isnull(fStartTime) and isnull(fFailedTime) and isnull(fFailedCode) and isnull(fFailedCodeAdd) and isnull(fReturnCode) order by $primary desc limit 0, 1 "
      echo "QUERY: "$query
      echo ""
      echo " gettodofiles -> pno"

      if [ "$pno" == "0" ]
      then
         echo " pno = $pno -> continue" #>> $scriptlog 2>&1
         echo "" #>> $scriptlog 2>&1
         continue
      fi

      y=`date +%Y`
      m=`date +%m`
      d=`date +%d`
      condordir=$logpath/condor/$y/$m/$d
      makedir  $condordir #>> $scriptlog 2>&1
      
      echo "  ---> starting $pno ${scripts[$i]}..." #>> $scriptlog 2>&1
      
      #test
      echo ""
      continue
      #test
      if ! /usr/local/bin/condor_submit -a path=$scriptspath -a prog=${scripts[$i]} -a y=$y -a m=$m -a d=$d $scriptspath/run.condor 2>$errorlog
      then 
         date >> $errorlog
         nail -s 'condor problem'  $erradrs < $errorlog
         echo "condor is not working -> sleeping $errorsleeptime" >> $scriptlog 2>&1
         sleep $errorsleeptime
      fi
      echo "" >> $scriptlog 2>&1
   done
done

