| ******************************************************************************* |
| * © 2016 and later: Unicode, Inc. and others. |
| * License & terms of use: http://www.unicode.org/copyright.html |
| ******************************************************************************* |
| * Copyright (C) 2012-2013, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| |
| [Overview] |
| |
| This directory contains a tool used for maintaining ICU's ISO 4217 currency |
| code mapping data. ICU uses a resource generated by this tool for mapping |
| ISO 4217 currency alpha codes to numeric codes. |
| |
| |
| [Files] |
| |
| package com.ibm.icu.dev.tool.currency |
| |
| Main.java - The tool's entry point |
| NumericCodeData.java - The mapping data used by ICU |
| CurrencyDataParser.java - ISO 4217 XML data parser |
| CurrencyDataEntry.java - ISO 4217 XML data entry |
| |
| |
| [Details] |
| |
| com.ibm.icu.dev.tool.NumericCodeData has String[][] CODE_MAP_DATA. |
| This array represents mappings between ISO 4217 alpha codes and |
| numeric codes. ICU's resource bundle currencyNumericCodes is generated |
| from the table. |
| |
| ISO 4217 maintenance agency - SIX Interbank Clearing distributes |
| ISO 4217 code data in XML format. These files are found in |
| http://www.currency-iso.org/iso_index/iso_tables.htm. There are two |
| files that we're interested in. |
| |
| - http://www.currency-iso.org/dl_iso_table_a1.xml |
| - http://www.currency-iso.org/dl_iso_tables_a3.xml |
| |
| Table A.1 contains current currencies and funds and Table A.3 contains |
| historic denominations. |
| |
| The tool supports 2 commands - check / resource. |
| |
| 1) check |
| |
| This command compares the hardcoded mapping data in NumericCodeData.java |
| with the ISO 4217 XML data files side by side and check differences. |
| |
| 2) resource |
| |
| This command writes out the hardcoded mapping data in NumericCodeData.java |
| in ICU resource bundle source format - currencyNumericCodes.txt. |
| |
| |
| [Release Tasks] |
| |
| For each ICU release, we should check if the mapping data is up to date. |
| |
| Prerequisites: Java 6+, ant |
| |
| First, run the ant target "check". This ant target download XML files from |
| the SIX Interbank Clearing site and invoke the tool command "check". |
| |
| When the target successfully finished, you should see the log like below: |
| ---------------------------------------------------------------------------- |
| C:\devtools\trunk\currency>ant |
| Buildfile: C:\devtools\trunk\currency\build.xml |
| |
| classes: |
| |
| _checkLocalXml: |
| |
| _localXml: |
| |
| _downloadXml: |
| [echo] Downloading ISO 4217 XML data files |
| [get] Getting: http://www.currency-iso.org/dam/downloads/lists/list_one.xm |
| l |
| [get] To: C:\devtools\trunk\currency\out\xml\list_one.xml |
| [get] Getting: http://www.currency-iso.org/dam/downloads/lists/list_three. |
| xml |
| [get] To: C:\devtools\trunk\currency\out\xml\list_three.xml |
| |
| xmlData: |
| |
| check: |
| [java] [OK] ICU data is synchronized with the reference data |
| |
| resource: |
| [echo] ISO 4217 numeric code mapping data was successfully created in C:\de |
| vtools\trunk\currency/out/res |
| |
| build: |
| |
| BUILD SUCCESSFUL |
| Total time: 1 second |
| ---------------------------------------------------------------------------- |
| In this case, our data is synchronized with the latest XML data and you're done. |
| |
| |
| If the data is out of sync, you should see message like below: |
| ---------------------------------------------------------------------------- |
| check: |
| [java] Missing alpha code in ICU map [ZWR] |
| [java] Codes not found in the reference data: ZZZ |
| |
| BUILD FAILED |
| C:\devtools\trunk\currency\build.xml:54: Java returned: 1 |
| ---------------------------------------------------------------------------- |
| In this case, you have to update the hardcoded data in NumericCodeData. |
| You can either edit the table in NumericCodeData manually, or run the tool |
| command "print" and copy the output and paste it to the table. |
| |
| Once you make sure "ant check" returns no errors, run "ant resource". This |
| target generate out/res/currencyNumericCodes.txt. The file should go to |
| <icu4c>/source/data/misc directory. |
| |
| Note: The default ant target does both operation. Although it creates the |
| ICU resource file, you do not need to replace the one in ICU4C package with |
| the newly generated one if "check" successfully finished. |
| |