📄 utilmisc.java
字号:
if (value instanceof Double) { return ((Double) value).doubleValue(); } else if (value instanceof String) { return Double.parseDouble((String) value); } } return 0.0; } /** * Adds value to the key entry in theMap, or creates a new one if not already there * @param theMap * @param key * @param value */ public static void addToDoubleInMap(Map theMap, Object key, Double value) { Double curValue = (Double) theMap.get(key); if (curValue != null) { theMap.put(key, new Double(curValue.doubleValue() + value.doubleValue())); } else { theMap.put(key, value); } } /** * Parse a locale string Locale object * @param localeString The locale string (en_US) * @return Locale The new Locale object or null if no valid locale can be interpreted */ public static Locale parseLocale(String localeString) { if (localeString == null || localeString.length() == 0) { return null; } 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; } 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 = FastMap.newInstance(); 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 = FastMap.newInstance(); 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 + -