<?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 Geographic Models" default="update_all">
	<description>
     Use the properties files to populate the org.eclipse.stem.data.geography.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" />
	
	<!-- The name of the source plugin (i.e., the one that contains this file -->
	<property name="source.plugin" value="${ID_ROOT}.internal.data.geography.models" />

	<!-- The name of the target plugin -->
	<property name="target.plugin" value="${ID_ROOT}.data.geography.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/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}.geography/${targetBin}" />
	    <pathelement location="${pluginRootDirectory}/${ID_ROOT}.internal.data/${targetBin}" />
		 <pathelement location="${pluginRootDirectory}/${ID_ROOT}.internal.data.geography/${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_geography_models, update_geography_plugin_xml, update_geography_plugin_properties" />

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

	<target name="update_geography_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_geography_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.models.GeographyModelGenerator" fork="true" maxmemory="1024m">
			<classpath refid="classpath.runtime" />
			<arg value="${path.generated.files}" />
			<arg value="${scan.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>
