<?xml version="1.0" encoding="UTF-8"?>
<!--
 *************************************************************************
 * Copyright (c) 2004, 2006 Actuate Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *  Actuate Corporation  - initial API and implementation
 *  
 *************************************************************************
 *
 *  build.xml
 *
 *  Build script for project org.eclipse.datatools.sqltools.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.sqltools.db.generic.nl" default="Jar" basedir=".">
	<description>NL Fragment for org.eclipse.datatools.sqltools.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.sqltools.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>
