blob: 4b6f8ab48890d62759e4f8c1250e70be93ffb249 [file] [log] [blame]
/* Copyright (C) 2008-2012 IBM Corporation and Others. All Rights Reserved. */
/**
*
*/
package com.ibm.icu.dev.scan;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;
import javax.xml.parsers.ParserConfigurationException;
import org.unicode.cldr.util.LDMLUtilities;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.ibm.icu.dev.meta.IcuInfo;
import com.ibm.icu.dev.meta.XMLUtil;
import com.ibm.icu.lang.UCharacter;
import com.ibm.icu.text.Collator;
import com.ibm.icu.text.DateFormat;
import com.ibm.icu.text.RuleBasedCollator;
import com.ibm.icu.util.TimeZone;
import com.ibm.icu.util.ULocale;
import com.ibm.icu.util.VersionInfo;
/**
* @author srl
*
*/
public class ScanICU extends CapScan{
protected ScanICU() {
super(ScanICU.class.getName());
}
/**
* @param args
* @throws ParserConfigurationException
* @throws IOException
* @throws IOException
* @throws ParserConfigurationException
* @throws IOException
*/
public static void main(String[] args) throws IOException, ParserConfigurationException {
new ScanICU().runMain(args);
}
protected String getProduct() {
return "icu4j";
}
protected String getRelease() {
/*
* try {
} catch(NoClassDefFoundError ncdf) {
System.err.println(prog+": Can't get ICU version: " + ncdf.toString());
System.exit(1);
} catch(NoSuchFieldError nsme) {
System.err.println(prog+": Can't get ICU version: " + nsme.toString());
System.exit(1);
}
*/
return IcuInfo.versionInfoToShortString(VersionInfo.ICU_VERSION);
}
protected void addCapabilitiesTo(Element capabilities) {
addCapability(out, capabilities, "unicode", UCharacter.getUnicodeVersion());
try {
addCapability(out, capabilities, "uca", Collator.getInstance().getUCAVersion());
} catch(NoSuchMethodError nsme) {
System.err.println(prog+": Note: "+nsme.toString());
}
try {
addCapability(out, capabilities, "tz", TimeZone.getTZDataVersion());
} catch(NoSuchMethodError nsme) {
System.err.println(prog+": Note: "+nsme.toString());
}
addFormatting(capabilities);
addCollation(capabilities);
}
void addFormatting(Element capabilities) {
Element locs = addCapability(out, capabilities, CapScan.FORMATTING);
try {
ULocale available[] = ULocale.getAvailableLocales();
locs.setAttribute("total", new Integer(available.length).toString());
String locinfo = "";
Spinner sp = new Spinner(locs.getNodeName(),available.length);
for(int i=0;i<available.length;i++) {
ULocale loc = available[i];
if(loc.toString().equals("root")) continue;
try {
DateFormat fmt = null;
try {
fmt = DateFormat.getTimeInstance(DateFormat.FULL, loc);
}catch (Throwable t) {
fmt = DateFormat.getTimeInstance(DateFormat.FULL, loc.toLocale());
}
fmt.format(new Date(1234));
locinfo = locinfo + " " + loc.toString();
sp.spin(loc.getBaseName());
} catch (Throwable t) {
System.err.println(prog+": loc fail: " + loc + " - " + t.toString());
}
}
Node tt = out.createTextNode(locinfo.trim());
locs.appendChild(tt);
} catch(NoClassDefFoundError ncdf) {
System.err.println(prog+": locales: " + ncdf.toString());
} catch(NoSuchMethodError ncdf) {
System.err.println(prog+": locales: " + ncdf.toString());
}
}
void addCollation(Element capabilities) {
{
Element locs = addCapability(out, capabilities, CapScan.COLLATION);
try {
ULocale available[] = Collator.getAvailableULocales();
Spinner sp = new Spinner(locs.getNodeName(),available.length);
locs.setAttribute("total", new Integer(available.length).toString());
String locinfo = "";
for(int i=0;i<available.length;i++) {
ULocale loc = available[i];
if(loc.toString().equals("root")) continue;
try {
// Collator.getInstance(loc);
locinfo = locinfo + " " + loc.toString();
sp.spin(loc.getBaseName());
} catch (Throwable t) {
System.err.println("loc fail: " + loc + " - " + t.toString());
}
}
Node tt = out.createTextNode(locinfo.trim());
locs.appendChild(tt);
} catch(NoClassDefFoundError ncdf) {
System.err.println("locales: " + ncdf.toString());
} catch(NoSuchMethodError ncdf) {
System.err.println("locales: " + ncdf.toString());
}
}
}
}