📄 daogroupmodelproducer.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 + -