![JAR search and dependency download from the Maven repository](/logo.png)
com.ibm.icu.impl.CalendarData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icu4j Show documentation
Show all versions of icu4j Show documentation
International Component for Unicode for Java (ICU4J) is a mature, widely used Java library
providing Unicode and Globalization support
/*
*******************************************************************************
* Copyright (C) 2004-2012, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.impl;
import java.util.ArrayList;
import java.util.MissingResourceException;
import com.ibm.icu.util.ULocale;
import com.ibm.icu.util.UResourceBundle;
import com.ibm.icu.util.UResourceBundleIterator;
/**
* This class abstracts access to calendar (Calendar and DateFormat) data.
* @internal ICU 3.0
*/
public class CalendarData {
/**
* Construct a CalendarData from the given locale.
* @param loc locale to use. The 'calendar' keyword will be ignored.
* @param type calendar type. NULL indicates the gregorian calendar.
* No default lookup is done.
*/
public CalendarData(ULocale loc, String type) {
this((ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, loc), type);
}
public CalendarData(ICUResourceBundle b, String type) {
fBundle = b;
if((type == null) || (type.equals("")) || (type.equals("gregorian"))) {
fMainType = "gregorian";
fFallbackType = null;
} else {
fMainType = type;
fFallbackType = "gregorian";
}
}
/**
* Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
*
* @param key Resource key to data
* @internal
*/
public ICUResourceBundle get(String key) {
try {
return fBundle.getWithFallback("calendar/" + fMainType + "/" + key);
} catch(MissingResourceException m) {
if(fFallbackType != null) {
return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key);
}
throw m;
}
}
/**
* Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
* There is an implicit key of 'format'
* data is located in: "calendar/key/format/subKey"
* for example, calendar/dayNames/format/abbreviated
*
* @param key Resource key to data
* @param subKey Resource key to data
* @internal
*/
public ICUResourceBundle get(String key, String subKey) {
try {
return fBundle.getWithFallback("calendar/" + fMainType + "/" + key + "/format/" + subKey);
} catch(MissingResourceException m) {
if(fFallbackType != null) {
return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key + "/format/" + subKey);
}
throw m;
}
}
/**
* Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
* data is located in: "calendar/key/contextKey/subKey"
* for example, calendar/dayNames/stand-alone/narrow
*
* @param key Resource key to data
* @param contextKey Resource key to data
* @param subKey Resource key to data
* @internal
*/
public ICUResourceBundle get(String key, String contextKey, String subKey) {
try {
return fBundle.getWithFallback("calendar/" + fMainType + "/" + key + "/" + contextKey + "/" + subKey);
} catch(MissingResourceException m) {
if(fFallbackType != null) {
return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key + "/" + contextKey + "/" + subKey);
}
throw m;
}
}
/**
* Load data for calendar. Note, this object owns the resources...
* data is located in: "calendar/key/set/contextKey/subKey"
* for example, calendar/cyclicNameSets/years/format/abbreviated
*
* @param key Resource key to data
* @param set Resource key to data
* @param contextKey Resource key to data
* @param subKey Resource key to data
* @internal
*/
public ICUResourceBundle get(String key, String set, String contextKey, String subKey) {
try {
return fBundle.getWithFallback("calendar/" + fMainType + "/" + key + "/" + set + "/" + contextKey + "/" + subKey);
} catch(MissingResourceException m) {
if(fFallbackType != null) {
return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key + "/" + set + "/" + contextKey + "/" + subKey);
}
throw m;
}
}
public String[] getStringArray(String key) {
return get(key).getStringArray();
}
public String[] getStringArray(String key, String subKey) {
return get(key, subKey).getStringArray();
}
public String[] getStringArray(String key, String contextKey, String subKey) {
return get(key, contextKey, subKey).getStringArray();
}
public String[] getEras(String subkey){
ICUResourceBundle bundle = get("eras/"+subkey);
return bundle.getStringArray();
}
public String[] getDateTimePatterns(){
ICUResourceBundle bundle = get("DateTimePatterns");
ArrayList list = new ArrayList();
UResourceBundleIterator iter = bundle.getIterator();
while (iter.hasNext()) {
UResourceBundle patResource = iter.next();
int resourceType = patResource.getType();
switch (resourceType) {
case UResourceBundle.STRING:
list.add(patResource.getString());
break;
case UResourceBundle.ARRAY:
String[] items = patResource.getStringArray();
list.add(items[0]);
break;
}
}
return list.toArray(new String[list.size()]);
}
public String[] getOverrides(){
ICUResourceBundle bundle = get("DateTimePatterns");
ArrayList list = new ArrayList();
UResourceBundleIterator iter = bundle.getIterator();
while (iter.hasNext()) {
UResourceBundle patResource = iter.next();
int resourceType = patResource.getType();
switch (resourceType) {
case UResourceBundle.STRING:
list.add(null);
break;
case UResourceBundle.ARRAY:
String[] items = patResource.getStringArray();
list.add(items[1]);
break;
}
}
return list.toArray(new String[list.size()]);
}
public ULocale getULocale() {
return fBundle.getULocale();
}
private ICUResourceBundle fBundle;
private String fMainType;
private String fFallbackType;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy