📄 utilmisc.java
字号:
Locale locale = null;
if (localeString.length() == 2) {
// two letter language code
locale = new Locale(localeString);
} else if (localeString.length() == 5) {
// positions 0-1 language, 3-4 are country
String language = localeString.substring(0, 2);
String country = localeString.substring(3, 5);
locale = new Locale(language, country);
} else if (localeString.length() > 6) {
// positions 0-1 language, 3-4 are country, 6 and on are special extensions
String language = localeString.substring(0, 2);
String country = localeString.substring(3, 5);
String extension = localeString.substring(6);
locale = new Locale(language, country, extension);
} else {
Debug.logWarning("Do not know what to do with the localeString [" + localeString + "], should be length 2, 5, or greater than 6, returning null", module);
}
return locale;
}
/** The input can be a String, Locale, or even null and a valid Locale will always be returned; if nothing else works, returns the default locale.
* @param localeObject An Object representing the locale
*/
public static Locale ensureLocale(Object localeObject) {
if (localeObject != null && localeObject instanceof String) {
localeObject = UtilMisc.parseLocale((String) localeObject);
}
if (localeObject != null && localeObject instanceof Locale) {
return (Locale) localeObject;
} else {
return Locale.getDefault();
}
}
public static List availableLocaleList = null;
/** Returns a List of available locales sorted by display name */
public static List availableLocales() {
if (availableLocaleList == null) {
synchronized(UtilMisc.class) {
if (availableLocaleList == null) {
TreeMap localeMap = new TreeMap();
Locale[] locales = Locale.getAvailableLocales();
for (int i = 0; i < locales.length; i++) {
localeMap.put(locales[i].getDisplayName(), locales[i]);
}
availableLocaleList = new LinkedList(localeMap.values());
}
}
}
return availableLocaleList;
}
/** This is meant to be very quick to create and use for small sized maps, perfect for how we usually use UtilMisc.toMap */
protected static class SimpleMap implements Map, java.io.Serializable {
protected Map realMapIfNeeded = null;
String[] names;
Object[] values;
public SimpleMap() {
names = new String[0];
values = new Object[0];
}
public SimpleMap(String name1, Object value1) {
names = new String[1];
values = new Object[1];
this.names[0] = name1;
this.values[0] = value1;
}
public SimpleMap(String name1, Object value1, String name2, Object value2) {
names = new String[2];
values = new Object[2];
this.names[0] = name1;
this.values[0] = value1;
this.names[1] = name2;
this.values[1] = value2;
}
public SimpleMap(String name1, Object value1, String name2, Object value2, String name3, Object value3) {
names = new String[3];
values = new Object[3];
this.names[0] = name1;
this.values[0] = value1;
this.names[1] = name2;
this.values[1] = value2;
this.names[2] = name3;
this.values[2] = value3;
}
public SimpleMap(String name1, Object value1, String name2, Object value2, String name3, Object value3, String name4, Object value4) {
names = new String[4];
values = new Object[4];
this.names[0] = name1;
this.values[0] = value1;
this.names[1] = name2;
this.values[1] = value2;
this.names[2] = name3;
this.values[2] = value3;
this.names[3] = name4;
this.values[3] = value4;
}
protected void makeRealMap() {
realMapIfNeeded = new HashMap();
for (int i = 0; i < names.length; i++) {
realMapIfNeeded.put(names[i], values[i]);
}
this.names = null;
this.values = null;
}
public void clear() {
if (realMapIfNeeded != null) {
realMapIfNeeded.clear();
} else {
realMapIfNeeded = new HashMap();
names = null;
values = null;
}
}
public boolean containsKey(Object obj) {
if (realMapIfNeeded != null) {
return realMapIfNeeded.containsKey(obj);
} else {
for (int i = 0; i < names.length; i++) {
if (obj == null && names[i] == null) return true;
if (names[i] != null && names[i].equals(obj)) return true;
}
return false;
}
}
public boolean containsValue(Object obj) {
if (realMapIfNeeded != null) {
return realMapIfNeeded.containsValue(obj);
} else {
for (int i = 0; i < names.length; i++) {
if (obj == null && values[i] == null) return true;
if (values[i] != null && values[i].equals(obj)) return true;
}
return false;
}
}
public java.util.Set entrySet() {
if (realMapIfNeeded != null) {
return realMapIfNeeded.entrySet();
} else {
this.makeRealMap();
return realMapIfNeeded.entrySet();
}
}
public Object get(Object obj) {
if (realMapIfNeeded != null) {
return realMapIfNeeded.get(obj);
} else {
for (int i = 0; i < names.length; i++) {
if (obj == null && names[i] == null) return values[i];
if (names[i] != null && names[i].equals(obj)) return values[i];
}
return null;
}
}
public boolean isEmpty() {
if (realMapIfNeeded != null) {
return realMapIfNeeded.isEmpty();
} else {
if (this.names.length == 0) return true;
return false;
}
}
public java.util.Set keySet() {
if (realMapIfNeeded != null) {
return realMapIfNeeded.keySet();
} else {
this.makeRealMap();
return realMapIfNeeded.keySet();
}
}
public Object put(Object obj, Object obj1) {
if (realMapIfNeeded != null) {
return realMapIfNeeded.put(obj, obj1);
} else {
this.makeRealMap();
return realMapIfNeeded.put(obj, obj1);
}
}
public void putAll(java.util.Map map) {
if (realMapIfNeeded != null) {
realMapIfNeeded.putAll(map);
} else {
this.makeRealMap();
realMapIfNeeded.putAll(map);
}
}
public Object remove(Object obj) {
if (realMapIfNeeded != null) {
return realMapIfNeeded.remove(obj);
} else {
this.makeRealMap();
return realMapIfNeeded.remove(obj);
}
}
public int size() {
if (realMapIfNeeded != null) {
return realMapIfNeeded.size();
} else {
return this.names.length;
}
}
public java.util.Collection values() {
if (realMapIfNeeded != null) {
return realMapIfNeeded.values();
} else {
this.makeRealMap();
return realMapIfNeeded.values();
}
}
public String toString() {
if (realMapIfNeeded != null) {
return realMapIfNeeded.toString();
} else {
StringBuffer outString = new StringBuffer("{");
for (int i = 0; i < names.length; i++) {
if (i > 0) outString.append(',');
outString.append('{');
outString.append(names[i]);
outString.append(',');
outString.append(values[i]);
outString.append('}');
}
outString.append('}');
return outString.toString();
}
}
public int hashCode() {
if (realMapIfNeeded != null) {
return realMapIfNeeded.hashCode();
} else {
int hashCode = 0;
for (int i = 0; i < names.length; i++) {
//note that this calculation is done based on the calc specified in the Java java.util.Map interface
int tempNum = (names[i] == null ? 0 : names[i].hashCode()) ^
(values[i] == null ? 0 : values[i].hashCode());
hashCode += tempNum;
}
return hashCode;
}
}
public boolean equals(Object obj) {
if (realMapIfNeeded != null) {
return realMapIfNeeded.equals(obj);
} else {
Map mapObj = (Map) obj;
//first check the size
if (mapObj.size() != names.length) return false;
//okay, same size, now check each entry
for (int i = 0; i < names.length; i++) {
//first check the name
if (!mapObj.containsKey(names[i])) return false;
//if that passes, check the value
Object mapValue = mapObj.get(names[i]);
if (mapValue == null) {
if (values[i] != null) return false;
} else {
if (!mapValue.equals(values[i])) return false;
}
}
return true;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -