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