blob: e02c8133b1b5060a191448f296e6130afbd997a2 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 2002-2004, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.dev.tool.localeconverter;
import java.io.*;
import java.util.*;
public class JavaLocaleWriter extends LocaleWriter {
public JavaLocaleWriter(PrintStream out) {
super(out);
}
public JavaLocaleWriter(PrintStream out, PrintStream err) {
super(out, err);
}
public void open(Locale locale) {
println(HEADER);
indent(3);
}
protected void write(String tag, Object o) {
if ("collations".equals(tag)) {
writeTagged(tag,(Object[][])o);
} else if (!(o instanceof CollationItem[])) {
super.write(tag, o);
} else {
CollationItem[] items = (CollationItem[])o;
print("{ ");
printString("collations");
println(", ");
for (int i = 0; i < items.length; i++) {
if(items[i]!=null){
printString(items[i].toString());
if (items[i].comment != null) {
print("+");
tabTo(30);
print("//");
println(items[i].comment);
} else {
println("+");
}
}
}
println("\"\"");
println(" },");
}
}
public void write(String tag, String value) {
print("{ ");
printString(tag);
print(", ");
printString(value);
println(" },");
}
public void write(String tag, String[] value) {
print("{ ");
if (tag != null) {
printString(tag);
println(",");
} else {
println("");
}
indent();
println("new String[] {");
indent();
for (int i = 0; i < value.length; i++) {
printString(value[i]);
println(",");
}
outdent();
println("}");
outdent();
println("},");
}
public void write2D(String tag, String[][] value) {
print("{ ");
printString(tag);
println(",");
indent();
println("new String[][] {");
indent();
for (int i = 0; i < value.length; i++) {
println("{");
indent();
for (int j = 0; j < value[i].length; j++) {
printString(value[i][j]);
println(",");
}
outdent();
println("},");
}
outdent();
println("}");
outdent();
println("},");
}
public void writeTagged(String tag, String[][] value) {
print("{ ");
printString(tag);
println(",");
indent();
println("new String[][] {");
indent();
for (int i = 0; i < value.length; i++) {
write(value[i][0], value[i][1]);
}
outdent();
println("}");
outdent();
println("},");
}
public void writeTagged(String tag, Object[][] value) {
print("{ ");
printString(tag);
println(",");
indent();
println("new String[][] {");
indent();
for (int i = 0; i < value.length; i++) {
write((String)value[i][0], value[i][1]);
}
outdent();
println("}");
outdent();
println("},");
}
public void close() {
outdent(3);
print(FOOTER);
println("");
}
protected void appendEscapedChar(char c, StringBuffer buffer) {
if (c < '\u0020' || c == '"' || c == '\\') {
buffer.append('\\');
buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
buffer.append(HEX_DIGIT[(c & 0007)]);
} else {
super.appendEscapedChar(c, buffer);
}
}
protected String getStringJoiningCharacter() {
return "+";
}
private static final String HEADER =
"package java.text.resources;\n"+
"import java.util.ListResourceBundle;\n"+
"public class TestLocaleElements extends ListResourceBundle {\n"+
" public Object[][] getContents() {\n"+
" return new Object[][] {";
private static final String FOOTER =
" };\n"+
" }\n"+
"}";
//{{DECLARE_CONTROLS
//}}
}