<?xml version="1.0"?>
<!-- ====================================================================== 
     ANT script to build org.eclispe.ohf.stem.geography project 
     and the initial set of STEM scenarios.  
     This must be run after installing the STEM workspace and after changes
     to code generated by EMF models.
                                                                    
     ====================================================================== -->
<project name="STEM Internal Human Population Models" default="update_all">
	<description>
     Use the properties files to populate the org.eclipse.stem.data.geography.population.human.models plugin
    </description>

	<!-- P r o j e c t  S p e c i f i c a t i o n s -->

	<!-- The name of the project -->
	<property name="project.name" value="stem" />

	
	<!-- Are we running headless? -->
	<condition property="runningHeadless" >
		<isset property="buildDirectory" />
	</condition>
	
	<!-- The buildDirectory property is set in a headless build -->
	<condition property="pluginRootDirectory" value="${buildDirectory}/plugins" else="..">
		<isset property="runningHeadless" />
	</condition>

	<!-- The baseLocation property is the location of the eclipse home installation -->
	<!-- It is used to find eclipse plugins                                         -->
	<!-- It is set in a headless build, but not one started manually from Eclipse   -->
	<condition property="baseLocation" value="${eclipse.pdebuild.home}../..">
		<not>
			<isset property="runningHeadless" />
		</not>
	</condition>

	<!-- This is the location of the class files of the built plug-ins     -->
	<!-- If this is a manual build started from Eclipse then the directory -->
	<!-- is "bin", if its a headless build then the directory is "@dot"    -->
	<!-- The property baseLocation is set in a headless build              -->
	<condition property="targetBin" value="@dot" else="bin">
		<isset property="runningHeadless" />
	</condition>
	
	
	<!-- The prefix for fully qualified names -->
	<property name="ID_ROOT" value="org.eclipse.stem" />

	<!-- The name of the plugin that contains the plugin.xml file to scan -->
	<property name="scan.plugin" value="${ID_ROOT}.data.geography.models" />
	
	<!-- The name of the plugin that contains the plugin.xml file to scan -->
	<property name="population.plugin" value="${ID_ROOT}.data.geography.population.human" />
	
	<!-- The name of the source plugin (i.e., the one that contains this file -->
	<property name="source.plugin" value="${ID_ROOT}.internal.data.geography.population.human.models" />

	<!-- The name of the target plugin -->
	<property name="target.plugin" value="${ID_ROOT}.data.geography.population.human.models" />

	<!-- The path to the root directory of the source plugin -->
	<property name="path.sourceplugin" location="${pluginRootDirectory}/${source.plugin}" />

	<!-- The path to the root directory of the plugin that will be augmented with generated content -->
	<property name="path.targetplugin" location="${pluginRootDirectory}/${target.plugin}" />

	<!-- The path to the root directory of the resource files -->
	<property name="path.resource.files" value="${path.sourceplugin}/resources/data/country" />

	<!-- The path to the root directory of the plugin that will be augmented with generated content-->
	<property name="path.generated.files" value="${path.sourceplugin}/temp" />

	<!-- The path to the root directory of geography source code -->
	<property name="path.geography.src" value="${path.targetplugin}/src/org/eclipse/stem/data/geography/population/human/models" />

	<!-- The name of the plugin.xml file that will be augmented with generated content-->
	<property name="file.target.pluginxml" value="${path.targetplugin}/plugin.xml" />

	<!-- The name of the plugin.properties file that will be augmented with generated content-->
	<property name="file.target.pluginproperties" value="${path.targetplugin}/plugin.properties" />

	<!-- The name of the plugin.xml file that that is the aggregation of the generated content-->
	<property name="file.util.pluginxml" value="${path.generated.files}/plugin.xml" />

	<!-- The name of the plugin.properties file that that is the aggregation of the generated content-->
	<property name="file.util.pluginproperties" value="${path.generated.files}/plugin.properties" />

    <!-- The name of the plugin.xml file that that is the aggregation of the generated content-->
    <property name="file.target.pluginproperties" value="${path.generated.files}/plugin.properties" />

	<!-- The class path to use -->
	<path id="classpath.runtime"> 
		<pathelement location="${path.sourceplugin}/${targetBin}" />
		<pathelement location="${pluginRootDirectory}/${ID_ROOT}.core/${targetBin}" />
		<pathelement location="${pluginRootDirectory}/${ID_ROOT}.definitions/${targetBin}" />
	    <pathelement location="${pluginRootDirectory}/${ID_ROOT}.internal.data/${targetBin}" />
		<pathelement location="${pluginRootDirectory}/${ID_ROOT}.internal.data.geography/${targetBin}" />
		<pathelement location="${pluginRootDirectory}/${ID_ROOT}.internal.data.geography.models/${targetBin}" />
		<pathelement location="${pluginRootDirectory}/${ID_ROOT}.data.geography/${targetBin}" />
		<fileset dir="${baseLocation}/plugins/">
			<include name="*emf*.jar" />
		</fileset>
		<fileset dir="${pluginRootDirectory}/${ID_ROOT}.internal.data/lib/">
			<include name="*emf*.jar" />
		</fileset>
	</path>

	<target name="update_all" depends="update_geography" />

	<!-- Update the geography plugin with the latest definitions -->
	<target name="update_geography" depends="update_population_models, update_population_plugin_xml, update_population_plugin_properties" />

	<target name="update_population_plugin_xml" depends="create_candidates">
		<copy tofile="${file.target.pluginxml}" file="${file.util.pluginxml}" overwrite="true" />
	</target>

	<target name="update_population_plugin_properties" depends="create_candidates">
		<copy tofile="${file.target.pluginproperties}" file="${file.util.pluginproperties}" overwrite="true" />
	</target>

	<!-- Update the graph files in the geography plugin -->
	<target name="update_population_models" depends="create_candidates">
		<copy todir="${path.targetplugin}/resources/data/" overwrite="true">
			<fileset dir="${path.generated.files}/resources/data">
				<include name="**/*.model" />
			</fileset>
		</copy>
	</target>
	
	<!-- Create the model files for countries and the plugin.xml and plugin.properties fragments -->
	<target name="create_candidates" depends="clean">
		<!-- There is a problem here with specifying fork="true"  maxmemory="768m".  It causes an IOException on some machines -->
		<java classname="${ID_ROOT}.internal.data.geography.population.human.models.PopulationModelGenerator" fork="true" maxmemory="1024m">
			<classpath refid="classpath.runtime" />
			<arg value="${path.generated.files}" />
			<arg value="${scan.plugin}" />
			<arg value="${population.plugin}" />
			<jvmarg value="-Xms1024m"/>
			<jvmarg value="-Xmx1024m"/>
		</java>
	</target>

	<!-- clean out the .../temp/data directories -->
	<!-- clean out the target directories -->
	<target name="clean" depends="create_generated_files_dir">
		<delete includeEmptyDirs="true" quiet="true">
			<fileset dir="${path.generated.files}/">
				<include name="**/*" />
			</fileset>
			<fileset dir="${path.targetplugin}/resources/data/">
				<include name="country/**/*" />
			</fileset>
		</delete>
	</target>

	<target name="create_generated_files_dir">
		<mkdir dir="${path.generated.files}/resources/data"/>		
	</target>
</project>
