2 *******************************************************************************
\r
3 * Copyright (C) 2001-2007, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.impl;
\r
9 import com.ibm.icu.util.VersionInfo;
\r
11 public final class ICUDebug {
\r
12 private static String params;
\r
15 params = System.getProperty("ICUDebug");
\r
17 catch (SecurityException e) {
\r
20 private static boolean debug = params != null;
\r
21 private static boolean help = debug && (params.equals("") || params.indexOf("help") != -1);
\r
25 System.out.println("\nICUDebug=" + params);
\r
29 public static final String javaVersionString = System.getProperty("java.version");
\r
30 public static final boolean isJDK14OrHigher;
\r
31 public static final VersionInfo javaVersion;
\r
33 public static VersionInfo getInstanceLenient(String s) {
\r
35 // preserve only digits, separated by single '.'
\r
36 // ignore over 4 digit sequences
\r
37 // does not test < 255, very odd...
\r
39 char[] chars = s.toCharArray();
\r
40 int r = 0, w = 0, count = 0;
\r
41 boolean numeric = false; // ignore leading non-numerics
\r
42 while (r < chars.length) {
\r
43 char c = chars[r++];
\r
44 if (c < '0' || c > '9') {
\r
47 // only four digit strings allowed
\r
59 while (w > 0 && chars[w-1] == '.') {
\r
63 String vs = new String(chars, 0, w);
\r
65 return VersionInfo.getInstance(vs);
\r
69 javaVersion = getInstanceLenient(javaVersionString);
\r
71 VersionInfo java14Version = VersionInfo.getInstance("1.4.0");
\r
73 isJDK14OrHigher = javaVersion.compareTo(java14Version) >= 0;
\r
76 public static boolean enabled() {
\r
80 public static boolean enabled(String arg) {
\r
82 boolean result = params.indexOf(arg) != -1;
\r
83 if (help) System.out.println("\nICUDebug.enabled(" + arg + ") = " + result);
\r
89 public static String value(String arg) {
\r
90 String result = "false";
\r
92 int index = params.indexOf(arg);
\r
94 index += arg.length();
\r
95 if (params.length() > index && params.charAt(index) == '=') {
\r
97 int limit = params.indexOf(",", index);
\r
98 result = params.substring(index, limit == -1 ? params.length() : limit);
\r
104 if (help) System.out.println("\nICUDebug.value(" + arg + ") = " + result);
\r
109 /* static public void main(String[] args) {
\r
119 for (int i = 0; i < tests.length; ++i) {
\r
120 System.out.println(tests[i] + " => " + getInstanceLenient(tests[i]));
\r