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

📄 componentconfig.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * $Id: ComponentConfig.java 5596 2005-08-26 01:36:06Z jaz $ * * Copyright (c) 2003-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.component;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.util.Collection;import java.util.Comparator;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.TreeMap;import javax.xml.parsers.ParserConfigurationException;import javolution.util.FastList;import javolution.util.FastMap;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.UtilURL;import org.ofbiz.base.util.UtilValidate;import org.ofbiz.base.util.UtilXml;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.xml.sax.SAXException;/** * ComponentConfig - Component configuration class for ofbiz-container.xml * * @author     <a href="mailto:jonesde@ofbiz.org">David E. Jones</a> * @author     <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a> * @version    $Rev: 5596 $ * @since      3.0 */public class ComponentConfig {    public static final String module = ComponentConfig.class.getName();    public static final String OFBIZ_COMPONENT_XML_FILENAME = "ofbiz-component.xml";    // this is not a UtilCache because reloading may cause problems    protected static Map componentConfigs = FastMap.newInstance();    protected static Map serverWebApps = FastMap.newInstance();    public static ComponentConfig getComponentConfig(String globalName) throws ComponentException {        // TODO: we need to look up the rootLocation from the container config, or this will blow up        return getComponentConfig(globalName, null);    }    public static ComponentConfig getComponentConfig(String globalName, String rootLocation) throws ComponentException {        ComponentConfig componentConfig = null;        if (UtilValidate.isNotEmpty(globalName)) {            componentConfig = (ComponentConfig) componentConfigs.get(globalName);        }        if (componentConfig == null) {            if (rootLocation != null) {                synchronized (ComponentConfig.class) {                    if (UtilValidate.isNotEmpty(globalName)) {                        componentConfig = (ComponentConfig) componentConfigs.get(globalName);                    }                    if (componentConfig == null) {                        componentConfig = new ComponentConfig(globalName, rootLocation);                        if (componentConfigs.containsKey(componentConfig.getGlobalName())) {                            Debug.logWarning("WARNING: Loading ofbiz-component using a global name that already exists, will over-write: " + componentConfig.getGlobalName(), module);                        }                        if (componentConfig.enabled()) {                            componentConfigs.put(componentConfig.getGlobalName(), componentConfig);                        }                    }                }            } else {                throw new ComponentException("No component found named : " + globalName);            }        }        return componentConfig;    }    public static Collection getAllComponents() {        Collection values = componentConfigs.values();        if (values != null) {            return values;        } else {            Debug.logWarning("No components were found, something is probably missing or incorrect in the component-load setup.", module);            return FastList.newInstance();        }    }    public static List getAllClasspathInfos() {        List classpaths = FastList.newInstance();        Iterator i = getAllComponents().iterator();        while (i.hasNext()) {            ComponentConfig cc = (ComponentConfig) i.next();            classpaths.addAll(cc.getClasspathInfos());        }        return classpaths;    }    public static List getAllEntityResourceInfos(String type) {        List entityInfos = FastList.newInstance();        Iterator i = getAllComponents().iterator();        while (i.hasNext()) {            ComponentConfig cc = (ComponentConfig) i.next();            List ccEntityInfoList = cc.getEntityResourceInfos();            if (UtilValidate.isEmpty(type)) {                entityInfos.addAll(ccEntityInfoList);            } else {                Iterator ccEntityInfoIter = ccEntityInfoList.iterator();                while (ccEntityInfoIter.hasNext()) {                    EntityResourceInfo entityResourceInfo = (EntityResourceInfo) ccEntityInfoIter.next();                    if (type.equals(entityResourceInfo.type)) {                        entityInfos.add(entityResourceInfo);                    }                }            }        }        return entityInfos;    }    public static List getAllServiceResourceInfos(String type) {        List serviceInfos = FastList.newInstance();        Iterator i = getAllComponents().iterator();        while (i.hasNext()) {            ComponentConfig cc = (ComponentConfig) i.next();            List ccServiceInfoList = cc.getServiceResourceInfos();            if (UtilValidate.isEmpty(type)) {                serviceInfos.addAll(ccServiceInfoList);            } else {                Iterator ccServiceInfoIter = ccServiceInfoList.iterator();                while (ccServiceInfoIter.hasNext()) {                    ServiceResourceInfo serviceResourceInfo = (ServiceResourceInfo) ccServiceInfoIter.next();                    if (type.equals(serviceResourceInfo.type)) {                        serviceInfos.add(serviceResourceInfo);                    }                }            }        }        return serviceInfos;    }    public static List getAllWebappResourceInfos() {        List webappInfos = FastList.newInstance();        Iterator i = getAllComponents().iterator();        while (i.hasNext()) {            ComponentConfig cc = (ComponentConfig) i.next();            webappInfos.addAll(cc.getWebappInfos());        }        return webappInfos;    }    public static boolean isFileResourceLoader(String componentName, String resourceLoaderName) throws ComponentException {        ComponentConfig cc = ComponentConfig.getComponentConfig(componentName);        if (cc == null) {            throw new ComponentException("Could not find component with name: " + componentName);        }        return cc.isFileResourceLoader(resourceLoaderName);    }    public static InputStream getStream(String componentName, String resourceLoaderName, String location) throws ComponentException {        ComponentConfig cc = ComponentConfig.getComponentConfig(componentName);        if (cc == null) {            throw new ComponentException("Could not find component with name: " + componentName);        }        return cc.getStream(resourceLoaderName, location);    }    public static URL getURL(String componentName, String resourceLoaderName, String location) throws ComponentException {        ComponentConfig cc = ComponentConfig.getComponentConfig(componentName);        if (cc == null) {            throw new ComponentException("Could not find component with name: " + componentName);        }        return cc.getURL(resourceLoaderName, location);    }    public static String getFullLocation(String componentName, String resourceLoaderName, String location) throws ComponentException {        ComponentConfig cc = ComponentConfig.getComponentConfig(componentName);        if (cc == null) {            throw new ComponentException("Could not find component with name: " + componentName);        }        return cc.getFullLocation(resourceLoaderName, location);    }    public static String getRootLocation(String componentName) throws ComponentException {        ComponentConfig cc = ComponentConfig.getComponentConfig(componentName);        if (cc == null) {            throw new ComponentException("Could not find component with name: " + componentName);        }        return cc.getRootLocation();    }    public static List getAppBarWebInfos(String serverName) {        return ComponentConfig.getAppBarWebInfos(serverName, null);    }    public static List getAppBarWebInfos(String serverName,  Comparator comp) {        List webInfos = (List) serverWebApps.get(serverName);        if (webInfos == null) {            synchronized (ComponentConfig.class) {                if (webInfos == null) {                    Map tm = null;                    Iterator i = getAllComponents().iterator();                    // use a TreeMap to sort the components alpha by title                    if (comp != null) {                        tm = new TreeMap(comp);                    } else {                        tm = new TreeMap();                    }                    while (i.hasNext()) {                        ComponentConfig cc = (ComponentConfig) i.next();                        Iterator wi = cc.getWebappInfos().iterator();                        while (wi.hasNext()) {                            ComponentConfig.WebappInfo wInfo = (ComponentConfig.WebappInfo) wi.next();                            if (serverName.equals(wInfo.server) && wInfo.appBarDisplay) {                                tm.put(wInfo.title, wInfo);                            }                        }                    }                    List webInfoList = FastList.newInstance();                    webInfoList.addAll(tm.values());                    serverWebApps.put(serverName, webInfoList);                    return webInfoList;                }            }        }        return webInfos;    }    public static WebappInfo getWebAppInfo(String serverName, String contextRoot) {        ComponentConfig.WebappInfo info = null;        if (serverName == null || contextRoot == null) {            return info;        }        Iterator i = getAllComponents().iterator();        while (i.hasNext() && info == null) {            ComponentConfig cc = (ComponentConfig) i.next();            Iterator wi = cc.getWebappInfos().iterator();            while (wi.hasNext()) {                ComponentConfig.WebappInfo wInfo = (ComponentConfig.WebappInfo) wi.next();                if (serverName.equals(wInfo.server) && contextRoot.equals(wInfo.getContextRoot())) {                    info = wInfo;                }            }        }        return info;    }    // ========== component info fields ==========    protected String globalName = null;    protected String rootLocation = null;    protected String componentName = null;    protected boolean enabled = true;    protected Map resourceLoaderInfos = FastMap.newInstance();    protected List classpathInfos = FastList.newInstance();    protected List entityResourceInfos = FastList.newInstance();    protected List serviceResourceInfos = FastList.newInstance();    protected List webappInfos = FastList.newInstance();    protected ComponentConfig() {}    protected ComponentConfig(String globalName, String rootLocation) throws ComponentException {        this.globalName = globalName;        if (!rootLocation.endsWith("/")) {            rootLocation = rootLocation + "/";        }        this.rootLocation = rootLocation.replace('\\', '/');        File rootLocationDir = new File(rootLocation);        if (rootLocationDir == null) {            throw new ComponentException("The given component root location is does not exist: " + rootLocation);        }        if (!rootLocationDir.isDirectory()) {            throw new ComponentException("The given component root location is not a directory: " + rootLocation);        }        String xmlFilename = rootLocation + "/" + OFBIZ_COMPONENT_XML_FILENAME;        URL xmlUrl = UtilURL.fromFilename(xmlFilename);        if (xmlUrl == null) {            throw new ComponentException("Could not find the " + OFBIZ_COMPONENT_XML_FILENAME + " configuration file in the component root location: " + rootLocation);        }        Document ofbizComponentDocument = null;        try {            ofbizComponentDocument = UtilXml.readXmlDocument(xmlUrl, true);        } catch (SAXException e) {            throw new ComponentException("Error reading the component config file: " + xmlUrl, e);        } catch (ParserConfigurationException e) {            throw new ComponentException("Error reading the component config file: " + xmlUrl, e);        } catch (IOException e) {            throw new ComponentException("Error reading the component config file: " + xmlUrl, e);        }        Element ofbizComponentElement = ofbizComponentDocument.getDocumentElement();        this.componentName = ofbizComponentElement.getAttribute("name");        this.enabled = "true".equalsIgnoreCase(ofbizComponentElement.getAttribute("enabled"));        if (UtilValidate.isEmpty(this.globalName)) {            this.globalName = this.componentName;        }        Iterator elementIter = null;        // resource-loader - resourceLoaderInfos        elementIter = UtilXml.childElementList(ofbizComponentElement, "resource-loader").iterator();        while (elementIter.hasNext()) {            Element curElement = (Element) elementIter.next();            ResourceLoaderInfo resourceLoaderInfo = new ResourceLoaderInfo(curElement);            this.resourceLoaderInfos.put(resourceLoaderInfo.name, resourceLoaderInfo);        }        // classpath - classpathInfos

⌨️ 快捷键说明

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