<project name="hotel" default="zip" basedir=".">
    
    <description>Measure Conversion Code Coverage</description>
    
    <property name="fwd.home"             value="." />
    <property name="app.4gl.src"          value="." />
    <property name="fwd.src.home"         value="${fwd.home}/p2j/src" />
    <property name="app.4gl.src"          value="./abl/" />
    <property name="app.4gl.pattern"      value="*.[pPwW]" />
    <property name="fwd.lib.home"         value="${fwd.home}/p2j/build/lib" />
    <property name="jacoco.exec"          value="${basedir}/coverage/jacoco.exec"/>
    <property name="deploy.home"          value="${basedir}/deploy" />
    <property name="fwd.build.home"       value="${fwd.home}/p2j/build" />
    <property name="output.dir.name"      value="coverage" />
    <property name="output.dir"           value="${basedir}/${output.dir.name}" />
    <property name="zfile"                value="zfile_set.txt" />
    <property name="p2j.home"             value="." />
    <property name="p2jlib.home"          value="${p2j.home}/p2j/build/lib" />

    <tstamp>
      <format property="LOG_STAMP" pattern="yyyyMMdd_HHmmss" />
    </tstamp>

    <path id="compile.classpath">
        <fileset dir="${fwd.lib.home}"    includes="*.jar"/>
    </path>

    <!-- create the time stamp -->
    <target name="init">
        <tstamp/>

        <!-- copy embedded program code -->
        <copy todir="${app.4gl.src}">
            <fileset dir="${fwd.src.home}/4gl/embedded/" includes="**" />
        </copy>
        <!-- copy the jacoco jars-->
        <copy todir="${deploy.home}/lib">
            <fileset dir="${p2jlib.home}">
                <include name="org.jacoco.*.jar" />
                <include name="asm*9.8.jar"/>
            </fileset>
        </copy>

        <!-- define the ant targets-->
        <taskdef name="jacocoagent" classname="org.jacoco.ant.AgentTask">
            <classpath>
            <pathelement location="${deploy.home}/lib/org.jacoco.ant-0.8.13.jar"/>
            <pathelement location="${deploy.home}/lib/org.jacoco.core-0.8.13.jar"/>
            <pathelement location="${deploy.home}/lib/org.jacoco.agent-0.8.13.jar"/>
            </classpath>
        </taskdef>

        <taskdef name="jacocoreport" classname="org.jacoco.ant.ReportTask">
            <classpath>
            <pathelement location="${deploy.home}/lib/org.jacoco.ant-0.8.13.jar"/>
            <pathelement location="${deploy.home}/lib/org.jacoco.core-0.8.13.jar"/>
            <pathelement location="${deploy.home}/lib/org.jacoco.report-0.8.13.jar"/>
            <fileset dir="${deploy.home}/lib">
                <include name="asm*9.8.jar"/>
            </fileset>
            </classpath>
        </taskdef>

    <jacocoagent property="agentvmparam" destfile="${jacoco.exec}"/>
    </target>

    <target name="check-zfile-set">
      <available file="${zfile}" property="zfile-set"/>
   </target>

   <target name="convert.zset"
           depends="init, check-zfile-set"
           description="Convert the 4GL source code to Java source code, using the z-file set file as input."
           if="zfile-set">
      <record name="cvt_${LOG_STAMP}.log" action="start"/>
      <echo message="fileset in use: ${zfile}"/>
      <java classname="com.goldencode.p2j.convert.ConversionDriver"
            fork="true"
            failonerror="true"
            dir="${basedir}">
         <jvmarg value="${agentvmparam}"/>
         <jvmarg value="-server"/>
         <jvmarg value="-Xmx4G"/>
         <jvmarg value="-XX:-OmitStackTraceInFastThrow"/>
         <jvmarg value="-DP2J_HOME=${fwd.home}"/>
         <arg value="-ZId2"/>
         <arg value="f2+m0+cb"/>
         <arg value="${zfile}"/>
         <classpath refid="compile.classpath"/>
      </java>
      <record name="cvt_${LOG_STAMP}.log" action="stop"/>
   </target>

    <target name="report" depends="convert.zset">
        <jacocoreport>
            <executiondata>
                <file file="${jacoco.exec}"/>
            </executiondata>
        <structure name="JaCoCo Report">
            <classfiles>
                <fileset dir="${fwd.build.home}/classes/com/goldencode/p2j">
                    <include name="**/*.class"/>
                </fileset>
            </classfiles>
            <sourcefiles encoding="UTF-8">
                <fileset dir="${fwd.src.home}">
                    <include name="**/*.java"/>
                </fileset>
            </sourcefiles>
        </structure>
        <html destdir="${output.dir}"/>
        </jacocoreport>
    </target>
    
    <target name="zip" depends="report">
        <zip destfile="${basedir}/${output.dir.name}.zip"
             basedir="${output.dir}"/>
    </target>
</project>
