#!/bin/bash
# UpdateOutputFile
#
# This script is called initially after MAM starts up and
# then at times dictated by cron to rename the MAM output
# file.
#
# Need to include the appropriate paths if called from cron
#
export PATH=/home/smc/bin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export LD_LIBRARY_PATH=/home/smc/lib:/usr/local/lib
export OMNIORB_CONFIG=/home/smc/omniORB.cfg
#
PRG=MAM
LOGFILE=/home/smc/log/$PRG.log
MAMSERVER=MOSESensor
NUMBERFILE=OutputFileNum.txt
OUTPUTDIR=/mnt/XDATA/$PRG
PENDDIR="$OUTPUTDIR/pending"
OUTPUTPREFIX=MAMDATA
PACING=2
#
TEECMD="tee -a $LOGFILE"
if [ -z "$1" ]; then TEECMD="$TEECMD > /dev/null" ; fi
#
# increment the number in the number file
num=`cat $NUMBERFILE`

if [ -z $num ]
then
	num=0
else
	(( num += 1 ))
fi

echo $num > $NUMBERFILE

# create the output directory if it does not exist
if [ ! -d "$OUTPUTDIR" ]
then
  echo "* Creating directory $OUTPUTDIR"
  sudo mkdir "$OUTPUTDIR" --parents
  sudo chmod 777 "$OUTPUTDIR"
fi

if [ ! -d "$PENDDIR" ]
then
  echo "* Creating directory $PENDDIR"
  sudo mkdir "$PENDDIR" --parents
  sudo chmod 777 "$PENDDIR"
fi

# create a new name based on the incremented number
NEWFILENAME=`printf "$OUTPUTDIR/$OUTPUTPREFIX%.6d" $num`

# call up the motion sensor and give it the new file name and tell it
# to start
( echo "*"
  echo "* Setting new MAM output file to $NEWFILENAME"
  echo "*"
  #OLDFILENAME=`ServerExec $MAMSERVER "MOSE --output"`
  #if [ "$PACING" -ne 0 ]; then sleep $PACING ; fi
  #if [ -n "$OLDFILENAME" ]
  #then
  #echo "* Old filename was $OLDFILENAME"

  ServerExec $MAMSERVER "MOSE --stop"
  if [ "$PACING" -ne 0 ]; then sleep $PACING ; fi

  if [ ! -d "$PENDDIR" ]
  then
    mkdir "$PENDDIR"
  fi

  MOVEFILES=`find "$OUTPUTDIR" -maxdepth 1 -type f -print`

  if [ -n "$MOVEFILES" ]
  then
    mv $MOVEFILES "$PENDDIR"
    for i in `ls $PENDDIR | egrep -v '[.]bz2$'`
    do
      ( cd $PENDDIR ; bzip2 "$i" )
    done
  fi
    
  ServerExec $MAMSERVER "MOSE --output $NEWFILENAME"
  if [ "$PACING" -ne 0 ]; then sleep $PACING ; fi

  ServerExec $MAMSERVER "MOSE --start"
  echo "*"
  echo "*"
  echo "*"
) 2>&1 | eval $TEECMD

