<!--
 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="edgent" default="DoNotUseAnt"
  xmlns:jacoco="antlib:org.jacoco.ant"
  >
    <description>
        Top-level build.xml for Edgent.
    </description>
	
  <property name="release.base" location="release-${ant.project.name}"/>

  <property name="edgent.version" value="0.4.0"/>

  <property name="report.dir" location="reports"/>
  <property name="target.dir" location="target"/>
  <property name="javadoc.dir" location="${target.dir}/docs/javadoc"/>
  <property name="release.dir" location="${release.base}"/>
	
  <target name="DoNotUseAnt">
    <fail message="The ant tooling is no longer functional.  See README."/>
  </target>
	
  <target name="all" depends="DoNotUseAnt,init,suball,copy,docs"
    description="Build the code and Javadoc into target. Requires Java 8"
    />

  <target name="init" depends="setcommitversion">
    <mkdir dir="${target.dir}"/>
  </target>

  <target name="setcommitversion">
        <!-- Create the time stamp -->
    <tstamp/>

    <!-- Extract the git commit hash -->
    <exec executable="git" outputproperty="commithash" errorproperty="commithash.error">
       <arg value="rev-parse"/>
       <arg value="--short"/>
       <arg value="HEAD"/>
    </exec>
    <mkdir dir="${target.dir}"/>
    <echoproperties destfile="${target.dir}/version.txt">
       <propertyset>
          <propertyref name="edgent.version"/>
          <propertyref name="DSTAMP"/>
          <propertyref name="TSTAMP"/>
          <propertyref name="commithash"/>
          <propertyref name="commithash.error"/>
       </propertyset>
    </echoproperties>
  </target>

  <target name="copy">
     <!-- copy README.md -->
     <copy todir="${target.dir}" file="README.md"/>
     <copy todir="${target.dir}" file="LICENSE"/>

     <!-- copy scripts -->
     <mkdir dir="${target.dir}/java8/scripts"/>
     <copy todir="${target.dir}/java8/scripts" includeEmptyDirs="no">
        <fileset dir="scripts"/>
     </copy>

     <!-- copy sample code -->
     <mkdir dir="${target.dir}/java8/samples/src"/>
     <copy todir="${target.dir}/java8/samples/src" includeEmptyDirs="no">
        <fileset dir="samples" includes="**/*.java" excludes="**/build.xml **/test/**"/>
     </copy>

  </target>

  <target name="suball">
     <subprojects target="all"/>
  </target>
  <target name="test"  depends="DoNotUseAnt"
     description="Run all JUnit tests. Requires Java 8"
     >
     <echo message="HINT: to include tests for some connectors do: ant -Dtest.base.pattern='**/*TestManual.java' test"/>
     <subprojects target="test"/>
  </target>
  <target name="clean">
     <subprojects target="clean"/>
    <delete dir="${report.dir}"/>
    <delete dir="${javadoc.dir}"/>
    <delete dir="${release.dir}"/>
    <delete dir="${target.dir}"/>
  </target>

  <macrodef name="subprojects">
      <attribute name="target"/>
      <sequential>		
        <ant dir="api/function" target="@{target}" useNativeBasedir="true"/>
        <ant dir="api/execution" target="@{target}" useNativeBasedir="true"/>
        <ant dir="api/window" target="@{target}" useNativeBasedir="true"/>
        <ant dir="api/oplet" target="@{target}" useNativeBasedir="true"/>
        <ant dir="api/graph" target="@{target}" useNativeBasedir="true"/>
        <ant dir="api/topology" target="@{target}" useNativeBasedir="true"/>
        <ant dir="spi/graph" target="@{target}" useNativeBasedir="true"/>
        <ant dir="spi/topology" target="@{target}" useNativeBasedir="true"/>
        <ant dir="runtime/appservice" target="@{target}" useNativeBasedir="true"/>
        <ant dir="runtime/etiao" target="@{target}" useNativeBasedir="true"/>
        <ant dir="runtime/jmxcontrol" target="@{target}" useNativeBasedir="true"/>
        <ant dir="runtime/jsoncontrol" target="@{target}" useNativeBasedir="true"/>
        <ant dir="runtime/jobregistry" target="@{target}" useNativeBasedir="true"/>
        <ant dir="utils/metrics" target="@{target}" useNativeBasedir="true"/>
        <ant dir="utils/streamscope" target="@{target}" useNativeBasedir="true"/>

        <ant dir="providers/direct" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/common" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/command" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/csv" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/iot" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/serial" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/file" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/http" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/iotp" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/jdbc" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/kafka" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/mqtt" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/pubsub" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/edgent.javax.websocket" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/javax.websocket-client" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/javax.websocket-server" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/wsclient" target="@{target}" useNativeBasedir="true"/>
        <ant dir="connectors/wsclient-javax.websocket" target="@{target}" useNativeBasedir="true"/>
        <ant dir="console/server" target="@{target}" useNativeBasedir="true" />
        <ant dir="console/servlets" target="@{target}" useNativeBasedir="true" />
        <ant dir="apps/iot" target="@{target}" useNativeBasedir="true" />
        <ant dir="providers/development" target="@{target}" useNativeBasedir="true"/>
        <ant dir="apps/runtime" target="@{target}" useNativeBasedir="true" />
        <ant dir="providers/iot" target="@{target}" useNativeBasedir="true"/>
        <ant dir="analytics/math3" target="@{target}" useNativeBasedir="true"/>
        <ant dir="analytics/sensors" target="@{target}" useNativeBasedir="true"/>
        <ant dir="samples/utils" target="@{target}" useNativeBasedir="true"/>
        <ant dir="samples/apps" target="@{target}" useNativeBasedir="true" />
        <ant dir="samples/topology" target="@{target}" useNativeBasedir="true"/>
        <ant dir="samples/connectors" target="@{target}" useNativeBasedir="true"/>
        <ant dir="samples/console" target="@{target}" useNativeBasedir="true" />
        <ant dir="samples/scenarios" target="@{target}" useNativeBasedir="true" />
        <ant dir="android/topology" target="@{target}" useNativeBasedir="true" />
        <ant dir="android/hardware" target="@{target}" useNativeBasedir="true" />
        <ant dir="test/fvtiot" target="@{target}" useNativeBasedir="true" />
        <ant dir="test/svt" target="@{target}" useNativeBasedir="true" />
      </sequential>
  </macrodef>

  <target name="junit.report">
     <mkdir dir="${report.dir}/junit"/>
     <junitreport todir="${report.dir}">
        <fileset dir="${basedir}">
            <include name="**/unittests/*/TEST-*.xml"/>
        </fileset>
        <report format="frames" todir="${report.dir}/junit"/>
     </junitreport>
  </target>

  <target name="coverage.report" >
     <mkdir dir="${report.dir}/coverage"/>
   <jacoco:report>
    <executiondata>
       <fileset dir="${basedir}">
            <include name="**/unittests/*/jacoco*.exec"/>
       </fileset>
    </executiondata>
    <structure name="Edgent">

    <group name="Edgent API">
      <classfiles>
         <fileset dir="${target.dir}/java8/lib">
            <include name="edgent.api.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/api/function/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/api/execution/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/api/oplet/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/api/graph/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/api/topology/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>
    <group name="Edgent SPI">
      <classfiles>
         <fileset dir="${target.dir}/java8/lib">
            <include name="edgent.spi.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/spi/graph/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/spi/topology/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>
    <group name="Edgent Runtime">
      <classfiles>
         <fileset dir="${target.dir}/java8/lib">
            <include name="edgent.runtime.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/runtime/etiao/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/runtime/jmxcontrol/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>

    <group name="Edgent Utilities">
      <classfiles>
         <fileset dir="${target.dir}/java8/utils">
            <include name="**/edgent.utils.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/utils/metrics/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/utils/streamscope/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>
    <group name="Edgent Connectors">
      <classfiles>
         <fileset dir="${target.dir}/java8/connectors">
            <include name="**/edgent.connectors.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/connectors/common/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/command/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/csv/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/file/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/iot/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/iotp/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/jdbc/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/kafka/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/mqtt/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/http/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/wsclient/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/connectors/wsclient-javax.websocket/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>

    <group name="Edgent Providers">
      <classfiles>
         <fileset dir="${target.dir}/java8/lib">
            <include name="edgent.providers.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/providers/direct/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/providers/development/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>

    <group name="Edgent Analytics">
      <classfiles>
         <fileset dir="${target.dir}/java8/analytics">
            <include name="**/edgent.analytics.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/analytics/math3/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/analytics/sensors/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>

    <group name="Edgent Console">
      <classfiles>
         <fileset dir="${target.dir}/java8/console">
            <include name="**/edgent.console.*.jar"/>
         </fileset>
      </classfiles>
    <sourcefiles encoding="UTF-8">
        <fileset dir="${basedir}/console/server/src/main/java" includes="**/*.java"/>
        <fileset dir="${basedir}/console/servlets/src/main/java" includes="**/*.java"/>
    </sourcefiles>
    </group>

    </structure>
    <html destdir="${report.dir}/coverage"/>
    </jacoco:report>
   </target>

  <target name="reports" depends="DoNotUseAnt,junit.report,coverage.report"
    description="Produce test and coverage reports under reports after executing the test target"
    />

  <target name="docs" depends="DoNotUseAnt">
  <mkdir dir="${javadoc.dir}"/>
  <javadoc
      destdir="${javadoc.dir}"
      author="true"
      version="true"
      use="true"
      windowtitle="Edgent v${edgent.version}"
      additionalparam="-Xdoclint:none"
      Overview="edgent_overview.html"
      failonwarning="true"
      excludepackagenames="org.apache.edgent.connectors.runtime,org.apache.edgent.connectors.*.runtime,org.apache.edgent.console.*,org.apache.edgent.samples.scenarios.iotp.range.sensor"
      >
      <sourcepath>
         <dirset dir="${basedir}">
           <include name="*/*/src/main/java"/>
           <exclude name="android/**"/>
         </dirset>
      </sourcepath>
      <classpath>
        <fileset dir="ext">
           <include name="**/*.jar"/>
        </fileset>
        <fileset dir=".">
           <include name="console/*/ext/*/*.jar"/>
           <include name="connectors/*/ext/*.jar"/>
           <include name="analytics/*/ext/*/*.jar"/>
           <include name="utils/metrics/ext/*/*.jar"/>
        </fileset>
      </classpath>

       <doctitle>Apache Edgent (incubating) v${edgent.version}</doctitle>
       <footer><![CDATA[<a href="http://edgent.incubator.apache.org">Apache Edgent (incubating)</a>]]></footer>
       <bottom>Copyright &amp;copy; 2016 The Apache Software Foundation. All Rights Reserved - ${commithash}-${DSTAMP}-${TSTAMP}</bottom>
       <group title="Edgent API" packages="org.apache.edgent.execution,org.apache.edgent.function,org.apache.edgent.topology,org.apache.edgent.topology.json,org.apache.edgent.topology.mbeans,org.apache.edgent.topology.plumbing,org.apache.edgent.topology.services,org.apache.edgent.execution.*"/>
       <group title="Edgent Providers" packages="org.apache.edgent.providers.*"/>
       <group title="Edgent Connectors" packages="org.apache.edgent.connectors.*"/>
       <group title="Edgent Samples" packages="org.apache.edgent.samples.*"/>
       <group title="Edgent Analytics" packages="org.apache.edgent.analytics.*"/>
       <group title="Edgent Utilities" packages="org.apache.edgent.metrics,edgent.metrics.*,org.apache.edgent.streamscope,org.apache.edgent.streamscope.*"/>
       <group title="Edgent Low-Level API" packages="org.apache.edgent.graph,edgent.graph.*,org.apache.edgent.oplet,edgent.oplet.*,org.apache.edgent.window"/>
       <group title="Edgent SPI" packages="org.apache.edgent.topology.spi,org.apache.edgent.topology.spi.*"/>
     </javadoc>
  </target>

  <target name="release" depends="DoNotUseAnt,clean,setcommitversion,all,docs,create_release_bundle"/>
	
  <target name="create_release_bundle">
      <!-- Build Java7 and Android versions -->
      <ant dir="platform/java7" target="retro7" useNativeBasedir="true"/>
      <ant dir="platform/android" target="all" useNativeBasedir="true"/>

      <mkdir dir="${release.dir}" />
      <property name="releasefilename" value="${release.dir}/edgent-v${edgent.version}-${DSTAMP}-${TSTAMP}.tgz"/>
      <tar compression="gzip" longfile="gnu" destfile="${releasefilename}">
        <tarfileset dir="${target.dir}" prefix="edgent"
         excludes="**/*.sh"/>
        <tarfileset dir="${target.dir}" prefix="edgent"
         includes="**/*.sh" filemode="755"/>
      </tar>
      <checksum file="${releasefilename}"/>
      <checksum algorithm="sha1" file="${releasefilename}"/>
  </target>

</project>
