<?xml version="1.0" encoding="UTF-8"?>
<!--
 *************************************************************************
 * Copyright (c) 2006 Actuate Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *  Actuate Corporation - initial API and implementation
 *  
 *************************************************************************
 *
 *  build.xml
 *
 *  Build script for project org.eclipse.datatools.connectivity.db.generic.nl
 *
 * "Clean" - Clean nl.jar file and *.properties files generated from
 *           native2ascii.exe.
 * "Jar"   - Convert *_xx_YY.msg files into *_xx_YY.properties files by native2ascii.exe and
 *            create nl.jar file.
 * "Export" - Export the project, for instance, jar files are copied to a designated folder. 
 *            this task must be called after calling Jar task, so it needn't depend on Jar explicitly
 *
 *  Usage:
 *    ant [any one or more of the public targets] 
 *        -Declipse.home=<your eclipse home> 
 *		  -Ddtp.home=<your DTP plugins source home>  [optional]
 *
 *  Default target is "Jar".
 *
 *  Notes:
 *  1. classpath need to be set for junit.jar
 *  2. The build script requires Ant 1.6
 *
-->

<project name="org.eclipse.datatools.connectivity.db.generic.nl" default="Jar" basedir=".">
	<description>NL Fragment for org.eclipse.datatools.connectivity.db.generic</description>

	<property file="META-INF/MANIFEST.MF" />
    <property name="dir.src" value="src" />
 	<property name="dir.bin" value="bin" />
	<property name="nl.group" value="1" />
	<property name="module.name" value="org.eclipse.datatools.connectivity.db.generic.nl" />
	<property name="jar.name" value="${module.name}${nl.group}_${Bundle-Version}.jar" />

	<target name="Clean">
		<delete>
			<fileset dir="." includes="**/*_??_??.properties" />
			<fileset dir="." includes="${jar.name}" />
		</delete>
	</target>
	
	<target name="NativeToAscii" 
	     description="Execute native2ascii for *.msg files">


		<native2ascii encoding="Cp1252"
					  src="." 
					  dest="." 
					  ext=".properties" 
					  includes="**/*_de_DE.msg, **/*_fr_FR.msg, **/*_es_ES.msg"/>
		<native2ascii encoding="GBK" 
					  src="." 
					  dest="." 
					  ext=".properties" 
					  includes="**/*_zh_CN.msg"/>	
		<native2ascii encoding="SJIS" 
					  src="." 
					  dest="." 
					  ext=".properties"
					  includes="**/*_ja_JP.msg"/>
		<native2ascii encoding="MS949" 
					  src="." 
					  dest="." 
					  ext=".properties"
					  includes="**/*_ko_KR.msg"/>
	</target>
	
	<target name="nl-jar">
		<jar destfile="${jar.name}" manifest="./META-INF/MANIFEST.MF">
		<zipfileset dir="${dir.src}"  includes="**/*.properties"/>
		   <fileset dir="." includes="plugin_??_??.properties"/>
		</jar>
	</target>
	
	<target name="Jar" depends="NativeToAscii, nl-jar" >
	</target>
	<target name="Export">
		<copy todir="${export.dir}">
	        <fileset dir="." includes="${jar.name}"/>
	  </copy>
	</target>

</project>
