662 lines
21 KiB
Java
662 lines
21 KiB
Java
![]() |
/* GENERATED SOURCE. DO NOT MODIFY. */
|
||
|
// © 2016 and later: Unicode, Inc. and others.
|
||
|
// License & terms of use: http://www.unicode.org/copyright.html
|
||
|
/*
|
||
|
*******************************************************************************
|
||
|
* Copyright (C) 1996-2016, International Business Machines Corporation and
|
||
|
* others. All Rights Reserved.
|
||
|
*******************************************************************************
|
||
|
*/
|
||
|
|
||
|
package android.icu.util;
|
||
|
|
||
|
import java.util.concurrent.ConcurrentHashMap;
|
||
|
|
||
|
/**
|
||
|
* Class to store version numbers of the form major.minor.milli.micro.
|
||
|
* @author synwee
|
||
|
*/
|
||
|
public final class VersionInfo implements Comparable<VersionInfo>
|
||
|
{
|
||
|
// public data members -------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Unicode 1.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_1_0;
|
||
|
/**
|
||
|
* Unicode 1.0.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_1_0_1;
|
||
|
/**
|
||
|
* Unicode 1.1.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_1_1_0;
|
||
|
/**
|
||
|
* Unicode 1.1.5 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_1_1_5;
|
||
|
/**
|
||
|
* Unicode 2.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_2_0;
|
||
|
/**
|
||
|
* Unicode 2.1.2 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_2_1_2;
|
||
|
/**
|
||
|
* Unicode 2.1.5 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_2_1_5;
|
||
|
/**
|
||
|
* Unicode 2.1.8 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_2_1_8;
|
||
|
/**
|
||
|
* Unicode 2.1.9 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_2_1_9;
|
||
|
/**
|
||
|
* Unicode 3.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_3_0;
|
||
|
/**
|
||
|
* Unicode 3.0.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_3_0_1;
|
||
|
/**
|
||
|
* Unicode 3.1.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_3_1_0;
|
||
|
/**
|
||
|
* Unicode 3.1.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_3_1_1;
|
||
|
/**
|
||
|
* Unicode 3.2 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_3_2;
|
||
|
|
||
|
/**
|
||
|
* Unicode 4.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_4_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 4.0.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_4_0_1;
|
||
|
|
||
|
/**
|
||
|
* Unicode 4.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_4_1;
|
||
|
|
||
|
/**
|
||
|
* Unicode 5.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_5_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 5.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_5_1;
|
||
|
|
||
|
/**
|
||
|
* Unicode 5.2 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_5_2;
|
||
|
|
||
|
/**
|
||
|
* Unicode 6.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_6_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 6.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_6_1;
|
||
|
|
||
|
/**
|
||
|
* Unicode 6.2 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_6_2;
|
||
|
|
||
|
/**
|
||
|
* Unicode 6.3 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_6_3;
|
||
|
|
||
|
/**
|
||
|
* Unicode 7.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_7_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 8.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_8_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 9.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_9_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 10.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_10_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 11.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_11_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 12.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_12_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 12.1 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_12_1;
|
||
|
|
||
|
/**
|
||
|
* Unicode 13.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_13_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 14.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_14_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 15.0 version
|
||
|
*/
|
||
|
public static final VersionInfo UNICODE_15_0;
|
||
|
|
||
|
/**
|
||
|
* Unicode 15.1 version
|
||
|
*/
|
||
|
@android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
|
||
|
public static final VersionInfo UNICODE_15_1;
|
||
|
|
||
|
/**
|
||
|
* ICU4J current release version
|
||
|
*/
|
||
|
public static final VersionInfo ICU_VERSION;
|
||
|
|
||
|
/**
|
||
|
* Data version string for ICU's internal data.
|
||
|
* Used for appending to data path (e.g. icudt43b)
|
||
|
* @deprecated This API is ICU internal only.
|
||
|
* @hide original deprecated declaration
|
||
|
* @hide draft / provisional / internal are hidden on Android
|
||
|
*/
|
||
|
@Deprecated
|
||
|
public static final String ICU_DATA_VERSION_PATH = "75b";
|
||
|
|
||
|
/**
|
||
|
* Data version in ICU4J.
|
||
|
* @deprecated This API is ICU internal only.
|
||
|
* @hide original deprecated declaration
|
||
|
* @hide draft / provisional / internal are hidden on Android
|
||
|
*/
|
||
|
@Deprecated
|
||
|
public static final VersionInfo ICU_DATA_VERSION;
|
||
|
|
||
|
/**
|
||
|
* Collation runtime version (sort key generator, string comparisons).
|
||
|
* If the version is different, sort keys for the same string could be different.
|
||
|
* This value may change in subsequent releases of ICU.
|
||
|
*/
|
||
|
public static final VersionInfo UCOL_RUNTIME_VERSION;
|
||
|
|
||
|
/**
|
||
|
* Collation builder code version.
|
||
|
* When this is different, the same tailoring might result
|
||
|
* in assigning different collation elements to code points.
|
||
|
* This value may change in subsequent releases of ICU.
|
||
|
*/
|
||
|
public static final VersionInfo UCOL_BUILDER_VERSION;
|
||
|
|
||
|
/**
|
||
|
* Constant version 1.
|
||
|
* This was intended to be the version of collation tailorings,
|
||
|
* but instead the tailoring data carries a version number.
|
||
|
* @deprecated ICU 54
|
||
|
* @hide original deprecated declaration
|
||
|
*/
|
||
|
@Deprecated
|
||
|
public static final VersionInfo UCOL_TAILORINGS_VERSION;
|
||
|
|
||
|
|
||
|
// public methods ------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Returns an instance of VersionInfo with the argument version.
|
||
|
* @param version version String in the format of "major.minor.milli.micro"
|
||
|
* or "major.minor.milli" or "major.minor" or "major",
|
||
|
* where major, minor, milli, micro are non-negative numbers
|
||
|
* <= 255. If the trailing version numbers are
|
||
|
* not specified they are taken as 0s. E.g. Version "3.1" is
|
||
|
* equivalent to "3.1.0.0".
|
||
|
* @return an instance of VersionInfo with the argument version.
|
||
|
* @exception IllegalArgumentException when the argument version
|
||
|
* is not in the right format
|
||
|
*/
|
||
|
public static VersionInfo getInstance(String version)
|
||
|
{
|
||
|
int length = version.length();
|
||
|
int array[] = {0, 0, 0, 0};
|
||
|
int count = 0;
|
||
|
int index = 0;
|
||
|
|
||
|
while (count < 4 && index < length) {
|
||
|
char c = version.charAt(index);
|
||
|
if (c == '.') {
|
||
|
count ++;
|
||
|
}
|
||
|
else {
|
||
|
c -= '0';
|
||
|
if (c < 0 || c > 9) {
|
||
|
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
|
||
|
}
|
||
|
array[count] *= 10;
|
||
|
array[count] += c;
|
||
|
}
|
||
|
index ++;
|
||
|
}
|
||
|
if (index != length) {
|
||
|
throw new IllegalArgumentException(
|
||
|
"Invalid version number: String '" + version + "' exceeds version format");
|
||
|
}
|
||
|
for (int i = 0; i < 4; i ++) {
|
||
|
if (array[i] < 0 || array[i] > 255) {
|
||
|
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return getInstance(array[0], array[1], array[2], array[3]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns an instance of VersionInfo with the argument version.
|
||
|
* @param major major version, non-negative number <= 255.
|
||
|
* @param minor minor version, non-negative number <= 255.
|
||
|
* @param milli milli version, non-negative number <= 255.
|
||
|
* @param micro micro version, non-negative number <= 255.
|
||
|
* @exception IllegalArgumentException when either arguments are negative or > 255
|
||
|
*/
|
||
|
public static VersionInfo getInstance(int major, int minor, int milli,
|
||
|
int micro)
|
||
|
{
|
||
|
// checks if it is in the hashmap
|
||
|
// else
|
||
|
if (major < 0 || major > 255 || minor < 0 || minor > 255 ||
|
||
|
milli < 0 || milli > 255 || micro < 0 || micro > 255) {
|
||
|
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
|
||
|
}
|
||
|
int version = getInt(major, minor, milli, micro);
|
||
|
Integer key = version;
|
||
|
VersionInfo result = MAP_.get(key);
|
||
|
if (result == null) {
|
||
|
result = new VersionInfo(version);
|
||
|
VersionInfo tmpvi = MAP_.putIfAbsent(key, result);
|
||
|
if (tmpvi != null) {
|
||
|
result = tmpvi;
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns an instance of VersionInfo with the argument version.
|
||
|
* Equivalent to getInstance(major, minor, milli, 0).
|
||
|
* @param major major version, non-negative number <= 255.
|
||
|
* @param minor minor version, non-negative number <= 255.
|
||
|
* @param milli milli version, non-negative number <= 255.
|
||
|
* @exception IllegalArgumentException when either arguments are
|
||
|
* negative or > 255
|
||
|
*/
|
||
|
public static VersionInfo getInstance(int major, int minor, int milli)
|
||
|
{
|
||
|
return getInstance(major, minor, milli, 0);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns an instance of VersionInfo with the argument version.
|
||
|
* Equivalent to getInstance(major, minor, 0, 0).
|
||
|
* @param major major version, non-negative number <= 255.
|
||
|
* @param minor minor version, non-negative number <= 255.
|
||
|
* @exception IllegalArgumentException when either arguments are
|
||
|
* negative or > 255
|
||
|
*/
|
||
|
public static VersionInfo getInstance(int major, int minor)
|
||
|
{
|
||
|
return getInstance(major, minor, 0, 0);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns an instance of VersionInfo with the argument version.
|
||
|
* Equivalent to getInstance(major, 0, 0, 0).
|
||
|
* @param major major version, non-negative number <= 255.
|
||
|
* @exception IllegalArgumentException when either arguments are
|
||
|
* negative or > 255
|
||
|
*/
|
||
|
public static VersionInfo getInstance(int major)
|
||
|
{
|
||
|
return getInstance(major, 0, 0, 0);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the String representative of VersionInfo in the format of
|
||
|
* "major.minor.milli.micro"
|
||
|
* @return String representative of VersionInfo
|
||
|
*/
|
||
|
@Override
|
||
|
public String toString()
|
||
|
{
|
||
|
StringBuilder result = new StringBuilder(7);
|
||
|
result.append(getMajor());
|
||
|
result.append('.');
|
||
|
result.append(getMinor());
|
||
|
result.append('.');
|
||
|
result.append(getMilli());
|
||
|
result.append('.');
|
||
|
result.append(getMicro());
|
||
|
return result.toString();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the major version number
|
||
|
* @return the major version number
|
||
|
*/
|
||
|
public int getMajor()
|
||
|
{
|
||
|
return (m_version_ >> 24) & LAST_BYTE_MASK_ ;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the minor version number
|
||
|
* @return the minor version number
|
||
|
*/
|
||
|
public int getMinor()
|
||
|
{
|
||
|
return (m_version_ >> 16) & LAST_BYTE_MASK_ ;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the milli version number
|
||
|
* @return the milli version number
|
||
|
*/
|
||
|
public int getMilli()
|
||
|
{
|
||
|
return (m_version_ >> 8) & LAST_BYTE_MASK_ ;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the micro version number
|
||
|
* @return the micro version number
|
||
|
*/
|
||
|
public int getMicro()
|
||
|
{
|
||
|
return m_version_ & LAST_BYTE_MASK_ ;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Checks if this version information is equals to the argument version
|
||
|
* @param other object to be compared
|
||
|
* @return true if other is equals to this object's version information,
|
||
|
* false otherwise
|
||
|
*/
|
||
|
@Override
|
||
|
public boolean equals(Object other)
|
||
|
{
|
||
|
return other == this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the hash code value for this set.
|
||
|
*
|
||
|
* @return the hash code value for this set.
|
||
|
* @see java.lang.Object#hashCode()
|
||
|
*/
|
||
|
@Override
|
||
|
public int hashCode() {
|
||
|
return m_version_;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Compares other with this VersionInfo.
|
||
|
* @param other VersionInfo to be compared
|
||
|
* @return 0 if the argument is a VersionInfo object that has version
|
||
|
* information equals to this object.
|
||
|
* Less than 0 if the argument is a VersionInfo object that has
|
||
|
* version information greater than this object.
|
||
|
* Greater than 0 if the argument is a VersionInfo object that
|
||
|
* has version information less than this object.
|
||
|
*/
|
||
|
@Override
|
||
|
public int compareTo(VersionInfo other)
|
||
|
{
|
||
|
// m_version_ is an int, a signed 32-bit integer.
|
||
|
// When the major version is >=128, then the version int is negative.
|
||
|
// Compare it in two steps to simulate an unsigned-int comparison.
|
||
|
// (Alternatively we could turn each int into a long and reset the upper 32 bits.)
|
||
|
// Compare the upper bits first, using logical shift right (unsigned).
|
||
|
int diff = (m_version_ >>> 1) - (other.m_version_ >>> 1);
|
||
|
if (diff != 0) { return diff; }
|
||
|
// Compare the remaining bits.
|
||
|
return (m_version_ & 1) - (other.m_version_ & 1);
|
||
|
}
|
||
|
|
||
|
// private data members ----------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Unicode data version used by the current release.
|
||
|
* Defined here privately for printing by the main() method in this class.
|
||
|
* Should be the same as {@link android.icu.lang.UCharacter#getUnicodeVersion()}
|
||
|
* which gets the version number from a data file.
|
||
|
* We do not want VersionInfo to have an import dependency on UCharacter.
|
||
|
*/
|
||
|
private static final VersionInfo UNICODE_VERSION;
|
||
|
|
||
|
/**
|
||
|
* Version number stored as a byte for each of the major, minor, milli and
|
||
|
* micro numbers in the 32 bit int.
|
||
|
* Most significant for the major and the least significant contains the
|
||
|
* micro numbers.
|
||
|
*/
|
||
|
private int m_version_;
|
||
|
/**
|
||
|
* Map of singletons
|
||
|
*/
|
||
|
private static final ConcurrentHashMap<Integer, VersionInfo> MAP_ = new ConcurrentHashMap<>();
|
||
|
/**
|
||
|
* Last byte mask
|
||
|
*/
|
||
|
private static final int LAST_BYTE_MASK_ = 0xFF;
|
||
|
/**
|
||
|
* Error statement string
|
||
|
*/
|
||
|
private static final String INVALID_VERSION_NUMBER_ =
|
||
|
"Invalid version number: Version number may be negative or greater than 255";
|
||
|
|
||
|
// static declaration ------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Initialize versions only after MAP_ has been created
|
||
|
*/
|
||
|
static {
|
||
|
UNICODE_1_0 = getInstance(1, 0, 0, 0);
|
||
|
UNICODE_1_0_1 = getInstance(1, 0, 1, 0);
|
||
|
UNICODE_1_1_0 = getInstance(1, 1, 0, 0);
|
||
|
UNICODE_1_1_5 = getInstance(1, 1, 5, 0);
|
||
|
UNICODE_2_0 = getInstance(2, 0, 0, 0);
|
||
|
UNICODE_2_1_2 = getInstance(2, 1, 2, 0);
|
||
|
UNICODE_2_1_5 = getInstance(2, 1, 5, 0);
|
||
|
UNICODE_2_1_8 = getInstance(2, 1, 8, 0);
|
||
|
UNICODE_2_1_9 = getInstance(2, 1, 9, 0);
|
||
|
UNICODE_3_0 = getInstance(3, 0, 0, 0);
|
||
|
UNICODE_3_0_1 = getInstance(3, 0, 1, 0);
|
||
|
UNICODE_3_1_0 = getInstance(3, 1, 0, 0);
|
||
|
UNICODE_3_1_1 = getInstance(3, 1, 1, 0);
|
||
|
UNICODE_3_2 = getInstance(3, 2, 0, 0);
|
||
|
UNICODE_4_0 = getInstance(4, 0, 0, 0);
|
||
|
UNICODE_4_0_1 = getInstance(4, 0, 1, 0);
|
||
|
UNICODE_4_1 = getInstance(4, 1, 0, 0);
|
||
|
UNICODE_5_0 = getInstance(5, 0, 0, 0);
|
||
|
UNICODE_5_1 = getInstance(5, 1, 0, 0);
|
||
|
UNICODE_5_2 = getInstance(5, 2, 0, 0);
|
||
|
UNICODE_6_0 = getInstance(6, 0, 0, 0);
|
||
|
UNICODE_6_1 = getInstance(6, 1, 0, 0);
|
||
|
UNICODE_6_2 = getInstance(6, 2, 0, 0);
|
||
|
UNICODE_6_3 = getInstance(6, 3, 0, 0);
|
||
|
UNICODE_7_0 = getInstance(7, 0, 0, 0);
|
||
|
UNICODE_8_0 = getInstance(8, 0, 0, 0);
|
||
|
UNICODE_9_0 = getInstance(9, 0, 0, 0);
|
||
|
UNICODE_10_0 = getInstance(10, 0, 0, 0);
|
||
|
UNICODE_11_0 = getInstance(11, 0, 0, 0);
|
||
|
UNICODE_12_0 = getInstance(12, 0, 0, 0);
|
||
|
UNICODE_12_1 = getInstance(12, 1, 0, 0);
|
||
|
UNICODE_13_0 = getInstance(13, 0, 0, 0);
|
||
|
UNICODE_14_0 = getInstance(14, 0, 0, 0);
|
||
|
UNICODE_15_0 = getInstance(15, 0, 0, 0);
|
||
|
UNICODE_15_1 = getInstance(15, 1, 0, 0);
|
||
|
|
||
|
ICU_VERSION = getInstance(75, 1, 0, 0);
|
||
|
ICU_DATA_VERSION = ICU_VERSION;
|
||
|
UNICODE_VERSION = UNICODE_15_1;
|
||
|
|
||
|
UCOL_RUNTIME_VERSION = getInstance(9);
|
||
|
UCOL_BUILDER_VERSION = getInstance(9);
|
||
|
UCOL_TAILORINGS_VERSION = getInstance(1);
|
||
|
}
|
||
|
|
||
|
// private constructor -----------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Constructor with int
|
||
|
* @param compactversion a 32 bit int with each byte representing a number
|
||
|
*/
|
||
|
private VersionInfo(int compactversion)
|
||
|
{
|
||
|
m_version_ = compactversion;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the int from the version numbers
|
||
|
* @param major non-negative version number
|
||
|
* @param minor non-negative version number
|
||
|
* @param milli non-negative version number
|
||
|
* @param micro non-negative version number
|
||
|
*/
|
||
|
private static int getInt(int major, int minor, int milli, int micro)
|
||
|
{
|
||
|
return (major << 24) | (minor << 16) | (milli << 8) | micro;
|
||
|
}
|
||
|
///CLOVER:OFF
|
||
|
/**
|
||
|
* Main method prints out ICU version information
|
||
|
* @param args arguments (currently not used)
|
||
|
* @hide unsupported on Android
|
||
|
*/
|
||
|
public static void main(String[] args) {
|
||
|
String icuApiVer;
|
||
|
|
||
|
if (ICU_VERSION.getMajor() <= 4) {
|
||
|
if (ICU_VERSION.getMinor() % 2 != 0) {
|
||
|
// Development mile stone
|
||
|
int major = ICU_VERSION.getMajor();
|
||
|
int minor = ICU_VERSION.getMinor() + 1;
|
||
|
if (minor >= 10) {
|
||
|
minor -= 10;
|
||
|
major++;
|
||
|
}
|
||
|
icuApiVer = "" + major + "." + minor + "M" + ICU_VERSION.getMilli();
|
||
|
} else {
|
||
|
icuApiVer = ICU_VERSION.getVersionString(2, 2);
|
||
|
}
|
||
|
} else {
|
||
|
if (ICU_VERSION.getMinor() == 0) {
|
||
|
// Development mile stone
|
||
|
icuApiVer = "" + ICU_VERSION.getMajor() + "M" + ICU_VERSION.getMilli();
|
||
|
} else {
|
||
|
icuApiVer = ICU_VERSION.getVersionString(2, 2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
System.out.println("International Components for Unicode for Java " + icuApiVer);
|
||
|
|
||
|
System.out.println("");
|
||
|
System.out.println("Implementation Version: " + ICU_VERSION.getVersionString(2, 4));
|
||
|
System.out.println("Unicode Data Version: " + UNICODE_VERSION.getVersionString(2, 4));
|
||
|
System.out.println("CLDR Data Version: " + LocaleData.getCLDRVersion().getVersionString(2, 4));
|
||
|
System.out.println("Time Zone Data Version: " + getTZDataVersion());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Generate version string separated by dots with
|
||
|
* the specified digit width. Version digit 0
|
||
|
* after <code>minDigits</code> will be trimmed off.
|
||
|
* @param minDigits Minimum number of version digits
|
||
|
* @param maxDigits Maximum number of version digits
|
||
|
* @return A tailored version string
|
||
|
* @deprecated This API is ICU internal only. (For use in CLDR, etc.)
|
||
|
* @hide original deprecated declaration
|
||
|
* @hide draft / provisional / internal are hidden on Android
|
||
|
*/
|
||
|
@Deprecated
|
||
|
public String getVersionString(int minDigits, int maxDigits) {
|
||
|
if (minDigits < 1 || maxDigits < 1
|
||
|
|| minDigits > 4 || maxDigits > 4 || minDigits > maxDigits) {
|
||
|
throw new IllegalArgumentException("Invalid min/maxDigits range");
|
||
|
}
|
||
|
|
||
|
int[] digits = new int[4];
|
||
|
digits[0] = getMajor();
|
||
|
digits[1] = getMinor();
|
||
|
digits[2] = getMilli();
|
||
|
digits[3] = getMicro();
|
||
|
|
||
|
int numDigits = maxDigits;
|
||
|
while (numDigits > minDigits) {
|
||
|
if (digits[numDigits - 1] != 0) {
|
||
|
break;
|
||
|
}
|
||
|
numDigits--;
|
||
|
}
|
||
|
|
||
|
StringBuilder verStr = new StringBuilder(7);
|
||
|
verStr.append(digits[0]);
|
||
|
for (int i = 1; i < numDigits; i++) {
|
||
|
verStr.append(".");
|
||
|
verStr.append(digits[i]);
|
||
|
}
|
||
|
|
||
|
return verStr.toString();
|
||
|
}
|
||
|
///CLOVER:ON
|
||
|
|
||
|
|
||
|
// Moved from TimeZone class
|
||
|
private static volatile String TZDATA_VERSION = null;
|
||
|
|
||
|
static String getTZDataVersion() {
|
||
|
if (TZDATA_VERSION == null) {
|
||
|
synchronized (VersionInfo.class) {
|
||
|
if (TZDATA_VERSION == null) {
|
||
|
UResourceBundle tzbundle = UResourceBundle.getBundleInstance("android/icu/impl/data/icudt"
|
||
|
+ VersionInfo.ICU_DATA_VERSION_PATH, "zoneinfo64");
|
||
|
TZDATA_VERSION = tzbundle.getString("TZVersion");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return TZDATA_VERSION;
|
||
|
}
|
||
|
}
|