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

📄 daogroupmodelproducer.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
字号:
/*
 * 嶌惉擔: 2003/12/25
 */
package jp.co.intra_mart.framework.base.data;

import java.io.IOException;
import java.util.ArrayList;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

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;

/**
 * DataModel傪嶌惉偡傞僋儔僗偱偡丅
 * @author INTRAMART
 * @version 1.0
 */
class DaoGroupModelProducer {

    String application;
    String key;

    /**
     * 僨乕僞儌僨儖傪嶌惉偟傑偡丅
     * @param fileName
     * @return
     * @throws ParserConfigurationException
     * @throws SAXException
     * @throws IOException
     */
    DaoGroupModel createDaoGroupModel(
        String application,
        String key,
        String prefix)
        throws
            ParserConfigurationException,
            SAXException,
            IOException,
            DataPropertyException,
            IllegalArgumentException {
        DaoGroupModel model = null;
        this.application = application;
        this.key = key;

        XMLDocumentProducer producer = new XMLDocumentProducer();

        String fileName = getPropertyPackage(application) 
                        + prefix 
                        + "-" 
                        + getApplicationID(application);
        
        Document doc = producer.getDocument(fileName);
        Node node = producer.getRoot(doc);
        XMLNode root = new XMLNode(node);
        XMLNode groupNode = selectGroupNode(root);
        model = getDaoGroupModel(groupNode);
        return model;
    }

    /**
	 * properties僼傽僀儖偑懚嵼偡傞僷僢働乕僕傪庢摼偟傑偡丅
	 * 僷僢働乕僕壔偝傟偰偄側偄応崌偼嬻暥帤傪曉媝偟傑偡丅
	 *  
	 * @param application
	 * @return 僷僢働乕僕
     * @since 2004.09.13
	 */
    private String getPropertyPackage( String application ) {
        String[] paramAry = application.split("[.]");
		StringBuffer buf = new StringBuffer();
		if ( paramAry.length > 1 ) {
			for ( int i = 0; i < paramAry.length - 1; i++ ) {
			    buf.append(paramAry[i]);
			    buf.append('/');
			}
		}
        return buf.toString();
	}

    /**
	 * 傾僾儕働乕僔儑儞ID傪庢摼偟傑偡丅
	 * 
	 * @param application
	 * @return 傾僾儕働乕僔儑儞ID
     * @since 2004.09.13
	 */
    private String getApplicationID( String application ) {
        String[] paramAry = application.split("[.]");
	    String id = paramAry[paramAry.length - 1];
        return id;
	}

    /**
     * DaoGroupModel傪庢摼偟傑偡丅
     * @param groupNode丂僨乕僞儕僜乕僗忣曬傪帩偮僌儖乕僾
     * @return DaoGroupModel 
     */
    private DaoGroupModel getDaoGroupModel(XMLNode groupNode)
        throws DataPropertyException {
        DaoGroupModel model = new DaoGroupModel();
        ArrayList daos = getDaoModels(groupNode);

        for (int i = 0; i < daos.size(); i++) {
            DaoModel dao = (DaoModel) daos.get(i);
            if (dao.getConnectName() == null) {
                model.setDefaultDao(dao);
            } else {
                model.setDaoModel(dao.getConnectName(), dao);
            }
        }
        return model;
    }

    /**
     * DaoModel偺儕僗僩傪庢摼偟傑偡丅
     * @param nodes
     * @return ArrayList 
     */
    private ArrayList getDaoModels(XMLNode groupNode)
        throws DataPropertyException {
        ArrayList daos = new ArrayList();
        XMLNode[] daoNodes = groupNode.select(DaoModel.ID);
        for (int i = 0; i < daoNodes.length; i++) {
            DaoModel dao = getDaoModel(daoNodes[i]);
            daos.add(dao);
        }
        return daos;
    }

    /**
     * DaoModel傪庢摼偟傑偡丅
     * @param daoNode
     * @version 1.0
     */
    private DaoModel getDaoModel(XMLNode daoNode)
        throws DataPropertyException {
        DaoModel dao = new DaoModel();
        dao.setConnectName(getConnectName(daoNode));
        dao.setDaoClass(getDaoClass(daoNode));
        dao.setConnectorName(getConnectorName(daoNode));
        return dao;
    }

    /**
     * DaoClass柤傪庢摼偟傑偡丅
     * @param xmlNode
     * @return String DaoClass柤
     * @throws DataPropertyException
     */
    private String getDaoClass(XMLNode xmlNode) throws DataPropertyException {
        String daoClass = xmlNode.getString(DaoModel.P_ID_DAO_CLASS);
        if (daoClass == null || daoClass.equals("")) {
            String message = null;
            try {
                ResourceBundle messageBundle =
                    ResourceBundle.getBundle(
                        "jp.co.intra_mart.framework.base.data.i18n");
                message =
                    messageBundle.getString(
                        "ResourceBundleDataPropertyHandlerUtil.param.DAOClassNotDeclared");
            } catch (MissingResourceException exc) {
            }

            String connect = xmlNode.getString(DaoModel.P_ID_CONNECT_NAME);
            if (connect == null) {
                throw new DataPropertyException(
                    message
                        + " : application = "
                        + application
                        + ", key = "
                        + key);
            } else {
                throw new DataPropertyException(
                    message
                        + " : application = "
                        + application
                        + ", key = "
                        + key
                        + " connect = "
                        + connect);
            }
        }

        return daoClass;
    }

    /**
     * 僲乕僪偐傜僐僱僋僩柤傪庢傝弌偟傑偡丅
     * @param daoNode
     * @return String 僐僱僋僩柤 
     */
    private String getConnectName(XMLNode daoNode) {
        String connectName = daoNode.getString(DaoModel.P_ID_CONNECT_NAME);
        return connectName;
    }

    /**
     * 僲乕僪偐傜僐僱僋僞柤傪庢傝弌偟傑偡丅
     * @param daoNode
     * @return String 僐僱僋僞柤 
     */
    private String getConnectorName(XMLNode daoNode) {
        String connectorName =
            daoNode.getString(DaoModel.P_ID_DAO_CONNECTOR_NAME);
        return connectorName;
    }

    /**
     * XMLNode傪庢摼偟傑偡丅
     * @param root
     * @return XMLNode 
     * @throws DataPropertyException
     */
    private XMLNode selectGroupNode(XMLNode root)
        throws DataPropertyException {
        XMLNode result = null;
        XMLNode[] groupNodes = root.select(DaoGroupModel.ID);

        for (int i = 0; i < groupNodes.length; i++) {
            XMLNode groupNode = groupNodes[i];
            if (groupNode.getString(DaoGroupModel.P_ID_DAO_KEY).equals(key)) {
                result = groupNode;
                break;
            }

        }
        if (result == null) {
            throw new DataPropertyException(
                "application = " + application + " : key = " + key);
        }
        return result;
    }

}

⌨️ 快捷键说明

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