| package com.ibm.icu.dev.tool.localeconverter; |
| import java.io.*; |
| import java.util.*; |
| /** |
| * @author ram |
| * |
| * To change this generated comment edit the template variable "typecomment": |
| * Window>Preferences>Java>Templates. |
| * To enable and disable the creation of type comments go to |
| * Window>Preferences>Java>Code Generation. |
| */ |
| public class ICU3LocaleWriter extends LocaleWriter { |
| public ICU3LocaleWriter(PrintStream out) { |
| super(out); |
| } |
| private ListResourceBundle bundle = null; |
| protected void open(Locale locale) { |
| print(locale.toString()); |
| println(" {"); |
| indent(); |
| } |
| public ICU3LocaleWriter(PrintStream out, PrintStream err) { |
| super(out, err); |
| } |
| public ICU3LocaleWriter(ListResourceBundle bundle,PrintStream out, PrintStream err) { |
| super(out, err); |
| this.bundle = bundle; |
| } |
| public void write(Locale locale){ |
| open(locale); |
| Enumeration keys = bundle.getKeys(); |
| while(keys.hasMoreElements()){ |
| String key = (String) keys.nextElement(); |
| Object o = bundle.getObject(key); |
| write(key, o); |
| } |
| close(); |
| } |
| public void write(String key, Object o){ |
| if(key!=null) print(key); |
| if(o instanceof String){ |
| write((String) o); |
| }else if( o instanceof Integer[]){ |
| write((Integer[]) o); |
| }else if(o instanceof byte[]){ |
| write((byte[]) o); |
| }else if(o instanceof Integer){ |
| write((Integer) o); |
| }else if(o instanceof Object[][]){ |
| write((Object[][]) o); |
| }else if(o instanceof Object[]){ |
| write((Object[]) o); |
| } |
| } |
| protected void write(String str){ |
| print("{"); |
| printString(str); |
| println("}"); |
| } |
| protected void write(Integer[] o){ |
| println(":intvector { "); |
| indent(); |
| if(o!=null){ |
| for(int i=0; i< o.length; i++){ |
| print(o[i].toString()); |
| println(","); |
| } |
| } |
| outdent(); |
| println(" }"); |
| } |
| private String toHex(byte b){ |
| int i =(int)((char) (b & 0xFF)); |
| String temp = Integer.toHexString(i); |
| if(temp.length()<2){ |
| return "0"+temp; |
| }else{ |
| return temp; |
| } |
| } |
| |
| protected void write(byte[] o){ |
| print(":bin{ "); |
| indent(); |
| if(o!=null){ |
| for(int i=0; i< o.length; i++){ |
| print(toHex(o[i])); |
| } |
| } |
| outdent(); |
| println(" }"); |
| } |
| protected void write(Integer o){ |
| print(":int { "); |
| indent(); |
| if(o!=null){ |
| print(o.toString()); |
| } |
| outdent(); |
| println(" }"); |
| } |
| protected void write(Object[] o){ |
| String key = null; |
| println(":array { "); |
| indent(); |
| for(int i=0; i<o.length;i++){ |
| if(o[i] instanceof String){ |
| printString((String)o[i]); |
| }else{ |
| write(key,o[i]); |
| } |
| println(","); |
| } |
| outdent(); |
| println(" }"); |
| } |
| protected void write(Object[][] o){ |
| String key = null; |
| println(":table {"); |
| indent(); |
| for(int i=0; i< o.length;i++){ |
| |
| if(o[i][1] instanceof String){ |
| print((String) o[i][0]); |
| print("{"); |
| printString((String) o[i][1]); |
| println("}"); |
| }else{ |
| write((String) o[i][0], o[i][1]); |
| println(""); |
| } |
| |
| } |
| outdent(); |
| println(" }"); |
| } |
| /////////////////////////////////////////////////// |
| /// Only for compatibility with super class |
| /// not required otherwise |
| ////////////////////////////////////////////////// |
| |
| /////// BEGIN ////////////////// |
| |
| protected void write(String tag, String value) { |
| print(tag); |
| print(" { "); |
| printString(value); |
| println(" }"); |
| } |
| |
| |
| protected void write(String tag, String[] value) { |
| if (tag != null) { |
| print(tag); |
| println(" { "); |
| } else { |
| println("{"); |
| } |
| indent(); |
| for (int i = 0; i < value.length; i++) { |
| printString(value[i]); |
| println(","); |
| } |
| outdent(); |
| println("}"); |
| } |
| protected void write2D(String tag, String[][] value) { |
| print(tag); |
| println(" { "); |
| indent(); |
| for (int i = 0; i < value.length; i++) { |
| write(null, value[i]); |
| } |
| outdent(); |
| println("}"); |
| } |
| protected void writeTagged(String tag, Object[][] value) { |
| print(tag); |
| println(" { "); |
| indent(); |
| for (int i = 0; i < value.length; i++) { |
| write((String)value[i][0], value[i][1]); |
| } |
| outdent(); |
| println("}"); |
| } |
| protected void writeTagged(String tag, String[][] value) { |
| print(tag); |
| println(" { "); |
| indent(); |
| for (int i = 0; i < value.length; i++) { |
| write(value[i][0], value[i][1]); |
| } |
| outdent(); |
| println("}"); |
| } |
| //////////////////// END ////////////////////////////////// |
| protected void close() { |
| outdent(); |
| println("}"); |
| super.closeFileHandle(); |
| } |
| |
| protected String getStringJoiningCharacter() { |
| return ""; |
| } |
| |
| } |