📄 xmldatapropertyhandler.java
字号:
/*
* 嶌惉擔: 2003/12/25
*/
package jp.co.intra_mart.framework.base.data;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import jp.co.intra_mart.framework.system.property.PropertyHandlerException;
import jp.co.intra_mart.framework.system.property.PropertyParam;
/**
* XML偺僨乕僞僾儘僷僥傿僴儞僪儔偱偡丅
* <BR>僾儘僷僥傿僼傽僀儖偼傾僾儕働乕僔儑儞枅偵暘妱偝傟傑偡丅偙偺応崌偺僼傽僀儖柤偼乽<I>僾儗僼傿僢僋僗</I>_<I>傾僾儕働乕僔儑儞ID</I>.xml乿偱偡丅傑偨丄傾僾儕働乕僔儑儞偵埶懚偟側偄乽<I>僾儗僼傿僢僋僗</I>.properties乿偑偁傝傑偡丅
* <BR>僾儘僷僥傿僼傽僀儖偺僾儗僼傿僢僋僗偼{@link jp.co.intra_mart.framework.system.property.PropertyManager#getPropertyHandlerParams(String)}偱僉乕偵{@link DataManager#DATA_PROPERTY_HANDLER_KEY}傪巜掕偟偨偲偒偵庢摼偝傟傞僷儔儊乕僞偺偆偪{@link #DEFAULT_BUNDLE_NAME}偱庢摼偝傟傞傕偺偲側傝傑偡丅
*
* @author INTRAMART
* @version 1.0
*/
public class XmlDataPropertyHandler implements DataPropertyHandler {
/**
* 僨僼僅儖僩偺XML僼傽僀儖柤偺僾儗僼傿僢僋僗
*/
public static final String DEFAULT_BUNDLE_NAME = "data-config";
/**
* XML僼傽僀儖柤偺僷儔儊乕僞柤
*/
public static final String DEFAULT_BUNDLE_NAME_PARAM = "bundle";
/**
* 僾儘僷僥傿僼傽僀儖偺嵞撉傒崬傒壜擻偺僷儔儊乕僞柤
*/
public static final String PARAM_DYNAMIC = "dynamic";
/**
* 僨乕僞儕僜乕僗忣曬偑愝掕偝傟偰偄傞XML僼傽僀儖偺僾儗僼傿僢僋僗
*/
private String xmlPrefix;
/**
* 嵞愝掕壜擻僼儔僌
*/
private boolean dynamic;
/**
* 傾僾儕働乕僔儑儞偛偲偺僨乕僞儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗儌僨儖孮
*/
private Map models;
/**
* 嫟捠偺僨乕僞儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗儌僨儖孮
*/
private Map connectors;
/**
* 僐僱僋僞偺僷儔儊乕僞忣曬傪奿擺偟偰偄傞傕偺丅
*/
private Map resources;
/**
* 僐儞僗僩儔僋僞偱偡丅
*/
public XmlDataPropertyHandler() {
setXMLPrefix(null);
setApplicationModels(new HashMap());
setCommonDataModels(new HashMap());
setResourceParams(new HashMap());
}
/**
* XML僼傽僀儖偺僾儗僼傿僢僋僗傪愝掕偟傑偡丅
* @param xmlPrefix XML僼傽僀儖偺僾儗僼傿僢僋僗
*/
private void setXMLPrefix(String xmlPrefix) {
this.xmlPrefix = xmlPrefix;
}
/**
* XML僼傽僀儖偺僾儗僼傿僢僋僗傪庢摼偟傑偡丅
* @return丂XML僼傽僀儖偺僾儗僼傿僢僋僗
*/
private String getXMLPrefix() {
return this.xmlPrefix;
}
/**
* 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌傪愝掕偟傑偡丅
*
* @param applicationBundles 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
*/
private void setApplicationModels(Map applicationModels) {
this.models = applicationModels;
}
/**
* 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗儌僨儖偺廤崌傪庢摼偟傑偡丅
* @return丂models 儕僜乕僗儌僨儖廤崌
*/
private Map getApplicationModels() {
return this.models;
}
/**
* 僐僱僋僞柤偵奩摉偡傞僐僱僋僞儌僨儖傪庢摼偟傑偡丅
* @param connectorName
* @return 嫟捠儕僜乕僗儌僨儖
* @throws 僐僱僋僞儌僨儖庢摼帪偵椺奜偑敪惗
*/
private ConnectorModel getConnectorModel(String connectorName) throws DataPropertyException {
return (ConnectorModel) getCommonDataModels().get(connectorName);
}
/**
* 嫟捠儕僜乕僗儌僨儖孮傪庢摼偟傑偡丅
* @return 嫟捠儕僜乕僗儌僨儖孮
* @throws 嫟捠儕僜乕僗庢摼帪偵椺奜偑敪惗
*/
private Map getCommonDataModels() throws DataPropertyException {
if (isDynamic()) {
return createConnectorModels(getXMLPrefix());
}
return connectors;
}
/**
* 嫟捠偺儕僜乕僗儌僨儖傪愝掕偟傑偡
* @param commonDataModel丂嫟捠偺儕僜乕僗儌僨儖
*/
private void setCommonDataModels(Map commonDataModels) {
this.connectors = commonDataModels;
}
/**
* 嫟捠偺儕僜乕僗僷儔儊乕僞傪愝掕偟傑偡丅
* @param resourceParams
*/
private void setResourceParams(Map resources) {
this.resources = resources;
}
/**
* 嫟捠偺儕僜乕僗僷儔儊乕僞傪庢摼偟傑偡丅
* @return 嫟捠儕僜乕僗僷儔儊乕僞偺Map
* @throws DataPropertyException 嫟捠儕僜乕僗庢摼帪偵椺奜偑敪惗
*/
private Map getResources() throws DataPropertyException {
if (isDynamic()) {
return createResourceModels(getXMLPrefix());
}
return this.resources;
}
/**
* 傾僾儕働乕僔儑儞ID偲僉乕偵奩摉偡傞儕僜乕僗儌僨儖傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param key 僉乕
* @return 傾僾儕働乕僔儑儞ID偺僉乕奩摉偡傞儕僜乕僗儌僨儖
* @throws DataPropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
*/
private DaoGroupModel getDaoGroupModel(String application, String key)
throws DataPropertyException {
DaoGroupModel result = null;
synchronized (this.models) {
Map keyModels =null;
if(!isDynamic()) {
keyModels = (Map) getApplicationModels().get(application);
}
if (keyModels == null) {
keyModels = new HashMap();
getApplicationModels().put(application, keyModels);
}
if(!isDynamic()) {
result = (DaoGroupModel) keyModels.get(key);
}
if (result == null) {
result = createDaoGroupModel(application, key);
keyModels.put(key, result);
}
}
return result;
}
/**
* 僨乕僞儕僜乕僗忣曬傪帩偮儌僨儖傪嶌惉偟傑偡丅
* @param application
* @param key
* @param connect
* @return
* @throws DataPropertyException
*/
private DaoGroupModel createDaoGroupModel(String application, String key)
throws DataPropertyException {
try {
DaoGroupModelProducer producer = new DaoGroupModelProducer();
DaoGroupModel dataModel =
producer.createDaoGroupModel(application.replace('\\', '/'), key, getXMLPrefix());
return dataModel;
} catch (ParserConfigurationException e) {
throw new DataPropertyException(
e.getMessage()
+ ": application = "
+ application
+ ", key = "
+ key,
e);
} catch (SAXException e) {
throw new DataPropertyException(
e.getMessage()
+ ": application = "
+ application
+ ", key = "
+ key,
e);
} catch (IOException e) {
throw new DataPropertyException(
e.getMessage()
+ ": application = "
+ application
+ ", key = "
+ key,
e);
} catch (IllegalArgumentException e) {
throw new DataPropertyException(
e.getMessage()
+ ": application = "
+ application
+ ", key = "
+ key,
e);
}
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -