<!--

    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

-->

<!--
<!DOCTYPE project [
  <!ENTITY common SYSTEM "file:../../../config/common.xml">
  <!ENTITY testcommon SYSTEM "file:../../../config/properties.xml">
]>
-->
<!-- ============================ -->
<!-- ORACLE SETUP FOR CONPOOL     -->
<!-- ============================ -->
<!--
<project name="oracle-db-settings" default="create-jdbc-conpool-connector" basedir=".">

&common;
&testcommon;
-->

<target name="create-jdbc-conpool-connector" depends="default-jdbc-conpool, oracle-jdbc-conpool"/>

<target name="default-jdbc-conpool" depends="init-common" unless="oracle">
        <antcall target="create-jdbc-connpool-common"/>
</target>

<target name="oracle-jdbc-conpool" depends="init-common" if="oracle">
<echo message="creating jdbc connection pool ${jdbc.conpool.name}"
    level="verbose"/>
    <exec executable="${ASADMIN}" failonerror="false">
        <arg line="create-jdbc-connection-pool"/>
        <arg line="--datasourceclassname ${db.class}"/>
        <arg line="--restype ${jdbc.resource.type}"/>
        <arg line="--target ${appserver.instance.name}"/>
        <arg line="${as.props}"/>
        <arg line="${jdbc.conpool.name}"/>
    </exec>
    <antcall target="set-oracle-props">
        <param name="pool.type" value="jdbc"/>
        <param name="conpool.name" value="${jdbc.conpool.name}"/>
    </antcall>
</target>

<target name="set-oracle-props" depends="init-common" if="oracle">
  <property file="${env.APS_HOME}/devtests/connector/config/oracle.properties"/>
  <antcall target="asadmin-common-ignore-fail">
    <param name="admin.command" value="set" />
    <param name="operand.props"
      value="${resources.dottedname.prefix}.${pool.type}-connection-pool.${conpool.name}.property.ServerName=${oracleForConnector.host}"/>
  </antcall>
  <antcall target="asadmin-common-ignore-fail">
    <param name="admin.command" value="set" />
    <param name="operand.props"
      value="${resources.dottedname.prefix}.${pool.type}-connection-pool.${conpool.name}.property.PortNumber=${oracleForConnector.port}" />
  </antcall>
  <antcall target="asadmin-common-ignore-fail">
    <param name="admin.command" value="set" />
    <param name="operand.props"
      value="${resources.dottedname.prefix}.${pool.type}-connection-pool.${conpool.name}.property.DatabaseName='jdbc:sun:oracle://${oracleForConnector.host}:${oracleForConnector.port};SID=${oracleForConnector.sid}' " />
  </antcall>
  <antcall target="asadmin-common-ignore-fail">
    <param name="admin.command" value="set" />
    <param name="operand.props"
      value="${resources.dottedname.prefix}.${pool.type}-connection-pool.${conpool.name}.property.ClassName=${oracleForConnector.dbclass}" />
  </antcall>
  <antcall target="asadmin-common-ignore-fail">
    <param name="admin.command" value="set" />
    <param name="operand.props"
      value="${resources.dottedname.prefix}.${pool.type}-connection-pool.${conpool.name}.property.SID=${oracleForConnector.sid}" />
  </antcall>
  <antcall target="asadmin-common-ignore-fail">
    <param name="admin.command" value="set" />
    <param name="operand.props"
      value="${resources.dottedname.prefix}.${pool.type}-connection-pool.${conpool.name}.property.User=${oracleForConnector.user}" />
  </antcall>
  <antcall target="asadmin-common-ignore-fail">
    <param name="admin.command" value="set" />
    <param name="operand.props"
      value="${resources.dottedname.prefix}.${pool.type}-connection-pool.${conpool.name}.property.Password=${oracleForConnector.pwd}" />
  </antcall>
</target>


<target name="execute-sql-connector" depends="init-common, default-sql, sql-oracle"/>

<target name="default-sql" depends="init-common" unless="oracle" >
        <antcall target="execute-sql-common"/>
</target>

<target name="sql-oracle" depends="init-common" if="oracle">
        <property file="${env.APS_HOME}/devtests/connector/config/oracle.properties"/>
        <property name="domain.lib.ext" value="${env.S1AS_HOME}/domains/domain1/lib/ext"/>
        <property name="oracle.driver.path" value="${domain.lib.ext}/smoracle.jar:${domain.lib.ext}/smbase.jar:${domain.lib.ext}/smresource.jar:${domain.lib.ext}/smutil.jar:${domain.lib.ext}/smspy.jar:${domain.lib.ext}/Oranxo.jar"/>
        <echo message="${oracleForConnector.driver}"/>
<echo message="Executing sql statement at ${basedir} from ${sql.file}"
    level="verbose"/>
  <sql
    driver="${oracleForConnector.driver}"
    url="${oracleForConnector.url}"
    userid="${oracleForConnector.user}"
    password="${oracleForConnector.pwd}"
    src="${sql.file}"
    onerror="continue"
    print="yes"
    classpath="${oracle.driver.path}"/>
</target>
<!--
</project>
-->
