<?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="loan-broker-client" default="run" basedir=".">

  <property name="class.dir" value="target/classes"/>

  <target name="clean">
    <delete dir="target" quiet="true"/>
    <delete dir="${class.dir}" quiet="true"/>
  </target>

  <target name="init">
    <mkdir dir="${class.dir}"/>
    <mkdir dir="lib"/>

    <get src="http://repo1.maven.org/maven2/org/logicblaze/lingo/lingo/1.3/lingo-1.3.jar"
         dest="lib/lingo-1.3.jar" 
         usetimestamp="true" />

    <path id="javac.classpath">
      <pathelement path="${class.dir}"/>
      <pathelement path="../../conf"/>
      <fileset dir="../../lib">
        <include name="**/*.jar"/>
      </fileset>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
    </path>
  </target>

  <target name="compile" depends="init" description="Compile all Java">
    <javac srcdir="src/main/java" destdir="${class.dir}">
      <classpath refid="javac.classpath"/>
    </javac>
  </target>

  <target name="run" depends="compile" description="Runs the example client">
    <echo>Running example client</echo>
    <java classname="JMSClient" fork="yes" maxmemory="100M">
      <classpath refid="javac.classpath"/>
    </java>
  </target>

  <target name="run-loop" depends="compile" description="Runs the example client in a loop">
    <echo>Running example client in a loop</echo>
    <java classname="JMSClient" fork="yes" maxmemory="100M">
      <classpath refid="javac.classpath"/>
      <arg value="100000"/>
    </java>
  </target>

</project>
