<project name="Cairngen 1.0" default="main" >
	
	<!-- load cairngen configuration properties -->
	<property file="config.properties" />
	
	<!-- default cairngen target -->
	<target name="main" depends="clean, create-model-locator, create-front-controller, create-service-locator" />
		
    <!-- delete previously created directories and create default cairngorm directories-->
	<target name="clean" depends="delete-cairngorm-directories, create-cairngorm-directories" />

    <!-- delete previously generated directories -->
	<target name="delete-cairngorm-directories">
        <delete dir="${project-uri}/${business.dir}" />
        <delete dir="${project-uri}/${commands.dir}" />  
		<delete dir="${project-uri}/${control.dir}"  />
        <delete dir="${project-uri}/${events.dir}"   />
		<delete dir="${project-uri}/${model.dir}"    />
        <delete dir="${project-uri}/${view.dir}"     /> 
		<delete dir="${project-uri}/${vo.dir}"       />
	</target>
	
	<!-- create default cairngorm project directories -->
	<target name="create-cairngorm-directories">
        <mkdir dir="${project-uri}/${business.dir}" />
        <mkdir dir="${project-uri}/${commands.dir}" />  
		<mkdir dir="${project-uri}/${control.dir}"  />
        <mkdir dir="${project-uri}/${events.dir}"   />
		<mkdir dir="${project-uri}/${model.dir}"    />
        <mkdir dir="${project-uri}/${view.dir}"     /> 
		<mkdir dir="${project-uri}/${vo.dir}"       />
	</target>
	
	<!-- create default cairngorm project ModelLocator -->
	<target name="create-model-locator">
	    <copy file="${templates.dir}/${version}/ModelLocator.tpl" tofile="${project-uri}/${model.dir}/${project.name}ModelLocator.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="projectname" value="${project.name}" />
	                <token key="namespace"   value="${namespace}"    />
	                <token key="model"       value="${model.dir}"    />
	            </replacetokens>
	        </filterchain>
	    </copy>
	</target>
    
    <!-- create cairngorm project FrontController -->
	<target name="create-front-controller">
	    <copy file="${templates.dir}/${version}/FrontController.tpl" tofile="${project-uri}/${control.dir}/${project.name}Controller.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="projectname" value="${project.name}" />
	                <token key="namespace"   value="${namespace}"    />
	                <token key="control"     value="${control.dir}"  />
	                <token key="events"      value="${events.dir}"   />
	                <token key="commands"    value="${commands.dir}" />
	            </replacetokens>
	        </filterchain>
	    </copy>
	</target>
	
	<!-- create cairngorm project Services -->
	<target name="create-service-locator">
	    <copy file="${templates.dir}/${version}/Services.tpl" tofile="${project-uri}/${business.dir}/Services.mxml" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="namespace" value="${namespace}" />
	            </replacetokens>
	        </filterchain>
	    </copy>
	</target>
	
	<!-- create cairngen sequence; Event, Command, Delegate -->
	<target name="create-sequence-include-delegate">
	    <copy file="${templates.dir}/${version}/Event.tpl" tofile="${project-uri}/${events.dir}/${sequence.name}Event.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="sequence"  value="${sequence.name}" />
	                <token key="namespace" value="${namespace}"     />
	                <token key="events"    value="${events.dir}"    />
	            </replacetokens>
	        </filterchain>
	    </copy>
	    <copy file="${templates.dir}/${version}/Command.tpl" tofile="${project-uri}/${commands.dir}/${sequence.name}Command.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="sequence"  value="${sequence.name}" />
	                <token key="namespace" value="${namespace}"     />
	                <token key="events"    value="${events.dir}"    />
	                <token key="commands"  value="${commands.dir}"  />
	                <token key="business"  value="${business.dir}"  />
	            </replacetokens>
	        </filterchain>
	    </copy>
	    <copy file="${templates.dir}/${version}/BusinessDelegate.tpl" tofile="${project-uri}/${business.dir}/${sequence.name}Delegate.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="sequence"  value="${sequence.name}" />
	                <token key="namespace" value="${namespace}"     />
	                <token key="business"  value="${business.dir}"  />
	            </replacetokens>
	        </filterchain>
	    </copy>
	</target>
	
	<!-- create cairngen exclude-delegate-sequence; Event, Command -->
	<target name="create-sequence-exclude-delegate">
	    <copy file="${templates.dir}/${version}/Event.tpl" tofile="${project-uri}/${events.dir}/${sequence.name}Event.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="sequence"  value="${sequence.name}" />
	                <token key="namespace" value="${namespace}"     />
	                <token key="events"    value="${events.dir}"    />          
	            </replacetokens>
	        </filterchain>
	    </copy>
	    <copy file="${templates.dir}/${version}/Command.tpl" tofile="${project-uri}/${commands.dir}/${sequence.name}Command.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="sequence"  value="${sequence.name}" />
	                <token key="namespace" value="${namespace}"     />
	                <token key="events"    value="${events.dir}"    />
	                <token key="commands"  value="${commands.dir}"  />
	                <token key="business"  value="${business.dir}"  />
	            </replacetokens>
	        </filterchain>
	    </copy>
	</target>
	
	<!-- create caringorm value object -->
	<target name="create-value-object">
	    <copy file="${templates.dir}/${version}/ValueObject.tpl" tofile="${project-uri}/${vo.dir}/${sequence.name}VO.as" overwrite="${overwrite}" >
	        <filterchain>
	           <replacetokens>
	                <token key="vo"        value="${vo.name}"   />
	                <token key="namespace" value="${namespace}" />
                    <token key="vo.dir"    value="${vo.dir}"    />           
	            </replacetokens>
	        </filterchain>
	    </copy>
	</target>

</project>

