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

📄 serviceconfigmodelproducer.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
字号:
/*
 * ServiceConfigModelProducer.java
 *
 * Created on 2004/01/12, 14:15
 */
package jp.co.intra_mart.framework.base.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

import javax.xml.parsers.ParserConfigurationException;

import jp.co.intra_mart.framework.util.XMLDocumentProducer;
import jp.co.intra_mart.framework.util.XMLNode;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;

/**
 * 僒乕價僗僐儞僼傿僌儌僨儖傪嶌惉偡傞僋儔僗偱偡丅
 * 
 * @author INTRAMART
 * @since 5.0
 */
class ServiceConfigModelProducer {

    /**
     * ServiceConfigModel傪庢摼偟傑偡丅
     * 
     * @param fileName XML儕僜乕僗柤
     * @return ServiceConfigModel
     * @throws IllegalArgumentException
     * @throws ParserConfigurationException
     * @throws SAXException
     * @throws IOException
     */
    ServiceConfigModel createServiceConfigModel(String fileName)
            throws IllegalArgumentException, ParserConfigurationException,
            SAXException, IOException {
        ServiceConfigModel model = null;
        XMLDocumentProducer producer = new XMLDocumentProducer();
        Document doc = producer.getDocument(fileName);
        Node node = producer.getRoot(doc);
        XMLNode root = new XMLNode(node);
        model = getServiceConfigModel(root);
        return model;
    }

    /**
     * ServiceConfigModel傪庢摼偟傑偡丅
     * 
     * @param rootNode
     * @return ServiceConfigModel
     */
    private ServiceConfigModel getServiceConfigModel(XMLNode rootNode) {
        ServiceConfigModel config = new ServiceConfigModel();
        HashMap map = getServiceModels(rootNode);
        config.setServices(map);

        XMLNode inputErrorPageNode = rootNode
                .lookup(ErrorPageModel.P_ID_INPUT_ERROR);
        config.setInputErrorPage(getInputErrorPage(inputErrorPageNode));

        XMLNode serviceErrorPageNode = rootNode
                .lookup(ErrorPageModel.P_ID_SERVICE_ERROR);
        config.setServiceErrorPage(getServiceErrorPage(serviceErrorPageNode));

        XMLNode systemErrorPageNode = rootNode
                .lookup(ErrorPageModel.P_ID_SYSTEM_ERROR);
        config.setSystemErrorPage(getSystemErrorPage(systemErrorPageNode));

        return config;

    }

    /**
     * 僒乕價僗儌僨儖堦棗傪庢摼
     * 
     * @param rootNode
     * @return
     */
    private HashMap getServiceModels(XMLNode rootNode) {
        HashMap services = new HashMap();
        XMLNode[] serviceNodes = rootNode.select(ServiceModel.ID);
        for (int i = 0; i < serviceNodes.length; i++) {
            ServiceModel service = getServiceModel(serviceNodes[i]);
            services.put(service.getServiceId(), service);
        }
        return services;
    }

    /**
     * 
     * @param rootNode
     * @return
     */
    private ServiceModel getServiceModel(XMLNode serviceNode) {
        ServiceModel service = new ServiceModel();

        service.setServiceId(getServiceId(serviceNode));
        service.setServiceControllerName(getServiceControllerName(serviceNode));
        service.setTransitionName(getTransitionName(serviceNode));

        // 僨僼僅儖僩僱僋僗僩儁乕僕偺愝掕
//        XMLNode defaultNextPageNode = serviceNode
//                .lookup(NextPageModel.P_ID_DEFAULT_NEXT_PAGE);
        service.setDefaultNextPage(getDefaultNextPage(serviceNode));

        // 僱僋僗僩儁乕僕偺愝掕
        ArrayList nextPages = getNextPages(serviceNode);
        for (int i = 0; i < nextPages.size(); i++) {
            NextPageModel nextPage = (NextPageModel) nextPages.get(i);
            service.setNextPage(nextPage.getPageKey(), nextPage);
        }

        // 擖椡僄儔乕儁乕僕偺愝掕
        ArrayList inputErrorPages = getInputErrorPages(serviceNode);
        for (int i = 0; i < inputErrorPages.size(); i++) {
            ErrorPageModel errorPage = (ErrorPageModel) inputErrorPages.get(i);
            if (errorPage.getPageKey() == null) {
                service.setDefaultInputErrorPage(errorPage);
            } else {
                service.setInputErrorPage(errorPage.getPageKey(), errorPage);
            }
        }

        // 僒乕價僗僄儔乕儁乕僕偺愝掕
        ArrayList serviceErrorPages = getServiceErrorPages(serviceNode);
        for (int i = 0; i < serviceErrorPages.size(); i++) {
            ErrorPageModel errorPage = (ErrorPageModel) serviceErrorPages
                    .get(i);
            if (errorPage.getPageKey() == null) {
                service.setDefaultServiceErrorPage(errorPage);
            } else {
                service.setServiceErrorPage(errorPage.getPageKey(), errorPage);
            }
        }

        // 僔僗僥儉僄儔乕儁乕僕偺愝掕
        ArrayList systemErrorPages = getSystemErrorPages(serviceNode);
        for (int i = 0; i < systemErrorPages.size(); i++) {
            ErrorPageModel errorPage = (ErrorPageModel) systemErrorPages.get(i);
            if (errorPage.getPageKey() == null) {
                service.setDefaultSystemErrorPage(errorPage);
            } else {
                service.setSystemErrorPage(errorPage.getPageKey(), errorPage);
            }
        }

        return service;

    }

    /**
     * 僒乕價僗俬俢偺庢摼
     * 
     * @param serviceNode
     * @return
     */
    private String getServiceId(XMLNode serviceNode) {
        // TODO id 偑側偄帪偼椺奜傪弌椡偡傞傋偒丠
        String id = serviceNode.getString(ServiceModel.P_ID_SERVICE_ID);
        return id;
    }

    /**
     * 僒乕價僗僐儞僩儘乕儔庢摼
     * 
     * @param serviceNode
     * @return
     */
    private String getServiceControllerName(XMLNode serviceNode) {

        return serviceNode.getString(ServiceModel.P_ID_SERVICE_CONTROLL);
    }

    /**
     * 僩儔儞僕僢僔儑儞僋儔僗傪庢摼
     * 
     * @param serviceNode
     * @return
     */
    private String getTransitionName(XMLNode serviceNode) {

        return serviceNode.getString(ServiceModel.P_ID_SERVICE_TRANSITION);
    }

    /**
     * 擖椡僄儔乕儁乕僕堦棗傪庢摼
     * 
     * @param serviceNode
     * @return
     */
    private ArrayList getInputErrorPages(XMLNode serviceNode) {
        ArrayList errorPages = new ArrayList();
        XMLNode[] errorPageNodes = serviceNode
                .select(ErrorPageModel.P_ID_INPUT_ERROR);

        for (int i = 0; i < errorPageNodes.length; i++) {
            ErrorPageModel inputError = getErrorPage(errorPageNodes[i]);
            errorPages.add(inputError);
        }
        return errorPages;
    }

    /**
     * 僒乕價僗僄儔乕儁乕僕堦棗傪庢摼
     * 
     * @param serviceNode
     * @return
     */
    private ArrayList getServiceErrorPages(XMLNode serviceNode) {
        ArrayList errorPages = new ArrayList();
        XMLNode[] errorPageNodes = serviceNode
                .select(ErrorPageModel.P_ID_SERVICE_ERROR);

        for (int i = 0; i < errorPageNodes.length; i++) {
            ErrorPageModel inputError = getErrorPage(errorPageNodes[i]);
            errorPages.add(inputError);
        }
        return errorPages;
    }

    /**
     * 僔僗僥儉僄儔乕儁乕僕堦棗傪庢摼
     * 
     * @param serviceNode
     * @return
     */
    private ArrayList getSystemErrorPages(XMLNode serviceNode) {
        ArrayList errorPages = new ArrayList();
        XMLNode[] errorPageNodes = serviceNode
                .select(ErrorPageModel.P_ID_SYSTEM_ERROR);

        for (int i = 0; i < errorPageNodes.length; i++) {
            ErrorPageModel inputError = getErrorPage(errorPageNodes[i]);
            errorPages.add(inputError);
        }
        return errorPages;
    }

    /**
     * 擖椡僄儔乕儁乕僕傪庢摼
     * 
     * @param node
     * @return
     */
    private ErrorPageModel getInputErrorPage(XMLNode node) {
        return getErrorPage(node);
    }

    /**
     * 僒乕價僗僄儔乕儁乕僕傪庢摼
     * 
     * @param node
     * @return
     */
    private ErrorPageModel getServiceErrorPage(XMLNode node) {
        return getErrorPage(node);
    }

    /**
     * 僔僗僥儉僄儔乕儁乕僕傪庢摼
     * 
     * @param node
     * @return
     */
    private ErrorPageModel getSystemErrorPage(XMLNode node) {
        return getErrorPage(node);
    }

    /**
     * 僄儔乕儁乕僕偺儌僨儖傪庢摼
     * 
     * @param node
     * @return
     */
    private ErrorPageModel getErrorPage(XMLNode node) {
        ErrorPageModel errorPage = new ErrorPageModel();
        String key = null;
        String page = null;

        // node偑Null偺帪傕偁傝偊傞
        if (node != null) {
            key = node.getString(ErrorPageModel.P_ID_PAGE_KEY);
            page = node.getString(ErrorPageModel.P_ID_ERROR_PAGE);
        }
        errorPage.setPageKey(key);
        errorPage.setErrorPage(page);

        return errorPage;
    }

    /**
     * 僨僼僅儖僩僱僋僗僩儁乕僕偺庢摼
     * 
     * @param serviceNode
     * @return
     */
    private NextPageModel getDefaultNextPage(XMLNode serviceNode) {
        NextPageModel nextPage = null;
        String page = null;

        XMLNode[] nodeList = serviceNode.select(NextPageModel.P_ID_NEXT_PAGE);
        for(int i = 0; i < nodeList.length; i ++) {
        	if(nodeList[i].getString(NextPageModel.P_ID_PAGE_KEY) == null) {
        		nextPage = new NextPageModel();
        		nextPage.setPagePath(nodeList[i].getString(NextPageModel.P_ID_PAGE_PATH));
        	}
        }

        return nextPage;
    }

    /**
     * 僱僋僗僩儁乕僕堦棗傪庢摼
     * 
     * @param serviceNode
     * @return
     */
    private ArrayList getNextPages(XMLNode serviceNode) {
        ArrayList nextPages = new ArrayList();
        XMLNode[] nextPageNodes = serviceNode
                .select(NextPageModel.P_ID_NEXT_PAGE);

        for (int i = 0; i < nextPageNodes.length; i++) {
            NextPageModel nextPage = getNextPage(nextPageNodes[i]);
            nextPages.add(nextPage);
        }
        return nextPages;
    }

    /**
     * 僱僗僩儁乕僕偺庢摼
     * 
     * @param nextPageNode
     * @return
     */
    private NextPageModel getNextPage(XMLNode nextPageNode) {
        NextPageModel nextPage = new NextPageModel();

        String key = nextPageNode.getString(NextPageModel.P_ID_PAGE_KEY);
        String page = nextPageNode.getString(NextPageModel.P_ID_PAGE_PATH);

        nextPage.setPageKey(key);
        nextPage.setPagePath(page);

        return nextPage;
    }

}

⌨️ 快捷键说明

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