📄 xmlconfigfactory.java
字号:
package com.easyjf.web.config;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.dom4j.*;
import org.dom4j.io.*;
import com.easyjf.web.FormConfig;
import com.easyjf.web.FormProperty;
import com.easyjf.web.Globals;
import com.easyjf.web.Module;
import com.easyjf.web.Page;
/**
*
* <p>
* Title:XML格式配置文件信息处理
* </p>
* <p>
* Description:读取XML格式的EasyJWeb框架配置文件信息;
* </p>
* <p>
* Copyright: Copyright (c) 2006
* </p>
* <p>
* Company: www.easyjf.com
* </p>
*
* @author 蔡世友
* @version 1.0
*/
public class XMLConfigFactory implements IConfigFactory {
private Document doc;
private static final Logger logger = Logger.getLogger(XMLConfigFactory.class);
/**
* @deprecated
*
*/
public XMLConfigFactory() {
try {
File file = new File(Globals.CONFIG_FILE_FULL_PATH);
if (file.exists()) {
FileInputStream in = new FileInputStream(file);
SAXReader reader = new SAXReader();
doc = reader.read(in);
} else {
logger.warn("无法找到配置文件" + Globals.CONFIG_FILE_FULL_PATH
+ ".EasyJWEB将自动使用默认的路径处理Action!");
}
} catch (Exception e) {
logger.warn("配置文件错误!" + e);
}
}
public XMLConfigFactory(InputStream in) {
try {
SAXReader reader = new SAXReader();
doc = reader.read(in);
} catch (Exception e) {
logger.warn("配置文件错误!" + e);
}
}
public void initForm(Map forms) {
if (doc == null)
return;
List nodes = doc.selectNodes("/easyjf-web/forms/form");
for (int i = 0; i < nodes.size(); i++) {
Element e = (Element) nodes.get(i);
FormConfig fc = new FormConfig();
fc.setAlertType(e.attributeValue("alertType"));
fc.setBean(e.attributeValue("bean"));
fc.setClientValidate(e.attributeValue("clientValidate"));
fc.setName(e.attributeValue("name"));
fc.setServerValidate(e.attributeValue("serverValidate"));
String events = e.attributeValue("event");
if (events != null && (!events.equals(""))) {
String[] s = events.split(",");
if (s != null) {
List event = new ArrayList();
for (int t = 0; t < s.length; t++) {
if (!s[t].equals(""))
event.add(s[t]);
}
fc.setEvent(event);
}
}
List lPage = e.selectNodes("property");
Map pages = new HashMap();
for (int j = 0; j < lPage.size(); j++) {
Element p = (Element) lPage.get(j);
FormProperty prop = new FormProperty();
prop.setInitial(p.attributeValue("initial"));
prop.setName(p.attributeValue("name"));
prop.setNotNull(p.attributeValue("notNull"));
prop.setSize(p.attributeValue("size"));
prop.setType(p.attributeValue("type"));
events = p.attributeValue("event");
if (events != null && (!events.equals(""))) {
String[] s = events.split(",");
if (s != null) {
List event = new ArrayList();
for (int t = 0; t < s.length; t++) {
if (!s[t].equals(""))
event.add(s[t]);
}
prop.setEvent(event);
}
}
pages.put(prop.getName(), prop);
}
fc.setPropertys(pages);
forms.put(fc.getName(), fc);
}
}
public void initModule(Map modules) {
if (doc == null)
return;
List nodes = doc.selectNodes("/easyjf-web/modules/module");
for (int i = 0; i < nodes.size(); i++) {
Element e = (Element) nodes.get(i);
Module mc = new Module();
mc.setAction(e.attributeValue("action"));
mc.setDefaultPage(e.attributeValue("defaultPage"));
mc.setForm(e.attributeValue("form"));
mc.setPath(e.attributeValue("path"));
if(e.attributeValue("scope")!=null)mc.setScope(e.attributeValue("scope"));
List lPage = e.selectNodes("page");
//Map pages = new HashMap();
for (int j = 0; j < lPage.size(); j++) {
Element p = (Element) lPage.get(j);
Page page = new Page();
page.setName(p.attributeValue("name"));
if (mc.getDefaultPage() == null
|| mc.getDefaultPage().equals("")) {
mc.setDefaultPage(page.getName());
}
page.setType(p.attributeValue("type"));
page.setUrl(p.attributeValue("url"));
//pages.put(page.getName(), page);
mc.getPages().put(page.getName(), page);
}
List interceptors = e.selectNodes("interceptor");
for (int j = 0; j < interceptors.size(); j++) {
Element p = (Element) interceptors.get(j);
String interceptorClazz=p.attributeValue("class");
try{
mc.getInterceptors().add(Class.forName(interceptorClazz).newInstance());
}catch(Exception ex){
System.out.println("reach here");
}
}
mc.setPropertyValues(BeanConfigReader.parsePropertyValues(e.selectNodes("property")));
modules.put(mc.getPath(), mc);
}
}
public void initPage(Map pages) {
if (doc == null)
return;
List nodes = doc.selectNodes("/easyjf-web/pages/page");
for (int i = 0; i < nodes.size(); i++) {
Element e = (Element) nodes.get(i);
Page page = new Page();
page.setName(e.attributeValue("name"));
page.setType(e.attributeValue("type"));
page.setUrl(e.attributeValue("url"));
pages.put(page.getName(), page);
}
}
public Map initOther() {
if (doc == null)
return null;
Node node = doc
.selectSingleNode("/easyjf-web/frame-setting/template-base");
Map result = new HashMap();
if (node != null)
result.put("TemplateBasePath", node.getText());
// 初始程序
List appList = doc.selectNodes("/easyjf-web/frame-setting/init-app/app-class");
List applist = new ArrayList();
if (appList != null) {
for (int i = 0; i < appList.size(); i++) {
Element e = (Element) appList.get(i);
Map app = new HashMap();
app.put("init-method", e.attributeValue("init-method"));
app.put("destroy-method", e.attributeValue("destroy-method"));
app.put("class", e.getText());
applist.add(app);
}
}
// logger.info("applist.size:"+applist.size());
result.put("initApp", applist);
// 初始化拦截器
List interceptors = doc
.selectNodes("/easyjf-web/frame-setting/interceptors/app-class");
if (interceptors != null) {
for (int i = 0; i < interceptors.size(); i++) {
Element e = (Element) interceptors.get(i);
Map app = new HashMap();
app.put("name", e.attributeValue("name"));
app.put("class", e.getText());
interceptors.set(i, app);
}
}
result.put("interceptors", interceptors);
//初始化错误处理信息
List errorHandlers = doc.selectNodes("/easyjf-web/frame-setting/error-handler/app-class");
if (interceptors != null) {
for (int i = 0; i < errorHandlers.size(); i++) {
Element e = (Element) errorHandlers.get(i);
Map app = new HashMap();
app.put("exception", e.attributeValue("exception"));
app.put("path", e.attributeValue("path"));
app.put("class", e.getText());
errorHandlers.set(i, app);
}
}
result.put("errorHandlers", errorHandlers);
List list = doc.selectNodes("/easyjf-web/frame-setting/property");
if (list != null) {
for (int i = 0; i < list.size(); i++) {
Element el = (Element) list.get(i);
result.put(el.attributeValue("name"), el.getText());
}
}
result.put("beanDefinitions", BeanConfigReader.parseBeansFromDocument(doc));
return result;
}
public Document parse(String fileName) throws DocumentException {
SAXReader reader = new SAXReader();
File file = new File(fileName);
Document document = file.exists() ? reader.read(fileName) : null;
return document;
}
public Document getDoc() {
return doc;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -