<?xml version="1.0"?>

<project default="all" basedir=".">

  <!-- Give user a chance to override without editing this file
       (and without typing -D each time it compiles it) -->

  <property file="build.properties"/>
  <property file="${user.home}/build.properties"/>


  <path id="classpath">
    <pathelement location="${java.home}/../lib/tools.jar"/>
	<pathelement location="./"/>
    <pathelement location="${build.dest}"/>
    <fileset dir="lib">
     <include name="*.jar"/>
    </fileset>
    <fileset dir="${ogsa.root}/lib">
     <include name="*.jar"/>
    </fileset>
    <pathelement path="${java.class.path}"/>
  </path>

  <property name="src.dir" value="./"/>
  <property name="build.dir" value="./build"/>
  <property name="build.lib" value="${build.dir}/lib"/>
  <property name="build.stubs" value="${build.dir}/stubs"/>
  <property name="build.dest" value="${build.dir}/classes"/>
  <property name="build.schema" value="${build.dir}/schema"/>
  <property name="build.services" value="${ogsa.root}/build-services.xml"/>
  <property name="build.packages" value="${ogsa.root}/build-packages.xml"/>
  <property name="schema.origin" value="${ogsa.root}/schema"/>  
  <property name="stubs.dest" value="../stubs"/>
<!--  <property name="sde.schema.file" value="${package.dir}/schema/${interface}DataType.xsd"/>-->
  <property file="${ogsa.root}/ogsa.properties"/>
  <property name="mapping.file" value="namespace2package.mappings"/>



  <target name="copyFiles">
    <mkdir dir="${build.dest}"/>
    <mkdir dir="${build.lib}"/>
    <mkdir dir="${build.schema}"/>
    <mkdir dir="${build.stubs}"/>
    <mkdir dir="${lib.dir}"/>
    <!--<available file="${sde.schema.file}" property="sde.schema.file.present"/>
    <available property="stubs.present" type="dir" file="${stubs.dest}" />-->
    <copy toDir="${build.schema}">
      <fileset dir="${schema.origin}"/>
    </copy>
    <available file="${mapping.file}" property="mapping.file.present"/>
  </target>

  <target name="mergeMapping" if="mapping.file.present">
    <ant antfile="${build.services}" target="mergePackageMapping" />
  </target>

  <target name="setenv" depends="copyFiles,mergeMapping" />

  <target name="generateWSDLfromJava" if="java.interface" depends="setenv">
    <property name="schema.file" value="${interface.name}Service.wsdl"/>
    <ant antfile="${build.services}" target="generateWSDL">
      <property name="interface" value="${package.dir}/impl/${interface.name}.java"/>
      <property name="interface.package" value="${package}.impl"/>
      <!--<property name="interface.name" value="${interface}"/>-->
      <property name="interface.dir" value="${package.dir}/impl"/>
      <property name="generated.dir" value="${package}"/>
    </ant>
  </target>

  <target name="generateWSDLfromGWSDL" if="gwsdl.interface" depends="setenv">
  	<property name="schema.file" value="${interface.name}_service.wsdl"/>
        <echo message="build servicesss buildschme ${build.schema} ${interface.name}"/> 
	<copy todir="${build.schema}/${package}/${interface.name}" overwrite="true">      
<fileset dir="${package.dir}/schema"/>
    </copy>

        <echo message="build servicesssGWSDL package ${package} interfacename ${interface.name}"/> 

    <ant antfile="${build.services}" target="GWSDL2WSDL">
      <property name="build.schema.dir" value="${package}/${interface.name}"/>
      <property name="wsdl.root" value="${interface.name}"/>
    </ant>

        <echo message="build servicesssbinding ${build.schema.dir} ${interface.name}"/> 

    <ant antfile="${build.services}" target="generateBinding">
      <property name="binding.root" value="${interface.name}"/>
      <property name="build.schema.dir" value="${package}/${interface.name}"/>
      <property name="porttype.wsdl" value="${interface.name}.wsdl"/>
    </ant>

  </target>

  <!--
  <target name="decorateSDD" if="sde.schema.file.present">
    <copy file="${sde.schema.file}" toDir="${build.schema}/${package}/${interface.name}"/>
    <ant antfile="${build.services}" target="decorateSDD">
      <property name="sdd.file" value="${interface}DataType.xsd"/>
      <property name="wsdl.dir" value="${package}/${interface}"/>
      <property name="wsdl.file" value="${interface}_service.wsdl"/>
      <property name="import.sdd" value="import"/>
    </ant>
  </target>
	-->

  <target name="stubs" unless="stubs.present" depends="setenv, generateWSDLfromJava, generateWSDLfromGWSDL">
  <copy file="${build.schema}/${package}/${interface.name}/${interface.name}_service.wsdl" tofile="${build.schema}/${package}/${interface.name}/${interface.name}Service.wsdl"/>
   

   <echo message="stubssssss ${package} ${interface.name} ${schema.file}"/> 
    <ant antfile="${build.services}" target="generateStubs">
      <property name="schema.file.dir" value="${package}/${interface.name}"/>
      <property name="schema.file" value="${schema.file}"/>
    </ant>
  </target>


  <target name="compileStubs" depends="stubs">
  <copy file="${build.schema}/${package}/${interface.name}/${interface.name}_service.wsdl" tofile="${build.schema}/${package}/${interface.name}/${interface.name}Service.wsdl"/>

    <javac srcdir="${build.stubs}" destdir="${build.dest}" debug="${debug}"
      deprecation="${deprecation}"
      classpathref="classpath">
    </javac>
  </target>


  <target name="compile" depends="compileStubs">
  <copy file="${build.schema}/${package}/${interface.name}/${interface.name}_service.wsdl" tofile="${build.schema}/${package}/${interface.name}/${interface.name}Service.wsdl"/>

    <javac srcdir="${package.dir}/impl" destdir="${build.dest}" debug="${debug}"
      deprecation="${deprecation}"
      classpathref="classpath">
    </javac>
  </target>


  <target name="stubjar" depends="compile">
  <copy file="${build.schema}/${package}/${interface.name}/${interface.name}_service.wsdl" tofile="${build.schema}/${package}/${interface.name}/${interface.name}Service.wsdl"/>

    <jar jarfile="${build.lib}/${package}.${interface.name}-stub.jar" basedir="${build.dest}" >
      <include name="**/${package.dir}/**" />
      <exclude name="**/${package.dir}/impl/**" />
      <exclude name="**/${package.dir}/client/**" />
      <exclude name="**/${package.dir}/schema/**" />
    </jar>
  </target>

  <target name="jar" depends="stubjar">
    <jar jarfile="${build.lib}/${package}.${interface.name}.jar" basedir="${build.dest}" >
      <include name="**/${package.dir}/impl/**" />
      <include name="**/csm23/**" />
      <include name="**/org/**" />
      <exclude name="**/${package.dir}/impl/${interface.name}.class" />
    </jar>
  </target>

  <target name="gar" depends="jar">
     <copy todir="${build.lib}">
      <fileset dir="${lib.dir}">
        <include name="**/*.jar"/>
      </fileset>
    </copy>
    <ant antfile="${build.packages}" target="makeGar">
      <property name="gar.name" value="${build.lib}/${package}.${interface.name}.gar"/>
      <property name="garlib.dir" value="${build.lib}"/>
      <property name="garserverdeployment.file" value="${package.dir}/${interface.name}.wsdd"/>
      <property name="garschema.origin" value="${build.schema}/${package}"/>
      <property name="garschema.path" value="${package}"/>
    </ant>
  </target>

  <target name="compileClient" depends="setenv">
    <javac srcdir="${src.dir}" destdir="${build.dest}" debug="${debug}"
      deprecation="${deprecation}"
      classpathref="classpath">
    </javac>
  </target>


  <target name="clean">
    <delete dir="${build.dir}"/>
  </target>

  <target name="all" depends="gar"/>

</project>
