From: Steven R. Loomis Date: Sun, 20 Oct 2013 07:49:28 +0000 (+0000) Subject: ICU-10491 check in J samples X-Git-Tag: milestone-59-0-1~2389 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a2f8930fe931c6cd1b90211ed3e885955c1d9762;p=icu ICU-10491 check in J samples X-SVN-Rev: 34590 --- diff --git a/.gitattributes b/.gitattributes index 77d88f7cde4..449a9051cf5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -579,6 +579,13 @@ icu4j/manifest.stub -text icu4j/perf-tests/data/icuperf2report.xsl -text icu4j/samples/build.properties -text icu4j/samples/manifest.stub -text +icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/es.res -text +icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/res_index.res -text +icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/root.res -text +icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/es.res -text +icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/mt.res -text +icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/res_index.res -text +icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/root.res -text icu4j/tools/build/.settings/org.eclipse.core.resources.prefs -text icu4j/tools/build/icu4j28.api.gz -text icu4j/tools/build/icu4j30.api.gz -text diff --git a/.gitignore b/.gitignore index 61b98da4e31..6577e10c9d8 100644 --- a/.gitignore +++ b/.gitignore @@ -915,6 +915,8 @@ icu4j/main/tests/packaging/out icu4j/main/tests/translit/out icu4j/out icu4j/perf-tests/out +icu4j/samples/build-local.properties +icu4j/samples/out icu4j/tools/build/out icu4j/tools/misc/out tools/multi/c/Makefile.local diff --git a/icu4j/samples/build.xml b/icu4j/samples/build.xml index c8602072e4f..44c24391832 100644 --- a/icu4j/samples/build.xml +++ b/icu4j/samples/build.xml @@ -1,6 +1,6 @@ @@ -28,4 +28,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/PopulationData.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/PopulationData.java new file mode 100644 index 00000000000..c37be4119c3 --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/PopulationData.java @@ -0,0 +1,74 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.samples.iuc; + +import java.util.HashSet; +import java.util.Set; + +import com.ibm.icu.util.ULocale; +import com.ibm.icu.util.UResourceBundle; +import com.ibm.icu.util.UResourceBundleIterator; + +/** + * @author srl + * + */ +public class PopulationData { + /** + * Entry in the population list + */ + public static class TerritoryEntry implements Comparable { + private String territoryName; + private double population; + public TerritoryEntry(String displayCountry, double population) { + this.territoryName = displayCountry; + this.population = population; + } + public String territoryName() { + return territoryName; + } + public double population() { + return population; + } + /* (non-Javadoc) + * @see java.lang.Comparable#compareTo(java.lang.Object) + */ + public int compareTo(TerritoryEntry o) { + int rc = 0; + if (rc==0) rc = territoryName.compareTo(o.territoryName()); + if (rc==0) rc = ((Double)population).compareTo(o.population()); + return rc; + } + }; + public static Set getTerritoryEntries(ULocale loc, Set entries) { + // Note: format of supplementalData is NOT STATIC and may change. It is internal to ICU! + UResourceBundle suppData = SupplementalUtilities.getICUSupplementalData(); + UResourceBundle territoryInfo = suppData.get("territoryInfo"); +// int nTerr = territoryInfo.getSize(); + for(UResourceBundleIterator iter = territoryInfo.getIterator();iter.hasNext();) { + UResourceBundle rawEntry= iter.next(); + UResourceBundle territoryF = rawEntry.get("territoryF"); + int vec[] = territoryF.getIntVector(); + + // now we have the entry + // territoryF = { gdp, literacy, population } + String terrID = rawEntry.getKey(); + ULocale territory = new ULocale("und", terrID); + entries.add(new TerritoryEntry(territory.getDisplayCountry(loc), SupplementalUtilities.ldml2d(vec[2]))); + } + return entries; + } + + public static void main(String... args) { + System.out.println("Loading population/territory data from CLDR"); + Set territoryEntries = getTerritoryEntries(ULocale.getDefault(), new HashSet()); + System.out.println(".. count="+ territoryEntries.size()); + for(TerritoryEntry te : territoryEntries) { + System.out.println(" "+ te.territoryName() + " = " + te.population()); + } + } +} diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample13_Hello.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample13_Hello.java new file mode 100644 index 00000000000..99fd8ec92ac --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample13_Hello.java @@ -0,0 +1,18 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.samples.iuc; + +import com.ibm.icu.text.LocaleDisplayNames; +import com.ibm.icu.util.ULocale; + +public class Sample13_Hello { + public static void main(String... args) { + String world = LocaleDisplayNames + .getInstance(ULocale.getDefault()).regionDisplayName("001"); + System.out.println("Hello, " + world + "\u2603"); + } +} diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample20_Message.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample20_Message.java new file mode 100644 index 00000000000..df2da1e7a7d --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample20_Message.java @@ -0,0 +1,36 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.samples.iuc; + +import java.util.HashMap; +import java.util.Map; + +import com.ibm.icu.text.LocaleDisplayNames; +import com.ibm.icu.text.LocaleDisplayNames.DialectHandling; +import com.ibm.icu.text.MessageFormat; +import com.ibm.icu.util.ULocale; + +/** + * @author srl + * + */ +public class Sample20_Message { + public static void main(String... args) { + ULocale defaultLocaleID = ULocale.getDefault(); + LocaleDisplayNames ldn = LocaleDisplayNames.getInstance(defaultLocaleID, DialectHandling.DIALECT_NAMES); + String defaultLocaleName = ldn.localeDisplayName(defaultLocaleID); + String world = ldn.regionDisplayName("001"); + MessageFormat fmt = new MessageFormat("A hello to {part, number, percent} of the {world}, in {mylocale}, on {today, date}!", + defaultLocaleID); + Map msgargs = new HashMap(); + msgargs.put("part", 1.00); + msgargs.put("world", world); + msgargs.put("mylocale", defaultLocaleName); + msgargs.put("today", System.currentTimeMillis()); + System.out.println(fmt.format(msgargs, new StringBuffer(), null)); + } +} diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample30_ResHello.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample30_ResHello.java new file mode 100644 index 00000000000..90ebf1dd673 --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample30_ResHello.java @@ -0,0 +1,26 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.samples.iuc; + +import com.ibm.icu.util.ULocale; +import com.ibm.icu.util.UResourceBundle; + +/** + * @author srl + * + */ +public class Sample30_ResHello { + public static void main(String... args) { + ULocale locale = ULocale.getDefault(); + UResourceBundle bundle = + UResourceBundle.getBundleInstance( + Sample30_ResHello.class.getPackage().getName().replace('.', '/')+"/data/reshello", + locale, + Sample30_ResHello.class.getClassLoader()); + System.out.println(bundle.getString("hello")); + } +} diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample40_PopMsg.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample40_PopMsg.java new file mode 100644 index 00000000000..6d947ee0fc2 --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample40_PopMsg.java @@ -0,0 +1,51 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.samples.iuc; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import com.ibm.icu.samples.iuc.PopulationData.TerritoryEntry; +import com.ibm.icu.text.MessageFormat; +import com.ibm.icu.util.ULocale; +import com.ibm.icu.util.UResourceBundle; + +/** + * @author srl + * + */ +public class Sample40_PopMsg { + public static void main(String... args) { + // setup + ULocale locale = ULocale.getDefault(); + Set territoryList; + territoryList = PopulationData.getTerritoryEntries(locale, + new HashSet()); + UResourceBundle resourceBundle = + UResourceBundle.getBundleInstance( + Sample40_PopMsg.class.getPackage().getName().replace('.', '/')+"/data/popmsg", + locale, + Sample40_PopMsg.class.getClassLoader()); + + // say hello + String welcome = resourceBundle.getString("welcome"); + Map welcomeArgs = new HashMap(); + welcomeArgs.put("territoryCount", territoryList.size()); + System.out.println( MessageFormat.format(welcome, welcomeArgs) ); + + // Population roll call + String info = resourceBundle.getString("info"); + Map infoArgs = new HashMap(); + for(PopulationData.TerritoryEntry entry : territoryList) { + infoArgs.put("territory", entry.territoryName()); + infoArgs.put("population", entry.population()); + System.out.println(MessageFormat.format(info, infoArgs)); + } + } +} diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample50_PopSort.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample50_PopSort.java new file mode 100644 index 00000000000..c2ccb550adb --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/Sample50_PopSort.java @@ -0,0 +1,57 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.samples.iuc; + +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +import com.ibm.icu.samples.iuc.PopulationData.TerritoryEntry; +import com.ibm.icu.text.Collator; +import com.ibm.icu.text.MessageFormat; +import com.ibm.icu.util.ULocale; +import com.ibm.icu.util.UResourceBundle; + +/** + * @author srl + * + */ +public class Sample50_PopSort { + public static void main(String... args) { + // setup + final ULocale locale = ULocale.getDefault(); + Set territoryList; + final Collator collator = Collator.getInstance(locale); + territoryList = PopulationData.getTerritoryEntries(locale, + new TreeSet(new Comparator(){ + public int compare(TerritoryEntry o1, TerritoryEntry o2) { + return collator.compare(o1.territoryName(), o2.territoryName()); + }})); + UResourceBundle resourceBundle = + UResourceBundle.getBundleInstance( + Sample40_PopMsg.class.getPackage().getName().replace('.', '/')+"/data/popmsg", + locale, + Sample40_PopMsg.class.getClassLoader()); + + // say hello + String welcome = resourceBundle.getString("welcome"); + Map welcomeArgs = new HashMap(); + welcomeArgs.put("territoryCount", territoryList.size()); + System.out.println( MessageFormat.format(welcome, welcomeArgs) ); + + // Population roll call + String info = resourceBundle.getString("info"); + Map infoArgs = new HashMap(); + for(PopulationData.TerritoryEntry entry : territoryList) { + infoArgs.put("territory", entry.territoryName()); + infoArgs.put("population", entry.population()); + System.out.println(MessageFormat.format(info, infoArgs)); + } + } +} diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/SupplementalUtilities.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/SupplementalUtilities.java new file mode 100644 index 00000000000..e1a3cbc4d3e --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/SupplementalUtilities.java @@ -0,0 +1,81 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.samples.iuc; + +import com.ibm.icu.impl.ICUResourceBundle; +import com.ibm.icu.util.UResourceBundle; + +/** + * @author srl + * + */ +public class SupplementalUtilities { + /** + * Convert LDML2ICUConverter format floating point (territoryF, etc) + * into double. + * See: SupplementalMapper.java + * @param n input number, such as -48123456 + * @return double value, such as -123.456 + * @internal + */ + public static double ldml2d(int n) { + if(n == 0) { + return 0.; + } + boolean neg = false; + if(n < 0) { + n = -n; + neg = true; + } + int exp = (n/1000000); + n -= (exp * 1000000); + int sexp = exp - 50; // signed exponent + double d = n; + d = d * Math.pow(10, (sexp-5)); // -5 because 50 isn't quite right.. + if(neg) { + d = -d; + } + return d; + } + + /** Test function */ + public static void main(String... args) { + + System.out.println("Testingldml2d"); + int junk[] = { + 49990000, // 99% + 48680000, // 6.8% + 57344400, // ? + 52940000, // ? + 0, + -48123456, // gets -0.012346 not -123.456 + -52123456, // this one gets -123.456 + 46100000, + 63146600 + }; + + for(int i=0;i " + Double.toString(ldml2d(junk[i]))); + } + + System.out.println(); + System.out.println("Testing getICUSupplementalData"); + System.out.println("SupplementalData has " + getICUSupplementalData().getSize() + " size. (nonzero is good!)" ); + } + + /** + * Open ICU supplemental data + * @return the bundle + */ + public static UResourceBundle getICUSupplementalData() { + UResourceBundle suppData = UResourceBundle.getBundleInstance( + ICUResourceBundle.ICU_BASE_NAME, + "supplementalData", + ICUResourceBundle.ICU_DATA_CLASS_LOADER); + return suppData; + } +} diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/es.res b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/es.res new file mode 100644 index 00000000000..9357d9adcdc Binary files /dev/null and b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/es.res differ diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/res_index.res b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/res_index.res new file mode 100644 index 00000000000..39248c94bb7 Binary files /dev/null and b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/res_index.res differ diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/root.res b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/root.res new file mode 100644 index 00000000000..7ea57d24524 Binary files /dev/null and b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/popmsg/root.res differ diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/es.res b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/es.res new file mode 100644 index 00000000000..eeb46990027 Binary files /dev/null and b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/es.res differ diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/mt.res b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/mt.res new file mode 100644 index 00000000000..adb5966d5e2 Binary files /dev/null and b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/mt.res differ diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/res_index.res b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/res_index.res new file mode 100644 index 00000000000..78b1a8a6b1b Binary files /dev/null and b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/res_index.res differ diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/root.res b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/root.res new file mode 100644 index 00000000000..f5c3cdd8d24 Binary files /dev/null and b/icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/root.res differ diff --git a/icu4j/samples/src/com/ibm/icu/samples/iuc/package-info.java b/icu4j/samples/src/com/ibm/icu/samples/iuc/package-info.java new file mode 100644 index 00000000000..1716eed25ed --- /dev/null +++ b/icu4j/samples/src/com/ibm/icu/samples/iuc/package-info.java @@ -0,0 +1,13 @@ +/* + ******************************************************************************* + * Copyright (C) 2013, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +/** + * @author srl + * + * This package contains samples for the IUC ICU workshops. + * + */ +package com.ibm.icu.samples.iuc; \ No newline at end of file