<project name="hotel" default="report" basedir=".">
    
    <description>Measure Conversion Code Coverage</description>
    
    <property name="fwd.home"             value="." />
    <property name="app.4gl.src"          value="./abl/" />
    <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"           value="${basedir}/coverage" />

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

    <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}"/>


    <!-- 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>
    </target>

    <target name="convert"
            depends="init"
            description="Convert the 4GL source code to Java source code, using a pattern as input.">
        <record name="cvt_${LOG_STAMP}.log" action="start"/>
        <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="-SId2"/>
            <arg value="f2+m0+cb"/>
            <arg value="${app.4gl.src}"/>
            <arg value="${app.4gl.pattern}"/>
            <classpath refid="compile.classpath"/>
        </java>
        <record name="cvt_${LOG_STAMP}.log" action="stop"/>
    </target>

    <target name="report" depends="convert">
        <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>

</project>


