⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resourcebundlemapwrapper.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
字号:
/* * $Id: ResourceBundleMapWrapper.java 5720 2005-09-13 03:10:59Z jonesde $ * *  Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org * *  Permission is hereby granted, free of charge, to any person obtaining a *  copy of this software and associated documentation files (the "Software"), *  to deal in the Software without restriction, including without limitation *  the rights to use, copy, modify, merge, publish, distribute, sublicense, *  and/or sell copies of the Software, and to permit persons to whom the *  Software is furnished to do so, subject to the following conditions: * *  The above copyright notice and this permission notice shall be included *  in all copies or substantial portions of the Software. * *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY *  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT *  OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *  THE USE OR OTHER DEALINGS IN THE SOFTWARE. */package org.ofbiz.base.util.collections;import java.io.Serializable;import java.util.Collection;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import java.util.MissingResourceException;import java.util.ResourceBundle;import java.util.Set;import org.ofbiz.base.util.UtilProperties;/** * Generic ResourceBundle Map Wrapper, given ResourceBundle allows it to be used as a Map * * @author     <a href="mailto:jonesde@ofbiz.org">David E. Jones</a> * @version    $Rev: 5720 $ * @since      3.1 */public class ResourceBundleMapWrapper implements Map, Serializable {        protected MapStack rbmwStack;    protected ResourceBundle initialResourceBundle;    protected ResourceBundleMapWrapper() {        rbmwStack = MapStack.create();    }    /**     * When creating new from a InternalRbmWrapper the one passed to the constructor should be the most specific or local InternalRbmWrapper, with more common ones pushed onto the stack progressively.     */    public ResourceBundleMapWrapper(InternalRbmWrapper initialInternalRbmWrapper) {        this.initialResourceBundle = initialInternalRbmWrapper.getResourceBundle();        this.rbmwStack = MapStack.create(initialInternalRbmWrapper);    }        /**     * When creating new from a ResourceBundle the one passed to the constructor should be the most specific or local ResourceBundle, with more common ones pushed onto the stack progressively.     */    public ResourceBundleMapWrapper(ResourceBundle initialResourceBundle) {        if (initialResourceBundle == null) {            throw new IllegalArgumentException("Cannot create ResourceBundleMapWrapper with a null initial ResourceBundle.");        }        this.initialResourceBundle = initialResourceBundle;        this.rbmwStack = MapStack.create(new InternalRbmWrapper(initialResourceBundle));    }        /** Puts ResourceBundle on the BOTTOM of the stack (bottom meaning will be overriden by higher layers on the stack, ie everything else already there) */    public void addBottomResourceBundle(ResourceBundle topResourceBundle) {        this.rbmwStack.addToBottom(new InternalRbmWrapper(topResourceBundle));    }    /** Puts InternalRbmWrapper on the BOTTOM of the stack (bottom meaning will be overriden by higher layers on the stack, ie everything else already there) */    public void addBottomResourceBundle(InternalRbmWrapper topInternalRbmWrapper) {        this.rbmwStack.addToBottom(topInternalRbmWrapper);    }    /** Don't pass the locale to make sure it has the same locale as the base */    public void addBottomResourceBundle(String resource) {        if (this.initialResourceBundle == null) {            throw new IllegalArgumentException("Cannot add bottom resource bundle, this wrapper was not properly initialized (there is no base/initial ResourceBundle).");        }        this.addBottomResourceBundle(UtilProperties.getInternalRbmWrapper(resource, this.initialResourceBundle.getLocale()));    }    /** In general we don't want to use this, better to start with the more specific ResourceBundle and add layers of common ones...     * Puts ResourceBundle on the top of the stack (top meaning will override lower layers on the stack)      */    public void pushResourceBundle(ResourceBundle topResourceBundle) {        this.rbmwStack.push(new InternalRbmWrapper(topResourceBundle));    }    public ResourceBundle getInitialResourceBundle() {        return this.initialResourceBundle;    }    public void clear() {        this.rbmwStack.clear();    }    public boolean containsKey(Object arg0) {        return this.rbmwStack.containsKey(arg0);    }    public boolean containsValue(Object arg0) {        return this.rbmwStack.containsValue(arg0);    }    public Set entrySet() {        return this.rbmwStack.entrySet();    }    public Object get(Object arg0) {        Object value = this.rbmwStack.get(arg0);        if (value == null) {            value = arg0;        }        return value;    }    public boolean isEmpty() {        return this.rbmwStack.isEmpty();    }    public Set keySet() {        return this.keySet();    }    public Object put(Object key, Object value) {        return this.rbmwStack.put(key, value);    }    public void putAll(Map arg0) {        this.rbmwStack.putAll(arg0);    }    public Object remove(Object arg0) {        return this.rbmwStack.remove(arg0);    }    public int size() {        return this.rbmwStack.size();    }    public Collection values() {        return this.rbmwStack.values();    }        public static class InternalRbmWrapper implements Map, Serializable {        protected ResourceBundle resourceBundle;        protected Map topLevelMap;                public InternalRbmWrapper(ResourceBundle resourceBundle) {            if (resourceBundle == null) {                throw new IllegalArgumentException("Cannot create InternalRbmWrapper with a null ResourceBundle.");            }            this.resourceBundle = resourceBundle;            topLevelMap = new HashMap();            // NOTE: this does NOT return all keys, ie keys from parent ResourceBundles, so we keep the resourceBundle object to look at when the main Map doesn't have a certain value             if (resourceBundle != null) {                Enumeration keyNum = resourceBundle.getKeys();                while (keyNum.hasMoreElements()) {                    String key = (String) keyNum.nextElement();                    //resourceBundleMap.put(key, bundle.getObject(key));                    Object value = resourceBundle.getObject(key);                    topLevelMap.put(key, value);                }            }            topLevelMap.put("_RESOURCE_BUNDLE_", resourceBundle);        }                /* (non-Javadoc)         * @see java.util.Map#size()         */        public int size() {            // this is an approximate size, won't include elements from parent bundles            return topLevelMap.size() - 1;        }            /* (non-Javadoc)         * @see java.util.Map#isEmpty()         */        public boolean isEmpty() {            return topLevelMap.isEmpty();        }            /* (non-Javadoc)         * @see java.util.Map#containsKey(java.lang.Object)         */        public boolean containsKey(Object arg0) {            if (topLevelMap.containsKey(arg0)) {                return true;            } else {                try {                    if (this.resourceBundle.getObject((String) arg0) != null) {                        return true;                    }                } catch (MissingResourceException e) {                    // nope, not found... nothing, will automatically return false below                }            }            return false;        }            /* (non-Javadoc)         * @see java.util.Map#containsValue(java.lang.Object)         */        public boolean containsValue(Object arg0) {            throw new RuntimeException("Not implemented for ResourceBundleMapWrapper");        }            /* (non-Javadoc)         * @see java.util.Map#get(java.lang.Object)         */        public Object get(Object arg0) {            Object value = this.topLevelMap.get(arg0);            if (resourceBundle != null) {                if (value == null) {                    try {                        value = this.resourceBundle.getObject((String) arg0);                    } catch(MissingResourceException mre) {                        // do nothing, this will be handled by recognition that the value is still null                    }                }                if (value == null) {                    try {                        value = this.resourceBundle.getString((String) arg0);                    } catch(MissingResourceException mre) {                        // do nothing, this will be handled by recognition that the value is still null                    }                }            }            /* we used to do this here, but now we'll do it in the top-level class since doing it here would prevent searching down the stack            if (value == null) {                value = arg0;            }            */            return value;        }            /* (non-Javadoc)         * @see java.util.Map#put(java.lang.Object, java.lang.Object)         */        public Object put(Object arg0, Object arg1) {            throw new RuntimeException("Not implemented/allowed for ResourceBundleMapWrapper");        }            /* (non-Javadoc)         * @see java.util.Map#remove(java.lang.Object)         */        public Object remove(Object arg0) {            throw new RuntimeException("Not implemented for ResourceBundleMapWrapper");        }            /* (non-Javadoc)         * @see java.util.Map#putAll(java.util.Map)         */        public void putAll(Map arg0) {            throw new RuntimeException("Not implemented for ResourceBundleMapWrapper");        }            /* (non-Javadoc)         * @see java.util.Map#clear()         */        public void clear() {            throw new RuntimeException("Not implemented for ResourceBundleMapWrapper");        }            /* (non-Javadoc)         * @see java.util.Map#keySet()         */        public Set keySet() {            return this.topLevelMap.keySet();        }            /* (non-Javadoc)         * @see java.util.Map#values()         */        public Collection values() {            return this.topLevelMap.values();        }            /* (non-Javadoc)         * @see java.util.Map#entrySet()         */        public Set entrySet() {            return this.topLevelMap.entrySet();        }                public ResourceBundle getResourceBundle() {            return this.resourceBundle;        }                /*public String toString() {            return this.topLevelMap.toString();        }*/    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -