<!--

    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>
-->
