<!--/*******************************************************************************
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
*   Ant naming conventions:
*   - regardless of the actual OS platform,'/' is the directory separator
*     (Ant will convert as appropriate).
*   - multi-word properties use periods '.'
*   - multi-word targets use hyphens '-'
*   - multi-word macros use underscores '_'
*   - multi-word macro attributes are concatenated
*     e.g. 'runpathref'
*   - multi-word tasks (taskdef) names are concatenated
*     e.g. 'validateconnection'
*   - OS environment variables are in ALLCAPS and have 'env' as a prefix
*     e.g. ${env.XXX}.
*   - Ant properties are lower case.
*
* Contributors:
*     yipzhao - initial implementation
#******************************************************************************/-->

<!-- This ant project includes the following tasks:
        - websphere-install  : adds jars
        - websphere-setup    : removes and creates datasource and shared library
        - websphere-start    : starts server
        - websphere-stop     : stops server
        - websphere-deploy   : deploys ear
        - websphere-undeploy : undeploys ear
-->

<project name="Eclipse Persistence Services JPA WebSphere Testing" basedir=".">

    <!-- Allows a user to overide certain user specific properties. -->
    <property file="${user.home}/websphere.properties"/>
    <property file="./websphere.properties"/>

    <property name="suffix" value="sh"/>

    <condition property="is.as">
        <contains string="${server.version}" substring="as"/>
    </condition>

    <condition property="is.nd">
        <contains string="${server.version}" substring="nd"/>
    </condition>

    <!-- This copy eclipselink.jar, junit.jar to WebSphere server lib/ext. -->
    <target name="websphere-install">
        <copy file="${junit.lib}" todir="${was.home}/lib/ext"/>
        <copy file="${eclipselink.jar.dir}/eclipselink.jar" todir="${was.home}/lib/ext"/>
        <copy file="${oracle.extensions.depend.dir}/${oracle.sdoapi.jar}" todir="${was.home}/lib/ext"/>
        <copy file="${jpatest.2.sdo.plugins.dir}/${commonj.sdo.jar}" todir="${was.home}/lib/ext" overwrite="true"/>
    </target>

    <!-- Start the server. -->
    <target name="websphere-start">
        <echo message="WebSphere Server is Starting......"/>
        <antcall target="websphere-start-as" inheritRefs="true"/>
        <antcall target="websphere-start-nd" inheritRefs="true"/>
        <echo message="Finish Starting WebSphere Server."/>
    </target>

    <!-- Start the AS edition server. -->
    <target name="websphere-start-as" if="is.as">
        <exec executable="${was.home}/bin/startServer.${suffix}">
            <arg value="server1"/>
            <arg value="-Dis.JTA=${is.JTA}"/>
            <arg value="-Dejb.lookup=${ejb.lookup}"/>
        </exec>
    </target>

    <!-- Start the ND edition server. -->
    <target name="websphere-start-nd" if="is.nd">
        <echo message="Starting Deployment Manager......"/>
        <exec executable="${was.home}/profiles/Dmgr01/bin/startManager.${suffix}"/>
        <echo message="Starting Node......"/>
        <exec executable="${was.home}/profiles/AppSrv01/bin/startNode.${suffix}"/>
        <echo message="Starting Server......"/>
        <exec executable="${was.home}/profiles/AppSrv01/bin/startServer.${suffix}">
            <arg value="server1"/>
            <arg value="-Dis.JTA=${is.JTA}"/>
            <arg value="-Dejb.lookup=${ejb.lookup}"/>
        </exec>
    </target>

    <!--
        This target is to create datasource, shared library for running JPA tests on the WebSphere server.
        Note: WebSphere server must be running.
    -->
    <target name="websphere-setup">
        <echo message="*****Config WebSphere Server*****"/>
        <copy overwrite="true" file="${was.jython.scripts.dir}/configWebSphere.py" tofile="${was.home}/bin/configWebSphere.py"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@oracleDriver@" value="${oracle.extensions.jar.dir}/ojdbc7.jar"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@nodeName@" value="${nodeName}"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@serverName@" value="${serverName}"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@dbUser@" value="${db.user}"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@dbPassword@" value="${db.pwd}"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@dbURL@" value="${db.url}"/>
        <antcall target="set-transaction-type-for-non-jta-ds" inheritRefs="true"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@eclipselinkLibDir@" value="${eclipselink.jar.dir}"/>
        <replace file="${was.home}/bin/configWebSphere.py" token="@oracleExtensionLibDir@" value="${oracle.extensions.jar.dir}"/>
        <sleep seconds="20"/>
        <exec executable="${was.home}/bin/wsadmin.${suffix}">
              <arg line="-lang jython -user ${server.user} -password ${server.pwd} -f ${was.home}/bin/configWebSphere.py"/>
        </exec>
    </target>

    <target name="set-transaction-type-for-non-jta-ds" if="is.nonjta.datasource">
        <replace file="${was.home}/bin/configWebSphere.py" token="@nonTransactionalDS@" value="true"/>
    </target>

    <!-- websphere-setup removes and recreates datasource and shared library, so we don't need to do anything in websphere-reset. -->
    <target name="websphere-reset">
    </target>

    <!-- Stop the server. -->
    <target name="websphere-stop">
        <echo message="WebSphere Server is Stopping......"/>
        <antcall target="websphere-stop-as" inheritRefs="true"/>
        <antcall target="websphere-stop-nd" inheritRefs="true"/>
        <delete file="${was.home}/lib/ext/eclipselink.jar" failonerror="false"/>
        <echo message="Finish Stopping WebSphere Server."/>
    </target>

    <!-- Stop the AS edition server. -->
    <target name="websphere-stop-as" if="is.as">
        <exec executable="${was.home}/bin/stopServer.${suffix}">
            <arg value="server1"/>
        </exec>
    </target>

    <!-- Stop the ND edition server. -->
    <target name="websphere-stop-nd" if="is.nd">
        <echo message="Stoping Server......"/>
        <exec executable="${was.home}/profiles/AppSrv01/bin/stopServer.${suffix}">
            <arg value="server1"/>
        </exec>
        <echo message="Stoping Node......"/>
        <exec executable="${was.home}/profiles/AppSrv01/bin/stopNode.${suffix}"/>
        <echo message="Stoping Deployment Manager......"/>
        <exec executable="${was.home}/profiles/Dmgr01/bin/stopManager.${suffix}"/>
    </target>

    <!--
        Deploy the application ear to the server.
        Note: WebSphere server must be running.
    -->
    <target name="websphere-deploy">
        <echo message="*****Deploy ${application.name} on WebSphere Server*****"/>
        <copy overwrite="true" file="${was.jython.scripts.dir}/installApps.py" tofile="${was.home}/bin/installApps.py"/>
        <replace file="${was.home}/bin/installApps.py" token="@serverVersion@" value="${server.version}"/>
        <replace file="${was.home}/bin/installApps.py" token="@cellName@" value="${cellName}"/>
        <replace file="${was.home}/bin/installApps.py" token="@nodeName@" value="${nodeName}"/>
        <replace file="${was.home}/bin/installApps.py" token="@serverName@" value="${serverName}"/>
        <replace file="${was.home}/bin/installApps.py" token="@appName@" value="${application.name}"/>
        <property name="ear.name" value="${application.name}.ear"/>
        <replace file="${was.home}/bin/installApps.py" token="@ear@" value="${ear.name}"/>
        <sleep seconds="20"/>
        <exec executable="${was.home}/bin/wsadmin.${suffix}">
            <arg line="-lang jython -user ${server.user} -password ${server.pwd} -f ${was.home}/bin/installApps.py"/>
        </exec>
    </target>

    <!--
        Undeploy the application ear to the server.
        Note: WebSphere server must be running.
    -->
    <target name="websphere-undeploy">
        <echo message="*****Undeploy ${application.name} on WebSphere Server*****"/>
        <copy overwrite="true" file="${was.jython.scripts.dir}/unInstallApps.py" tofile="${was.home}/bin/unInstallApps.py"/>
        <replace file="${was.home}/bin/unInstallApps.py" token="@appName@" value="${application.name}"/>
        <sleep seconds="20"/>
        <exec executable="${was.home}/bin/wsadmin.${suffix}">
            <arg line="-lang jython -user ${server.user} -password ${server.pwd} -f ${was.home}/bin/unInstallApps.py"/>
        </exec>
    </target>

</project>
