#!/bin/sh
#------------------------------------------------------------------
# SCRIPT TO SEARCH FOR DATA FIELDS FROM ALTERNATIVE DATES 
# WHEN DESIRED DATES ARE NOT AVAILABLE
#  GODAS needs flux and sst fields from 3 separate dates surrounding 
#  the model date
#------------------------------------------------------------------
export utilscript=${utilscript:-/nwprod/util/ush}
export utilexec=${utilexec:-/nwprod/util/exec}
COMBASE=${COMBASE:-/com/godas/${envir}/godas}

fileb=$1

ls -r $COMBASE.*/$fileb.2???[0-1][0-9][0-3][0-9] > $fileb.lst

set -x 

MDY=$model_date
MDYm1=`sh $utilscript/finddate.sh $MDY d-1`
MDYp1=`sh $utilscript/finddate.sh $MDY d+1`

StartDY=${StartDY:-`sh $utilscript/finddate.sh $MDY d-$ndays_bathy`}
EndDY=${EndDY:-`sh $utilscript/finddate.sh $MDY d+$ndays_bathy`}


if [ ! -s $fileb.1 ]; then
  echo "$fileb.$MDYm1 NOT FOUND.  LOOK FOR OLDER $fileb"
  CDATE=$MDYm1
  until [ $CDATE -le $StartDY ]
  do
    CDATE=`sh $utilscript/finddate.sh $CDATE d-1`
    grep $fileb.$CDATE $fileb.lst > $fileb.day.lst
    if [ $? -eq 0 ]; then
      ls -t `cat $fileb.day.lst` > $fileb.day.lst.sorted
      for file in `cat $fileb.day.lst.sorted`
      do
        if [ -s $file ]; then
          cp $file $fileb.1
          break 2
        fi
      done
    fi
  done
  if [ ! -s $fileb.1 ]; then
    echo "CANNOT FIND $fileb FIELD PRIOR TO MODEL DATE.  Exiting..."
    exit 7
  fi
fi


CDATE=$MDY
if [ ! -s $fileb.2 ]; then
  echo "$fileb.$MDY NOT FOUND.  LOOK FOR MORE RECENT $fileb"

  if [ -s $fileb.3 ]; then
    mv $fileb.3 $fileb.2
    echo $fileb.3 moved to $fileb.2.  Will need to find new $fileb.3
    CDATE=`sh $utilscript/finddate.sh $MDYp1 d+1`
  else
    until [ $CDATE -ge $EndDY ]
    do
      CDATE=`sh $utilscript/finddate.sh $CDATE d+1`
      grep $fileb.$CDATE $fileb.lst > $fileb.day.lst
      if [ $? -eq 0 ]; then
        ls -t `cat $fileb.day.lst` > $fileb.day.lst.sorted
        for file in `cat $fileb.day.lst.sorted`
        do
          if [ -s $file ]; then
            cp $file $fileb.2
            break 2
          fi
        done
      fi
    done
    if [ ! -s $fileb.2 ]; then
      echo "CANNOT FIND $fileb FIELD AFTER MODEL DATE.  Exiting..."
      exit 8
    fi
  fi
fi


if [ ! -s $fileb.3 ]; then
  until [ $CDATE -ge $EndDY ]
  do
    CDATE=`sh $utilscript/finddate.sh $CDATE d+1`
    grep $fileb.$CDATE $fileb.lst > $fileb.day.lst
    if [ $? -eq 0 ]; then
      ls -t `cat $fileb.day.lst` > $fileb.day.lst.sorted
      for file in `cat $fileb.day.lst.sorted`
      do
        if [ -s $file ]; then
          cp $file $fileb.3
          if [ $CDATE -ne $MDYp1 ]; then
            echo $CDATE USED FOR $fileb.3 !!!!!
          fi
          break 2
        fi
      done
    fi
  done
fi
if [ ! -s $fileb.3 ]; then
  echo "CANNOT FIND $fileb FIELD AFTER MODEL DATE.  Exiting..."
  exit 9
fi

