<!--

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

-->

<!DOCTYPE project [
  <!ENTITY common SYSTEM "../../../../config/common.xml">
  <!ENTITY testcommon SYSTEM "../../../../config/properties.xml">
  <!ENTITY database SYSTEM "../../config/database.xml">
]>

<project name="connector1.5 MDB" default="all" basedir=".">

  <property name="j2ee.home" value="../../.." />
  <property name="earfile" value="generic-embedded.ear" />


  <!-- include common.xml and testcommon.xml -->
  &database;
  &common;
  &testcommon;

  <target name="all" depends="init-common, clean-common">
    <ant dir="src" inheritAll="false" target="all" />
    <antcall target="build-ear" />
  </target>

  <target name="build-ear">

    <delete file="${assemble.dir}/generic-embeddedApp.ear" />
    <mkdir dir="${assemble.dir}" />
    <mkdir dir="${build.classes.dir}/META-INF" />
    <ear earfile="${assemble.dir}/generic-embeddedApp.ear" appxml="META-INF/application.xml">
      <fileset dir="${assemble.dir}">
        <include name="*.jar" />
        <include name="*.war" />
      </fileset>
      <fileset dir="../ra">
        <include name="*.rar" />
      </fileset>
      <fileset dir="${env.APS_HOME}/lib">
        <include name="reporter.jar" />
      </fileset>
    </ear>

  </target>

  <target name="setupJdbc" depends="init-common">
    <antcall target="create-jdbc-conpool-connector">
      <param name="db.class" value="org.apache.derby.jdbc.ClientXADataSource" />
      <param name="jdbc.conpool.name" value="jdbc-pointbase-pool1" />
      <param name="jdbc.resource.type" value="javax.sql.XADataSource" />
    </antcall>
    <antcall target="create-jdbc-resource-common">
      <param name="jdbc.conpool.name" value="jdbc-pointbase-pool1" />
      <param name="jdbc.resource.name" value="jdbc/Derby" />
    </antcall>

    <antcall target="execute-sql-connector">
      <param name="sql.file" value="createdb.sql" />
    </antcall>
  </target>

  <target name="unsetJdbc" depends="init-common">
    <antcall target="delete-jdbc-resource-common">
      <param name="jdbc.resource.name" value="jdbc/Derby" />
    </antcall>
    <antcall target="delete-jdbc-connpool-common">
      <param name="jdbc.conpool.name" value="jdbc-pointbase-pool1" />
    </antcall>
  </target>

  <target name="deploy-ear" depends="init-common">
    <antcall target="deploy-common">
      <param name="appname" value="generic-embedded" />
    </antcall>
  </target>

  <target name="undeploy" depends="init-common">
    <antcall target="undeploy-common">
      <param name="deployedapp.name" value="generic-embeddedApp" />
    </antcall>
  </target>

  <target name="clean">
    <antcall target="clean-common" />
  </target>
</project>
