<?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.2000" />

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

	<!-- 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>
