<?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 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/

    SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *  Actuate Corporation  - initial API and implementation
 *  
 *************************************************************************
 *
 *  build.xml
 *
 *  Build script for project org.eclipse.datatools.connectivity.oda.profile.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.oda.flatfile.nl" default="Jar" basedir=".">
	<description>NL Fragment for org.eclipse.datatools.connectivity.oda.profile</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.oda.profile.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>
