<!--

    Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<property name="stylesheet" value="${env.APS_HOME}/config/j2eeReporter.xsl" />
<property name="xmlfile" value="${env.APS_HOME}/test_resultsValid.xml" />
<property name="htmlfile" value="${env.APS_HOME}/test_results.html" />

<target name="report">
<echo message="Comparing results with expected results"/>


    <xslt style="${stylesheet}"
            in="${xmlfile}" out="${htmlfile}"
            basedir="." destdir="." />
    <antcall target="report-sh"/>
    <!--
    <ant dir="${env.APS_HOME}/util/filediff" target="modifyReport"/>
    -->
</target>

<target name="report-sh">
<antcall target="pecount"/>
<antcall target="eecount"/>
</target>

<target name="pecount" unless="ee">
    <exec executable="sh">
        <arg value="config/resultCount.sh"/>
    </exec>
</target>
<target name="eecount" if="ee">
    <exec executable="sh">
        <arg value="eeconfig/eeresultCount.sh"/>
    </exec>
</target>

<target name="create-report">
<echo message="Comparing results with expected results"/>
    <xslt style="${stylesheet}"
            in="${xmlfile}" out="${htmlfile}"
            basedir="." destdir="." />
    <!-- antcall target="report-java"/ -->
</target>

<target name="report-java">
<antcall target="pecount-java"/>
<antcall target="eecount-java"/>
</target>

<target name="compile-report">
  <antcall target="compile-common">
       <param name="src" value="${env.APS_HOME}/util/results"/>
  </antcall>
</target>

<target name="pecount-java" depends="init-common,compile-report" unless="ee">
    <java classname="ResultsProducer" fork="true" failonerror="true" maxmemory="128M" classpath="${build.classes.dir}">
        <arg value="${env.APS_HOME}/test_resultsValid.xml"/>
        <arg value="69"/>
        <arg value="${env.APS_HOME}/count.txt"/>
    </java>
</target>

<target name="eecount-java" depends="init-common,compile-report" if="ee">
    <java classname="ResultsProducer" fork="true" failonerror="true" maxmemory="128M" classpath="${build.classes.dir}">
        <arg value="${env.APS_HOME}/test_resultsValid.xml"/>
        <arg value="69"/>
        <arg value="${env.APS_HOME}/count.txt"/>
    </java>
</target>
