<?xml version="1.0"?>
<!DOCTYPE project [
<!--

    Copyright (c) 2017, 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

-->

<!ENTITY commonSetup SYSTEM "./../../../../config/common.xml">
<!ENTITY commonBuild SYSTEM "./../../../../config/properties.xml">
<!ENTITY testproperties SYSTEM "./build.properties">
]>

<project name="EnvEntryScope" basedir="." default="usage">

  &commonSetup;
  &commonBuild;
  &testproperties;

    
  <target name="all" depends="build,setup-jdbc,setup-sql,deploy,runweb,undeploy,cleanup-jdbc,cleanup-sql"/>
  
  <target name="clean" depends="init-common">
    <delete dir="${build.classes.dir}"/>
    <delete dir="${assemble.dir}"/>
  </target>
  
  <target name="compile" depends="clean">
    <antcall target="compile-common">
      <param name="src" value="ejb"/>
    </antcall>

    <antcall target="compile-common">
      <param name="src" value="servlet"/>
    </antcall>
 </target>
<!--
  <target name="compile-servlet" depends="init-common">
    <antcall target="compile-common">
      <param name="src" value="ejb"/>
    </antcall>

    <antcall target="compile-common">
      <param name="src" value="servlet"/>
    </antcall>
  </target>
-->  
  <!--
  <target name="build" depends="compile">
    <antcall target="build-ear-war"/>
  </target>
  -->
  <target name="build" depends="compile">
    <antcall target="ejb-jar-common">
      <param name="ejbjar.classes" value="**/*.class"/>
    </antcall>
    <antcall target="package-war-local">
      <param name="war.classes" value="${build.classes.dir}"/>
      <param name="war.file" value="${assemble.dir}/${appname}-web.war"/>
    </antcall>
    <antcall target="ear-common"/>
  </target>

  <target name="package-war-local" >
  <!--
    <delete dir="${build.classes.dir}"/>
    <mkdir dir="${build.classes.dir}"/>
    <antcall target="compile-servlet"/>
  -->  
    <echo message="my build classes dir is:${build.classes.dir}"/>
    <delete file="${war.file}"/>
    <mkdir dir="${build.classes.dir}/tmp"/>
    <mkdir dir="${build.classes.dir}/tmp/WEB-INF"/>
    <mkdir dir="${build.classes.dir}/tmp/WEB-INF/classes"/>
    <copy file="${sun-web.xml}"
      tofile="${build.classes.dir}/tmp/WEB-INF/sun-web.xml" failonerror="false"/>
    <copy file="${web.xml}"
      tofile="${build.classes.dir}/tmp/WEB-INF/web.xml"/>
    <copy todir="${build.classes.dir}/tmp/WEB-INF/classes">
    <fileset dir="${war.classes}">
      <include name="**/*.class"/>
    </fileset>
    </copy>
    <echo message="Creating war file ${war.file}"/>
    <jar jarfile="${war.file}" update="true">
      <fileset dir="${build.classes.dir}/tmp/" casesensitive="true">
        <include name="WEB-INF/web.xml"/>
        <include name="WEB-INF/sun-web.xml"/>
        <include name="WEB-INF/**/bmservlet*.class"/>
      </fileset>
    </jar>
    <echo message="created war file ${war.file}"/>
    <delete dir="${build.classes.dir}/tmp/WEB-INF" failonerror="false"/>
  </target>
  
  <target name="build-ear-war" depends="ejb-jar-common">
    <antcall target="package-war-local">
      <param name="war.classes" value="${build.classes.dir}"/>
      <param name="war.file" value="${assemble.dir}/${appname}-web.war"/>
    </antcall>
    <delete file="${assemble.dir}/${appname}.ear"/>
    <mkdir dir="${assemble.dir}"/>
    <mkdir dir="${assemble.dir}/META-INF"/>
    <mkdir dir="${assemble.dir}/lib"/>
    <copy file="${sun-application.xml}"
      tofile="${assemble.dir}/META-INF/sun-application.xml"
      failonerror="false"/>
    <ear earfile="${assemble.dir}/${appname}App.ear" appxml="${application.xml}">
      <fileset dir="${assemble.dir}" 
        includes="*.jar,*.war,META-INF/sun-application.xml,lib/reporter.jar"/>
    </ear>
  </target>

  <target name="setup-jdbc" >
    <!--
    <antcall target="create-jdbc-xa-connpool-common" >
      <param name="db.url" value="${db.url2}"/>
      <param name="db.user" value="${db.user2}"/>
      <param name="db.pwd" value="${db.pwd2}"/>
      <param name="db.xaclass" value="${db.xaclass2}"/>
      <param name="db.name" value="${db.name2}"/>
      <param name="db.sid" value="${db.sid2}"/>
      <param name="db.host" value="${db.host2}"/>
      <param name="jdbc.conpool.name" value="jts-xa-pool2"/>
    </antcall>
    -->
    <antcall target="create-jdbc-oracle-xa-pool">
      <param name="poolname" value="jts-xa-pool2"/>
      <param name="ora.user" value="${ora.user2}"/>
      <param name="ora.pwd" value="${ora.pwd2}"/>
      <param name="ora.sid" value="${ora.sid2}"/>
      <param name="ora.url" value="${ora.url2}"/>
    </antcall>

    <antcall target="create-jdbc-resource-common" >
      <param name="jdbc.conpool.name" value="jts-xa-pool2"/>
      <param name="jdbc.resource.name" value="jdbc/oracleds2"/>
    </antcall> 
    
    <antcall target="create-jdbc-oracle-xa-pool" >
      <param name="poolname" value="jts-xa-pool1"/>
      <param name="ora.user" value="${ora.user1}"/>
      <param name="ora.pwd" value="${ora.pwd1}"/>
      <param name="ora.sid" value="${ora.sid1}"/>
      <param name="ora.url" value="${ora.url1}"/>
    </antcall>
    
    <antcall target="create-jdbc-resource-common" >
      <param name="jdbc.conpool.name" value="jts-xa-pool1"/>
      <param name="jdbc.resource.name" value="jdbc/oraclethird"/>
    </antcall>
  </target>
  
  <target name="cleanup-jdbc" >
    <antcall target="delete-jdbc-resource-common" >
      <param name="jdbc.resource.name" value="jdbc/oracleds2"/>
    </antcall>

    <antcall target="delete-jdbc-resource-common" >
      <param name="jdbc.resource.name" value="jdbc/oraclethird"/>
    </antcall>
    
    <antcall target="delete-jdbc-connpool-common" >
      <param name="jdbc.conpool.name" value="jts-xa-pool2"/>
    </antcall>
    
    <antcall target="delete-jdbc-connpool-common" >
      <param name="jdbc.conpool.name" value="jts-xa-pool1"/>
    </antcall>
  </target>
  
  <target name="setup-sql" >
    <echo message="Executing sql statement at from ${create.sql.file1}"/>
    <sql
      driver="${db.driver}"
      url="${ora.url1}"
      userid="${ora.user1}"
      password="${ora.pwd1}"
      src="${create.sql.file1}"
      onerror="continue"
      print="yes"
      classpath="${dbdriver.classpath}"/>
    
    <echo message="Executing sql statement at from ${create.sql.file2}"/>
    <sql
      driver="${db.driver}"
      url="${ora.url2}"
      userid="${ora.user2}"
      password="${ora.pwd2}"
      src="${create.sql.file2}"
      onerror="continue"
      print="yes"
      classpath="${dbdriver.classpath}"/>

  </target>

  <target name="cleanup-sql" depends="init-common">
    <echo message="Executing sql statement at from ${drop.sql.file1}"/>
    <sql
      driver="${db.driver}"
      url="${ora.url1}"
      userid="${ora.user1}"
      password="${ora.pwd1}"
      src="${drop.sql.file1}"
      onerror="continue"
      print="yes"
      classpath="${dbdriver.classpath}"/>
    
    <echo message="Executing sql statement at from ${drop.sql.file2}"/>
    <sql
      driver="${db.driver}"
      url="${ora.url2}"
      userid="${ora.user2}"
      password="${ora.pwd2}"
      src="${drop.sql.file2}"
      onerror="continue"
      print="yes"
      classpath="${dbdriver.classpath}"/>

  </target>
  
  <target name="deploy" depends="init-common">
    <antcall target="deploy-common"/>
  </target>
  
  
  <target name="undeploy" depends="init-common">
    <antcall target="undeploy-common"/>
  </target>
  
  <target name="usage">
    <antcall target="usage-common"/>
  </target>
  
  <!-- 
  Tomcat's GTest tool for webtests
  -->
  <target name="runweb" depends="init-common">
    <taskdef name="gtest" classname="org.apache.tomcat.task.GTest" 
        classpath="${env.APS_HOME}/lib/testdriversecurity.jar:${env.APS_HOME}/lib/commons-logging.jar"/>
    <property name="wgdir" value="${env.APS_HOME}/devtests/jdbc/transactions/test2"/>
    <gtest request="GET /txnstatus-test2/bmservlet HTTP/1.0" 
      debug="9"
      firstTask="true"
      lastTest="true"
      lastCase="true"
      lastTask="true"
      host="${http.host}"
      port="${http.port}"
      resultFileName="${env.APS_HOME}/as7-jts-results.xml"
      testSession="jts-as7-timeout-test1"
      goldenFile="${env.APS_HOME}/devtests/jdbc/transactions/test2/GoldenFile.html"
      testSuiteId="txnstatus-test2"
      testSuiteName="txnstatus-test2"
      testSuiteDescription="txnstatus-test2"
      testId="txnstatus-test2"
      testName="txnstatus-test2"
      testDescription="txnstatus-test2"
      testCaseId="txnstatus-test2"
      testCaseName="txnstatus-test2"
      testCaseDescription="txnstatus-test2"
      testStrategy="txnstatus-test2"/>
  </target>  

  <target name="create-jdbc-oracle-xa-pool" depends="init-common">
    <antcall target="create-jdbc-connpool-common" >
      <param name="jdbc.resource.type" value="javax.sql.XADataSource"/>
      <param name="jdbc.conpool.name" value="${poolname}"/>
      <param name="db.class" value="${ora.xaclass}"/>
      <param name="db.user" value="${ora.user}"/>
      <param name="db.pwd" value="${ora.pwd}"/>
      <param name="db.url" value="${ora.sid}"/>
    </antcall>

    <antcall target="asadmin-common">
      <param name="admin.command" value="set"/>
      <param name="operand.props" value="${resources.dottedname.prefix}.jdbc-connection-pool.${poolname}.property.URL=${ora.url}"/>
    </antcall>
  </target>

</project>
