#!/bin/bash

#######################################
#use CISE's thunder server (Ubuntu) for getting script time (date command)
#gv1@cise.ufl.edu
#17 Feb 2010
#######################################

#to copy a file from current directory to all sub-directories:
# find . -type d -exec cp TestDriverExam2.java {}/ \;


rm *.out
rm *.log
rm RecordKeeper.java
rm Player.java
rm *.class
rm *.diff
touch error.log
touch gcompile.log
touch gdiff.log
cp ../Player.java Player.java
cp ../TestDriver.java TestDriver.java
javac Player.java

START=`date +%s`
echo "Script start time (Unix epoch): $START"  2>&1 | tee -a gcompile.log | tee -a gdiff.log

function failure()
{
    echo "$@" >&2
    echo "$@" >>gcompile.log
    continue
}

for oldfile in $(find . -name "*.java" -type f)
do
	#echo $oldfile
	if [ "$oldfile" == "./TestDriver.java" ]; then
		echo "TestDriver.java will not be replaced as RecordKeeper.java!"
	elif [ "$oldfile" == "./Player.java" ]; then
		echo "Player.java will not be replaced as RecordKeeper.java!"
	else
 # case $oldfile in
 #  *.[jJ][aA][vV][aA]) 
	#echo "++++++++++++++++true " $oldfile
    fname=`basename $oldfile .java`
    echo "Now compiling file: " $oldfile
    echo "Now compiling file: " $oldfile >&2
      cp $oldfile RecordKeeper.java
      javac RecordKeeper.java || failure "Failed to compile $oldfile!      moving on..." 
	echo "moving to compile TESTDRIVER"
      javac TestDriver.java > $fname.jerr
      java TestDriver > $fname.out
    if [ -f "RecordKeeper.java" ]; then 
	rm RecordKeeper.java 
    fi
    if [ -f "RecordKeeper.class" ]; 
	then rm RecordKeeper.class 
    fi
    if [ -f "TestDriver.class" ]; 
	then rm TestDriver.class 
    fi
    if [ -f "RecordKeeperWrapper.class" ]; 
	then rm RecordKeeperWrapper.class 
    fi
 #	;;
 #	   *) echo "------------false" ;;
 #	esac
	fi
done >> gcompile.log

JAVA_FINISH=`date +%s`
echo "Java execution script - finish time (Unix epoch): $JAVA_FINISH" 2>&1 | tee -a gcompile.log

cp ../testdriver.out testdriver.out
rm .out*

for ofilepath in $(find . -name "*.out" -type f)
do
#	if [ "$oldfile" == "./testdriver.out" ]; then
#		echo "TestDriver.out will not be checked!"
#	else
		ofname=`basename $ofilepath .out`
		#echo "Now checking out-filing=" $ofname
		echo "===================================================================" >> gdiff.log
		echo "Now checking out-file=" $ofilepath 2>&1 | tee -a gdiff.log
		echo "===================================================================" >> gdiff.log
		diff -Bwy --suppress-common-lines testdriver.out $ofname.out | tee -a $ofname.diff >> gdiff.log
#	fi
done

FINISH=`date +%s`
echo "DIFF script - finish time (Unix epoch): $FINISH" 2>&1 | tee -a gdiff.log

JAVA_ELAPSED=`expr $JAVA_FINISH - $START`
DIFF_ELAPSED=`expr $FINISH - $JAVA_FINISH`
ELAPSED=$((FINISH - START))
echo "Elapsed time: Java execution=$JAVA_ELAPSED s, Diff= $DIFF_ELAPSED s, Total=$ELAPSED s." 2>&1 | tee -a gdiff.log | tee -a gcompile.log



