#!/bin/bash
clear
export TMP=/tmp

expand_xslt () {
  echo -- $1 --
  java -classpath $CLASSPATH org.apache.xalan.xslt.Process -XSL src/kandid/soup/schema/$1.xsl -IN src/kandid/soup/schema/soup.xsd -OUT $TMP/$2.txt
  java -classpath classes:$CLASSPATH kandid.soup.helper.Uppercase $TMP/$2.txt src/kandid/$3/$2.java
  if [ -f src/kandid/$3/$2.tmp ]; then
    rm src/kandid/$3/$2.tmp
  fi
  java -jar ./buildlib/google-java-format-1.30.0-all-deps.jar src/kandid/$3/$2.java > src/kandid/$3/$2.tmp
  if [ -f java ]; then
    rm java
  fi
  mv src/kandid/$3/$2.tmp src/kandid/$3/$2.java
}

echo ------------------------------------------------------------------------------------
echo -- clean --
mkdir $TMP
mkdir classes
rm src/kandid/soup/*.java
rm classes/kandid/soup/*.class
rm src/kandid/pond/*.java
rm classes/kandid/pond/*.class
rm src/kandid/catalog/*.java
rm classes/kandid/catalog/*.class
rm src/kandid/genomedb/*.java
rm classes/kandid/genomedb/*.class
rm src/kandid/preference/*.java
rm classes/kandid/preference/*.class
rm $TMP/SetEditorMapping.txt
rm $TMP/RandomizeChromosome.txt
rm $TMP/MutateChromosome.txt
rm $TMP/CloneChromosome.txt
rm $TMP/MergeChromosome.txt
rm $TMP/scalarvm.txt
rm $TMP/vectorvm.txt
rm $TMP/scalarvm.txt

mkdir -p src/kandid/soup/map
mkdir -p src/kandid/calculation/vm/scalar
mkdir -p src/kandid/calculation/vm/vector
mkdir -p src/kandid/calculation/bridge/povray

export CLASSPATH=.:buildlib/xalan.jar:buildlib/xml-apis.jar:buildlib/xercesImpl.jar
javac -d classes src/kandid/soup/helper/*.java

expand_xslt setEditor SetEditorMapping    soup/map
expand_xslt random    RandomizeChromosome soup/map
expand_xslt mutate    MutateChromosome    soup/map
expand_xslt clone     CloneChromosome     soup/map
expand_xslt merge     MergeChromosome     soup/map

expand_xslt scalarvm  ScalarVM     calculation/vm/scalar
expand_xslt vectorvm  VectorVM     calculation/vm/vector

export XJC=/usr/share/jaxb/bin/xjc.zip.sh
echo -- schema soup --
cd src
$XJC kandid/soup/schema/soup.xsd -p kandid.soup
cd ..
cp src/kandid/soup/PopulationType.java $TMP/PopulationType.java
java -classpath classes:$CLASSPATH kandid.soup.helper.InsertRootElement $TMP/PopulationType.java src/kandid/soup/PopulationType.java
cp src/kandid/soup/EntityType.java $TMP/EntityType.java
java -classpath classes:$CLASSPATH kandid.soup.helper.InsertRootElement $TMP/EntityType.java src/kandid/soup/EntityType.java

echo -- schema catalog --
cd src
$XJC kandid/catalog/schema/catalog.xsd -p kandid.catalog
cd ..

echo -- schema genomedb --
cd src
$XJC kandid/genomedb/schema/genomedb.xsd -p kandid.genomedb
cd ..

echo -- schema pond --
cd src
$XJC kandid/pond/schema/pond.xsd -p kandid.pond
cd ..

echo -- schema preference --
cd src
$XJC kandid/preference/schema/preference.xsd -p kandid.preference
cd ..


#kandid/preference/PreferenceType
#cp src/kandid/preference/PreferenceType.java $TMP/PreferenceType.java
#java -classpath classes:$CLASSPATH kandid.soup.helper.InsertRootElement $TMP/PreferenceType.java src/kandid/preference/PreferenceType.java

#export JAXB_LIBS=$JAXB_HOME/lib

#export CLASSPATH=buildlib/junit.jar:/usr/share/maven-repo/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar

#echo -- compile soup --
#javac -d classes -sourcepath src src/kandid/soup/*.java  src/kandid/soup/map/*.java  src/kandid/soup/test/*.java
#echo -- compile catalog --
#javac -d classes -sourcepath src src/kandid/catalog/*.java
#echo -- compile genomedb --
#javac -d classes -sourcepath src src/kandid/genomedb/*.java
#echo -- compile pond --
#javac -d classes -sourcepath src src/kandid/pond/*.java  src/kandid/pond/test/*.java
#echo -- compile preference --
#javac -d classes -sourcepath src src/kandid/preference/*.java

#echo -- test soup --
#java  -ea -esa -classpath classes:$CLASSPATH kandid.soup.test.AllTests
#echo -- test pond --
#java  -ea -esa -classpath classes:$CLASSPATH kandid.pond.test.AllTests
#echo -- test catalog --
#java  -ea -esa -classpath classes:$CLASSPATH kandid.catalog.test.AllTests
#echo -- test genomedb --
#java  -ea -esa -classpath classes:$CLASSPATH kandid.genomedb.test.AllTests

