<?xml version="1.0" encoding="utf-8" ?>
 <!--
 * 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 name="etch-example-example" basedir="." default="help" >
    <description>Example Example</description>
    <property name="Etch.basedir" location="${basedir}/../.." />
    <import file="${Etch.basedir}/build-support/etch.includes.xml" />

    <!-- TODO better computation of etch.home, etch.version -->
    <property environment="env" />

    <!-- compute ETCH_HOME -->
    <property name="build.ETCH_HOME" location="${basedir}/../../target/Installers/dist" />
    <condition property="etch.home" value="${env.ETCH_HOME}" >
        <isset property="${env.ETCH_HOME}" />
    </condition>
    <condition property="etch.home" value="${build.ETCH_HOME}" >
        <not><isset property="etch.home" /></not>
    </condition>

    <property name="Etch.dependency.junit.jar"
        location="${default.junit.lib}/junit-4.3.1.jar" />

    <property name="Etch.buildSupportDirectory" location="../../build-support" />

    <!-- compute etch.version -->
    <condition property="etch.version" value="${Etch.version}" >
        <not><isset property="etch.version" /></not>
    </condition>
	
    <condition property="etch.longversion" value="${Etch.longversion}" >
        <not><isset property="etch.longversion" /></not>
    </condition>

    <!-- Csharp Support -->
    <condition property="USE.dotnet" >
        <and>
            <os family="windows" />
            <available file="${env.DOTNET_HOME}/msbuild.exe" />
            <available file="${build.ant-dotnet.lib}/ant-dotnet-1.1.jar" />
            <available file="${env.NUNIT_HOME}/bin/net-2.0/nunit.exe" />
        </and>
    </condition>
    <condition property="USE.mono" >
        <and>
            <not><os family="windows" /></not>
            <!-- TODO mono support is not fully baked, use -DUSE.mono to test -->
            <!-- <available file="${env.MONO_HOME}/bin/mdtool" /> -->
            <isset property="USE.mono" />
        </and>
    </condition>
    <condition property="BUILD.csharp" >
        <or>
            <isset property="USE.dotnet" />
            <isset property="USE.mono" />
        </or>
    </condition>

    <!-- import etch task -->
    <taskdef
        onerror="report"
        resource="org/apache/etch/tools/ant/etch.xml"
        classpath="${etch.home}/lib/apache-etch-ant-plugin-${etch.longversion}.jar" />

    <!-- import dotnet task -->
    <condition property="ant.dotnet.jar" value="ant-dotnet-1.1.jar" >
        <not><isset property="ant.dotnet.jar" /></not>
    </condition>

    <taskdef
        onerror="report"
        resource="org/apache/ant/dotnet/antlib.xml"
        classpath="${ant.dotnet.jar}" />

    <macrodef name="mdtool" >
        <attribute name="dir"         default="." />
        <attribute name="failonerror" default="false" />
        <attribute name="project"     default="project.csproj" />
        <attribute name="target"      default="${build.target}" />
        <sequential>
            <exec executable="${env.MONO_HOME}/bin/mdtool" dir="@{dir}" failonerror="@{failonerror}" >
                <arg value="build" />
                <arg value="--buildfile:@{project}" />
            </exec>
        </sequential>
    </macrodef>

    <!-- set properties -->
    <property name="src"               location="${basedir}/src" />
    <property name="main-src-java"     location="${src}/main/java" />
    <property name="test-src-java"     location="${src}/test/java" />
    <property name="target"            location="${basedir}/target" />
    <property name="dist-src"          location="${target}/dist-src" />
    <property name="generated-sources" location="${target}/generated-sources" />
    <property name="gen-src-java"      location="${generated-sources}/main/etch/java" />
    <property name="gen-src-csharp"    location="${generated-sources}/main/etch/csharp" />
    <property name="bin"               location="${target}/bin" />
    <property name="classes"           location="${target}/classes" />
    <property name="classes-test"      location="${target}/classes-test" />
    <property name="test-results"      location="${target}/test-results" />
    <property name="nunit-results"     location="${target}/nunit-results" />
    <property name="dist"              location="${basedir}/../../target/Installers/dist" />

    <!-- initialize -->
    <target name="init" >
        <mkdir dir="${target}" />
        <mkdir dir="${dist-src}" />
        <mkdir dir="${generated-sources}" />
        <mkdir dir="${gen-src-java}" />
        <mkdir dir="${gen-src-csharp}" />
        <mkdir dir="${bin}" />
        <mkdir dir="${classes}" />
        <mkdir dir="${classes-test}" />
        <mkdir dir="${test-results}" />
        <mkdir dir="${nunit-results}" />
    </target>

    <!-- build the server -->
    <target name="generate-sources" depends="init" >
        <!-- generate sources -->

        <etch home="${etch.home}"
              file="${src}/main/etch/Example.etch"
              binding="java"
              outputDir="${gen-src-java}" />

        <etch home="${etch.home}"
              file="${src}/main/etch/Example.etch"
              binding="csharp"
              outputDir="${gen-src-csharp}" />
    </target>

    <property name="etch-java-runtime-name"
        value="apache-etch-java-runtime-${etch.longversion}.jar" />

    <property name="Etch.dependency.java.runtime"
        location="${etch.home}/binding-java/lib/${etch-java-runtime-name}" />

    <target name="build-java" depends="generate-sources" >
        <!-- compile sources -->

        <javac target="1.5" destdir="${classes}" >
            <src path="${gen-src-java}" />
            <src path="${main-src-java}" />
            <classpath>
                <pathelement location="${Etch.dependency.java.runtime}" />
            </classpath>
        </javac>

        <javac target="1.5" destdir="${classes-test}" >
            <src path="${gen-src-java}" />
            <src path="${main-src-java}" />
            <src path="${test-src-java}" />
            <classpath>
                <pathelement location="${Etch.dependency.java.runtime}" />
                <pathelement location="${Etch.dependency.junit.jar}" />
            </classpath>
        </javac>

        <!-- Create Jar -->
        <jar jarfile="${bin}/example.jar" >
            <manifest>
                <attribute name="Class-Path" value="${etch-java-runtime-name}" />
            </manifest>
            <fileset dir="${classes}" >
                <include name="**/*" />
            </fileset>
        </jar>

        <!-- copy in dependencies -->
        <copy todir="${bin}" file="${Etch.dependency.java.runtime}" />
    </target>

    <target name="build-csharp-with-mono" depends="generate-sources" if="USE.mono" >
        <mdtool dir="${src}/main/csharp/ExampleClientProj" project="ExampleClientProj.csproj" />
        <mdtool dir="${src}/main/csharp/ExampleListenerProj" project="ExampleListenerProj.csproj" />
    </target>

    <target name="build-csharp-with-dotnet" depends="generate-sources" if="USE.dotnet" >
        <msbuild buildfile="${src}/main/csharp/ExampleListenerProj/ExampleListenerProj.csproj" >
            <property name="Configuration" value="${build.target}" />
        </msbuild>
        <msbuild buildfile="${src}/main/csharp/ExampleClientProj/ExampleClientProj.csproj" >
            <property name="Configuration" value="${build.target}" />
        </msbuild>
        <msbuild buildfile="${src}/test/csharp/ExampleTestProj/ExampleTestProj.csproj" >
            <property name="Configuration" value="${build.target}" />
        </msbuild>
        <copy todir="${bin}" >
            <fileset dir="${src}/main/csharp/ExampleListenerProj/bin/${build.target}" >
                <include name="*" />
            </fileset>
            <fileset dir="${src}/main/csharp/ExampleClientProj/bin/${build.target}" >
                <include name="*" />
            </fileset>
        </copy>
    </target>

    <target name="build-csharp" depends="build-csharp-with-mono,build-csharp-with-dotnet" />

    <target name="build" depends="build-java,build-csharp" />

    <!-- run unit tests -->

    <target name="test-java" depends="build-java" unless="build.skip.tests">
        <!-- Run Unit Tests -->
        <junit printsummary="yes" haltonfailure="no" dir="${classes-test}"
            errorProperty="build.tests.fail" failureProperty="build.tests.fail" >
            <classpath>
                <pathelement location="${classes-test}" />
                <pathelement location="${Etch.dependency.java.runtime}" />
                <pathelement location="${Etch.dependency.junit.jar}" />
            </classpath>
            <formatter type="xml" />
            <batchtest fork="true" todir="${test-results}" >
                <fileset dir="${test-src-java}" >
                    <include name="**/Test*.java" />
                </fileset>
            </batchtest>
        </junit>
    </target>

    <target name="test-csharp" depends="build-csharp" if="BUILD.csharp" unless="build.skip.tests">
         <nunit xmlout="${nunit-results}/NUnitResults.xml">
             <testassembly name="${src}/test/csharp/ExampleTestProj/bin/${build.target}/ExampleTestProj.dll" />
         </nunit>

         <xslt style="${Etch.buildSupportDirectory}/NUnitToJUnit.xsl"
                 in="${nunit-results}/NUnitResults.xml" out="${test-results}/TEST-NUnitResults.xml" />
   </target>

    <target name="test" depends="build,test-java,test-csharp,done" >
    </target>

    <target name="done" depends="build" >
        <echo>

Build Complete!

To run java example example, open a cmd window and run these
commands:

> cd target\bin
> start java -cp example.jar org.apache.etch.examples.example.MainExmapleListener
> start java -cp example.jar org.apache.etch.examples.example.MainExampleClient

To run csharp example:

> cd target\bin
> start exampleListener.exe
> start exampleClient.exe

Now modify the example to implement the service however you like.

You can mix and match the various clients and listeners.

        </echo>
    </target>

    <!-- build everything -->
    <target name="init-debug" >
        <property name="build.target" value="Debug" />
    </target>

    <target name="init-release" >
        <property name="build.target" value="Release" />
    </target>
    
    <target name="dist-src" >
        <copy file="dist-build.xml" tofile="${dist-src}/build.xml" overwrite="true" >
            <filterset refid="Etch.buildTokens" />
        </copy>    
        <copy file="dist-README.txt" tofile="${dist-src}/README.txt" overwrite="true" />
        
        <copy todir="${dist-src}/src/main/etch" overwrite="true" >
            <fileset dir="${src}/main/etch" >
                <exclude name="**/.svn/**" />
                <include name="**/*.etch" />
            </fileset>
        </copy>
        
        <copy todir="${dist-src}/src/main/java" overwrite="true" >
            <fileset dir="${src}/main/java" >
                <exclude name="**/.svn/**" />
                <include name="**/*.java" />
            </fileset>
        </copy>
        
        <copy todir="${dist-src}/src/main/csharp" overwrite="true" >
            <fileset dir="${src}/main/csharp" >
                <exclude name="**/.svn/**" />
                <include name="**/*.cs" />
            </fileset>
        </copy>
        
        <copy todir="${dist}/examples/example" overwrite="true" >
            <fileset dir="${dist-src}" />
        </copy>
    </target>

    <target name="debug" depends="dist-src,init-debug,test" />
    <target name="release" depends="dist-src,init-release,test" />

    <!-- clean -->
    <target name="clean" >
        <delete dir="${target}" quiet="true" />
        <delete dir="${src}/main/csharp/ExampleClientProj/bin" quiet="true" />
        <delete dir="${src}/main/csharp/ExampleClientProj/obj" quiet="true" />
        <delete dir="${src}/main/csharp/ExampleListenerProj/bin" quiet="true" />
        <delete dir="${src}/main/csharp/ExampleListenerProj/obj" quiet="true" />
        <delete dir="${src}/test/csharp/ExampleTestProj/bin" quiet="true" />
        <delete dir="${src}/test/csharp/ExampleTestProj/obj" quiet="true" />
    </target>
</project>
