<?xml version="1.0"?>
<!-- ====================================================================== 
     ANT script to build org.eclispe.ohf.stem.geography.earthscience project 
     This must be run after installing the STEM workspace and after changes
     to code generated by EMF models.
                                                                    
     ====================================================================== -->
<project name="STEM Internal Earth Science Data" default="update_all">
	<description>
     Use the properties files to populate the org.eclipse.stem.data.geography.earthscience 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 source plugin (i.e., the one that contains this file -->
	<property name="source.plugin" value="${ID_ROOT}.internal.data.geography.earthscience.combined" />

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

	<!-- 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/data" />

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

	<!-- 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.sourceplugin}/temp/data/plugin.xml" />

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

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

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

	<!-- Update the geography plugin with the latest definitions -->
	<target name="update_earthscience" depends="create_candidates, update_earthscience_plugin_xml, update_earthscience_plugin_properties, update_earthscience_generated_files" />

	<target name="update_earthscience_generated_files" depends="update_earthscience_graphs" />

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

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


	<!-- Update the graph files in the earth science plugin -->
	<target name="update_earthscience_graphs" depends="create_candidates">
		<copy todir="${path.targetplugin}/resources/data/" overwrite="true">
			<fileset dir="${path.generated.files}">
				<include name="**/*.graph" />
			</fileset>
		</copy>
	</target>



	<!-- Create the graph 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.GeographyDataGenerator" fork="true" maxmemory="1024m">
			<classpath refid="classpath.runtime" />
			<arg value="${path.sourceplugin}" />
			<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.sourceplugin}/temp/">
				<include name="**/*" />
			</fileset>
			<fileset dir="${path.targetplugin}/resources/data/">
				<include name="country/**/*" />
				<include name="relationship/**/*" />
			</fileset>
		</delete>
	</target>

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