<?xml version="1.0" encoding="UTF-8"?>
<!--
   Primary build file for Composer archive creation.

   Note that several properties will be set automatically during the deployable
   building process. These are as follows:

   Property Name                 Description
	=============				      ===========
   <archive_type>.filename       the filename of a specific archive type
                                 (archive_type is determined by the handler's
                                 getArchiveType() method)
   shouldcreate.<archive_type>   indicates whether an archive of specified type
                                 should be generated
                                 (archive_type is determined by the handler's
                                 getArchiveType() method)
-->
<project
    basedir="C:\Development\IntelliJ Projects\ComposerIDM2\Current\ComposerDriverShim\ActionModelSampleDriver\ComposerSkeletonDriver\staging"
    default="jar" name="Composer Archive Generator">
    <property name="server.host" value="localhost:8052"/>
    <property name="server.type" value="Novell 5.0 or higher"/>
    <property name="resource.role" value=""/>
    <property name="resource.url" value="resources"/>
    <property name="context" value="com/novell/idm/driver"/>
    <property name="systemlib.dir" value="C:\Program Files\Novell\exteNd5\Composer\Designer\lib"/>
    <property name="base.url" value="ComposerSkeletonDriver"/>
    <property name="profile.name" value="ComposerSkeletonDriver"/>
    <property name="archive" value="ComposerSkeletonDriver"/>
    <property name="staging.dir" value="C:\Development\IntelliJ Projects\ComposerIDM2\Current\ComposerDriverShim\ActionModelSampleDriver\ComposerSkeletonDriver\staging"/>
    <property name="project.dir" value="C:\Development\IntelliJ Projects\ComposerIDM2\Current\ComposerDriverShim\ActionModelSampleDriver\ComposerSkeletonDriver"/>
    <property name="process.components" value="false"/>
    <!--
      Prebuild
   -->
    <target name="prebuild">
        <!-- fail if profile name is not specified -->
        <fail unless="profile.name">Profile name not specified: use -Dprofile.name=xxx</fail>
        <mkdir dir="${staging.dir}"/>
        <mkdir dir="${staging.dir}/archives"/>
        <mkdir dir="${staging.dir}/descriptors"/>
        <mkdir dir="${staging.dir}/includes"/>
        <mkdir dir="${staging.dir}/includes/ear"/>
        <!--Unzip javascripts.jar file -->
        <unzip dest="${staging.dir}" src="${systemlib.dir}/xformjs.jar"/>
        <!--Unzip Composer-related JSP jar file -->
        <unzip dest="${staging.dir}" src="${systemlib.dir}/xcJSP.jar"/>
        <!-- Copy jar resources to the includes directory -->
        <taskdef classname="com.sssw.b2b.dt.deploy2.j2ee.ant.GVAntJarResourcesTask" name="jarresources"/>
        <taskdef classname="com.sssw.b2b.dt.deploy2.j2ee.ant.GVAntProjectVarTask" name="projectvariables"/>
        <projectvariables profile="${profile.name}"/>
    </target>
    <!--
      Create Composer JAR
   -->
    <target depends="prebuild" description="Creates a Composer JAR" name="jar">
        <!-- check that archive name has been specified -->
        <fail unless="archive">Archive name not specified: use -Darchive=xxx</fail>
        <!-- create Composer JAR -->
        <zip encoding="UTF-8" zipfile="${staging.dir}/archives/${archive}.jar">
            <zipfileset casesensitive="false" dir="${project.dir}/composer/"
                excludes="${project.dir}/composer/jar/**,**/PROJECT.xml" prefix="${context}"/>
            <zipfileset casesensitive="false" dir="${staging.dir}/project_variables/"/>
        </zip>
    </target>
    <!--
      Create deployables
   -->
    <target name="deployables">
        <!-- fail if server name is not specified -->
        <fail unless="server.type">Server name not specified: use -Dserver.type=xxx</fail>
        <taskdef classname="com.sssw.b2b.rt.deploy2.j2ee.ant.GNVAntDeployablesTask" name="deployables"/>
        <deployables/>
    </target>
    <!--
      Adds Jar Resources to includes and sets Manifest classpath
      (if EAR is being created)
   -->
    <target if="shouldcreate.ear" name="addjars">
        <!-- Copy jar resources to the includes directory -->
        <jarresources todir="${staging.dir}/includes/ear"/>
        <!-- Set the manifest classpath -->
        <property location="${staging.dir}/includes/ear/" name="jars"/>
        <fileset dir="${jars}" id="jar.resources">
            <include name="*.jar"/>
        </fileset>
        <pathconvert dirsep="" pathsep=" " property="manifest.cp" refid="jar.resources">
            <map from="${jars}" to=""/>
        </pathconvert>
    </target>
    <!--
      Pre-WAR target (copies Composer JAR into WEB-INF/lib if an EAR won't
      be created) Adds Jar resources to WEB-INF/lib.
   -->
    <target name="prewar" unless="shouldcreate.ear">
        <copy file="${staging.dir}/archives/${archive}.jar" todir="${staging.dir}/includes/war/WEB-INF/lib"/>
        <jarresources todir="${staging.dir}/includes/war/WEB-INF/lib"/>
        <property name="manifest.cp" value=""/>
    </target>
    <!--
      Create WAR
   -->
    <target depends="jar,addjars,prewar,deployables" description="Creates a Composer WAR"
        if="shouldcreate.war" name="war">
        <jar destfile="${staging.dir}/archives/${war.filename}">
            <zipfileset dir="${staging.dir}/descriptors/war" includes="*.xml" prefix="WEB-INF"/>
            <zipfileset dir="${staging.dir}/archives" includes="composer.jar" prefix="WEB-INF/lib"/>
            <zipfileset dir="${staging.dir}/includes/war" includes="**"/>
            <zipfileset dir="${staging.dir}/javascripts/" prefix="javascripts"/>
            <zipfileset dir="${staging.dir}/jsp/" prefix="jsp"/>
            <manifest>
                <attribute name="Class-Path" value="${archive}.jar ${manifest.cp}"/>
            </manifest>
        </jar>
    </target>
    <!--
      Create EJB JAR
   -->
    <target depends="prebuild,deployables" if="shouldcreate.ejbjar" name="ejbjar">
        <!-- Create the ejb jar -->
        <jar destfile="${staging.dir}/archives/${ejbjar.filename}">
            <zipfileset dir="${staging.dir}/descriptors/ejbjar" includes="*.xml,*.xmi" prefix="META-INF"/>
            <zipfileset dir="${staging.dir}/includes/ejbjar" includes="**"/>
            <manifest>
                <attribute name="Class-Path" value="${archive}.jar ${manifest.cp}"/>
            </manifest>
        </jar>
    </target>
    <!--
      Create Composer iWay RAR. 
      This is a template. Each deployable will replace - -iway-rar- - with its own name
   -->
    <!--
      Create EAR
   -->
    <target depends="jar,deployables,war,ejbjar" description="Creates a Composer EAR" if="shouldcreate.ear" name="ear">
        <!-- Create Composer EAR -->
        <jar destfile="${staging.dir}/archives/${ear.filename}">
            <zipfileset dir="${staging.dir}/descriptors/ear" includes="*.xml" prefix="META-INF"/>
            <zipfileset dir="${staging.dir}/includes/ear" includes="**"/>
            <zipfileset dir="${staging.dir}/archives" includes="${archive}.jar,${war.filename},${ejbjar.filename},*.rar"/>
        </jar>
    </target>
</project>
