<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<project default="compile-core" basedir="." name="wookie" xmlns:ivy="antlib:org.apache.ivy.ant">
  <description>
    Ivy based build system for Apache Wookie.
  </description>
  
  <property file="local.build.properties"/> 
  <property file="build.properties"/>
  <property name="wookie.root.dir" location="."/>
  <property name="wookie.widgets.dir" location="./widgets"/>
  <property name="db.name" value="widgetDB" />

  <property name="etc.dir" location="etc" />

  <!-- JPA annotation processor -->
  <property name="java.source.version" value="1.6"/>
  <property name="java.target.version" value="1.6"/>
  <property name="compilerargs" value="-Aopenjpa.metamodel=true" />

  <import file="ant/ivy-webapp-common.xml"/>
  <import file="ant/ivy-release-common.xml"/>
  <property file="${project.core.src.dir}/widgetserver.properties"/>
  <property name="servletEngine.repository.dir" location="${servletEngine.webapp.dir}/../repository"/>
	
  <target name="run" depends="deploy-webapp" description="Run in standalone mode">    
  	<ant antfile="ant/ivy-java-common.xml" target="run"/>
  </target>

  <target name="post-deploy-webapp">  
    <!-- configure web.xml -->
    <condition property="deploy.webapp.jpa" value="true">
      <or>
        <equals arg1="${wookie.persistence.manager.type}" arg2="jpa"/>
        <not><isset property="wookie.persistence.manager.type"/></not>
      </or>
    </condition>
    <condition property="deploy.webapp.jcr" value="true">
      <equals arg1="${wookie.persistence.manager.type}" arg2="jcr"/>
    </condition>
	<antcall target="post-deploy-webapp-jpa"/>    
	<antcall target="post-deploy-webapp-jcr"/>  
  	<!-- deploy features -->
	<antcall target="post-deploy-webapp-features-extra"/>  
	<antcall target="post-deploy-webapp-features-scratchpad"/>  
  	<!-- deploy widgets -->
  	<delete dir="${widget.build.dir}"/>
	<antcall target="post-deploy-webapp-widgets-extra"/>  
	<antcall target="post-deploy-webapp-widgets-scratchpad"/>
  </target>
	
  <target name="post-deploy-webapp-widgets-extra" if="include.extra.widgets">
  	<subant antfile="build.xml" target="deploy-widget" inheritall="true">
  		<property name="deployToDev" value="true"/>
  	  	  <fileset dir="${wookie.widgets.dir}">
  	  	  	<include name="${widget.deploy.include}"/>
  	  	  	<exclude name="${widget.deploy.exclude}"/>
  	  	  	<exclude name="widget-template/build.xml"/>
  	  	  	<exclude name="templates/build.xml"/>
  	  	  </fileset>
  	  	</subant>
  </target>
	
  <target name="post-deploy-webapp-widgets-scratchpad" if="include.scratchpad.widgets">
    <subant antfile="build.xml" target="deploy-widget" inheritall="true">
    	<property name="deployToDev" value="true"/>
    	 <fileset dir="${user.dir}/scratchpad/widgets">
    	  	 <include name="${widget.deploy.include}"/>
    	  	 <exclude name="${widget.deploy.exclude}"/>
    	 </fileset>
    </subant>
   </target>

  <target name="post-deploy-webapp-features-extra" if="include.extra.features">
		<echo>deploying extra features</echo>
	    <mkdir dir="${servletEngine.webapp.dir}/${ant.project.name}/features"/>
	    <copy todir="${servletEngine.webapp.dir}/${ant.project.name}/features">
   		    <fileset dir="${user.dir}/features"/>
	    </copy>
  </target>

  <target name="post-deploy-webapp-features-scratchpad" if="include.scratchpad.features">
		<echo>deploying scratchpad features</echo>
		 <mkdir dir="${servletEngine.webapp.dir}/${ant.project.name}/features"/>
		 <copy todir="${servletEngine.webapp.dir}/${ant.project.name}/features">
	   		 <fileset dir="${user.dir}/scratchpad/features"/>
		 </copy>
  </target>
	
  <target name="post-deploy-webapp-jpa" if="deploy.webapp.jpa">
    <!-- configure JPA web.xml resource ref -->
	<copy file="${project.webapp.dir}/WEB-INF/web.xml"
          todir="${servletEngine.webapp.dir}/${ant.project.name}/WEB-INF"
          overwrite="true">
      <filterset>
        <filter token="RESOURCE_REF_DESCRIPTION" value="The JPA database connection."/>
        <filter token="RESOURCE_REF_NAME" value="jdbc/widgetdb"/>
        <filter token="RESOURCE_REF_TYPE" value="javax.sql.DataSource"/>
      </filterset>
	</copy>
    <!-- configure JPA widgetserver.properties settings -->
    <condition property="widgetserver.db.type" value="${wookie.db.type}" else="">
      <isset property="wookie.db.type"/>
    </condition>
	<copy file="${project.build.classes.dir}/widgetserver.properties"
          todir="${servletEngine.webapp.dir}/${ant.project.name}/WEB-INF/classes"
          overwrite="true">
      <filterset>
        <filter token="PERSISTENCE_MANAGER_CLASSNAME" value="org.apache.wookie.beans.jpa.JPAPersistenceManager"/>
        <filter token="DATABASE_TYPE" value="${widgetserver.db.type}"/>
        <filter token="REPOSITORY_USER" value=""/>
        <filter token="REPOSITORY_PASSWORD" value=""/>
        <filter token="REPOSITORY_ROOTPATH" value=""/>
        <filter token="REPOSITORY_WORKSPACE" value=""/>
      </filterset>
	</copy>
    <!-- deploy container libraries -->
    <condition property="deploy.webapp.container.lib" value="true">
      <and>
        <isset property="servletEngine.container.lib.dir"/>
        <isset property="jdbc.driver.path"/>
      </and>
    </condition>
	<antcall target="post-deploy-webapp-jdbc-driver"/>    
    <!-- deploy tomcat webapp context configuration -->
	<antcall target="post-deploy-webapp-context-conf-jpa"/>    
  </target>
  
  <target name="post-deploy-webapp-jdbc-driver" if="deploy.webapp.container.lib">
    <copy file="${jdbc.driver.path}" todir="${servletEngine.container.lib.dir}"/>
  </target>

  <target name="post-deploy-webapp-context-conf-jpa" if="servletEngine.context.conf.dir">
    <!-- configure JPA context.xml configuration -->
    <copy file="${etc.dir}/tomcat/conf/jpa-context.xml"
          tofile="${servletEngine.context.conf.dir}/${ant.project.name}.xml"
          overwrite="true">
      <filterset>
        <filter token="DATABASE_USER" value="${wookie.db.user}"/>
        <filter token="DATABASE_PASSWORD" value="${wookie.db.password}"/>
        <filter token="DATABASE_DRIVER" value="${wookie.db.driver}"/>
        <filter token="DATABASE_URI" value="${wookie.db.uri}"/>
      </filterset>
    </copy>
  </target>

  <target name="post-deploy-webapp-jcr" if="deploy.webapp.jcr">
  	<ant dir="modules/jcr" target="deploy-module" inheritAll="false"/>
  	
    <!-- configure JCR web.xml resource ref -->
	<copy file="${project.webapp.dir}/WEB-INF/web.xml"
          todir="${servletEngine.webapp.dir}/${ant.project.name}/WEB-INF"
          overwrite="true">
      <filterset>
        <filter token="RESOURCE_REF_DESCRIPTION" value="The JCR repository."/>
        <filter token="RESOURCE_REF_NAME" value="jcr/widgetrepo"/>
        <filter token="RESOURCE_REF_TYPE" value="javax.jcr.Repository"/>
      </filterset>
	</copy>
    <!-- configure JCR widgetserver.properties settings -->
    <condition property="widgetserver.repository.user" value="${wookie.repository.user}" else="">
      <isset property="wookie.repository.user"/>
    </condition>
    <condition property="widgetserver.repository.password" value="${wookie.repository.password}" else="">
      <isset property="wookie.repository.password"/>
    </condition>
    <condition property="widgetserver.repository.rootpath" value="${wookie.repository.rootpath}" else="">
      <isset property="wookie.repository.rootpath"/>
    </condition>
    <condition property="widgetserver.repository.workspace" value="${wookie.repository.workspace}" else="">
      <isset property="wookie.repository.workspace"/>
    </condition>
	<copy file="${project.build.classes.dir}/widgetserver.properties"
          todir="${servletEngine.webapp.dir}/${ant.project.name}/WEB-INF/classes"
          overwrite="true">
      <filterset>
        <filter token="PERSISTENCE_MANAGER_CLASSNAME" value="org.apache.wookie.beans.jcr.JCRPersistenceManager"/>
        <filter token="DATABASE_TYPE" value=""/>
        <filter token="REPOSITORY_USER" value="${widgetserver.repository.user}"/>
        <filter token="REPOSITORY_PASSWORD" value="${widgetserver.repository.password}"/>
        <filter token="REPOSITORY_ROOTPATH" value="${widgetserver.repository.rootpath}"/>
        <filter token="REPOSITORY_WORKSPACE" value="${widgetserver.repository.workspace}"/>
      </filterset>
	</copy>
    <!-- deploy tomcat webapp context configuration -->
	<antcall target="post-deploy-webapp-context-conf-jcr"/>
  </target>
	
  <target name="post-deploy-webapp-context-conf-jcr" if="servletEngine.context.conf.dir">
    <mkdir dir="${servletEngine.repository.dir}"/>
    <copy file="${etc.dir}/tomcat/conf/repository.xml"
          tofile="${servletEngine.repository.dir}/repository.xml"/>
    <copy file="${etc.dir}/tomcat/conf/jcr-context.xml"
          tofile="${servletEngine.context.conf.dir}/${ant.project.name}.xml"
          overwrite="true">
      <filterset>
        <filter token="REPOSITORY_DIR" value="${servletEngine.repository.dir}"/>
      </filterset>
    </copy>
  </target>

  <target name="deploy-widget">
  	<property name="deployToDev" value="true"/>
  	<input message="What is the short name of the widget you wish to deploy?" 
  		   addproperty="widget.shortname"/>
  	<ant antfile="${wookie.widgets.dir}/${widget.shortname}/build.xml" target="deploy-widget"/>
  </target>

  <target name="seed-widget" description="Create a new widget from a supplied template">
    <ant antfile="${wookie.widgets.dir}/build.xml" target="seed-widget"/>
  </target>
	
  <target name="build-widget">
  	<property name="deployToDev" value="true"/>
  	<input message="What is the short name of the widget you wish to build?" 
  		   addproperty="widget.shortname"/>
  	<ant antfile="${wookie.widgets.dir}/${widget.shortname}/build.xml" target="build-widget"/>
  </target>

  <target name="build-signer" description="Builds the digital signature client app">
    <ant dir="${wookie.digsig.client.w3c.dir}/java" target="publish-local" inheritAll="false"/>
  </target>

  <target name="local-publish-subprojects" description="Publishes all sub projects (i.e. java connector and parser projects) to the local repository found under user.home/.m2">
  	<!-- localy publish sub-projects -->
  	<ant dir="${wookie.connector.dir}/java" target="publish-local" inheritAll="false"/>
  	<ant dir="${wookie.parser.w3c.dir}/java" target="publish-local" inheritAll="false"/>
  </target>
	
  <target name="publish-subproject-artifacts-to-snapshot-repo" description="Publishes all sub projects (i.e. java connector and parser projects) to the apache snapshot repository">
	<!-- publish snapshot sub-projects -->
	<ant dir="${wookie.connector.dir}/java" target="publish-maven-snapshot-artifacts" inheritAll="false"/>
	<ant dir="${wookie.parser.w3c.dir}/java" target="publish-maven-snapshot-artifacts" inheritAll="false"/>
  </target>	
	
  <target name="publish-subproject-artifacts-to-release-repo" description="Publishes all sub projects (i.e. java connector and parser projects) to the apache release repository">
	<!-- publish staging/release sub-projects -->
	<ant dir="${wookie.connector.dir}/java" target="publish-maven-release-artifacts" inheritAll="false"/>
	<ant dir="${wookie.parser.w3c.dir}/java" target="publish-maven-release-artifacts" inheritAll="false"/>
  </target>		
  	
  <target name="pre-compile-core">
    <!-- build supported database schema scripts -->
    <ivy:cachepath pathid="project.ddlutils.class.path" conf="ddlutils" />
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="db2" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="derby" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="hsqldb" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="mssql" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="mysql" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="mysql5" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="oracle" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="oracle9" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="oracle10" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="postgresql" />
    </antcall>
    <antcall target="build-database-schema" inheritRefs="true">
      <param name="databasetype" value="sybase" />
    </antcall>
  </target>

  <target name="build-database-schema">
    <!-- build specified database schema script -->
    <taskdef classname="org.apache.ddlutils.task.DdlToDatabaseTask" name="ddlToDatabase"
             classpathref="project.ddlutils.class.path" />
    <mkdir dir="${project.build.classes.dir}/org/apache/wookie/beans/jpa" />
    <ddlToDatabase usedelimitedsqlidentifiers="false"
                   databasetype="${databasetype}"
                   schemafile="${etc.dir}/ddl-schema/wookie-schema.xml">
      <writeSchemaSqlToFile outputfile="${project.build.classes.dir}/org/apache/wookie/beans/jpa/${databasetype}-wookie-schema.sql"
                            dodrops="true"
                            alterdatabase="false"
                            failonerror="true" />
    </ddlToDatabase>
  </target>

  <target name="post-compile-core">
    <!-- JPA enhancement -->
	<path id="project.openjpa.class.path">
	  <path refid="project.core.class.path" />
	  <path location="${project.build.classes.dir}" />
	</path>
    <taskdef name="openJPAEnhancer" classname="org.apache.openjpa.ant.PCEnhancerTask"
             classpathref="project.openjpa.class.path" />
    <openJPAEnhancer directory="${project.build.classes.dir}/org/apache/wookie/beans/jpa/impl"
                     addDefaultConstructor="true" enforcePropertyRestrictions="true">
      <config propertiesFile="${project.build.classes.dir}/META-INF/persistence.xml" />
      <classpath>
        <path refid="project.openjpa.class.path" />
      </classpath>
    </openJPAEnhancer>
  </target>

  <target name="post-compile-test">
    <!-- run unit tests, (skip functional and integration tests) -->
    <junit fork="yes" forkmode="once" printsummary="true" haltonfailure="true">
      <formatter type="brief" usefile="false"/>
      <classpath>
	    <path location="${project.build.classes.test.dir}" />
	    <path location="${project.build.classes.dir}" />
	    <path refid="project.test.class.path" />
      </classpath>
      <batchtest>
        <fileset dir="${project.build.classes.test.dir}"
                 includes="**/*Test.class"
                 excludes="**/Abstract*Test.class,**/functional/*Test.class,**/integration/*Test.class,**/flatpack/*Test.class" />
      </batchtest>
    </junit>
  </target>

</project>
