strutsconfigfile.java
来自「Java Pattern Oriented Framework (Jt) 是为了」· Java 代码 · 共 867 行 · 第 1/2 页
JAVA
867 行
package Jt.wizard.struts;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import Jt.JtContext;
import Jt.JtFactory;
import Jt.JtMessage;
import Jt.JtObject;
import Jt.DAO.DAODefinition;
import Jt.wizard.WizardConfig;
import Jt.xml.JDOMAdapter;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
import org.jdom.Element;
/**
* Struts Configuration File (Internal JtWizard Class).
*/
public class StrutsConfigFile extends JtObject {
private static final long serialVersionUID = 1L;
public static final String READ = "READ";
public static final String DELETE = "DELETE";
public static final String UPDATE = "UPDATE";
public static final String CREATE = "CREATE";
public static final String STRUTS_CONFIG_TEMPLATE = "struts-config-template.xml";
public static final String JtCLASS_NAME = StrutsConfigFile.class.getName();
private JtFactory factory = new JtFactory ();
private WizardConfig config;
JDOMAdapter adapter, templateAdapter;
private DAODefinitionForm defForm;
private boolean init = false;
private String prefix;
private String path;
private InputStream resourceStream;
private String classname;
//private String key;
private String keys[];
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public InputStream getResourceStream() {
return resourceStream;
}
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public void setResourceStream(InputStream resourceStream) {
this.resourceStream = resourceStream;
}
private void handleUIError (String error) {
Collection col;
if (error == null)
return;
col = (Collection) this.getObjErrors();
if (col == null) {
col = new LinkedList ();
setObjErrors (col);
}
col.add(error);
}
// Initialize
private boolean initialized () {
adapter = new JDOMAdapter ();
templateAdapter = new JDOMAdapter ();
config = (WizardConfig) factory.createObject(WizardConfig.JtCLASS_NAME);
if (config == null) {
handleError ("Unable to create instance of configuration class (WizardConfig).");
return (false);
}
factory.sendMessage(config, new JtMessage (JtObject.JtINITIALIZE));
adapter.setPath(config.getConfigPath());
factory.sendMessage (adapter, new JtMessage (JDOMAdapter.READ_FILE));
if (adapter.getObjException() != null) {
this.setObjException(adapter.getObjException());
return (false);
}
resourceStream = this.getClass().getClassLoader().getResourceAsStream (StrutsConfigFile.STRUTS_CONFIG_TEMPLATE);
templateAdapter.setInputStream(resourceStream);
factory.sendMessage (templateAdapter, new JtMessage (JDOMAdapter.READ_STREAM));
if (templateAdapter.getObjException() != null) {
this.setObjException(templateAdapter.getObjException());
return (false);
}
return (true);
}
private String capFirstLetter (String str) {
if (str == null)
return (null);
if (str.equals(""))
return (str);
if (str.length() == 1)
return str.toUpperCase();
return (str.substring(0, 1).toUpperCase() + str.substring(1));
}
private void transformForward (Element elem, String prefix) {
String path;
String pos;
String tmp;
if (elem == null || prefix == null)
return;
path = elem.getAttributeValue("path");
if (path == null)
return;
pos = capFirstLetter (prefix.toLowerCase());
tmp = path.replaceAll("#name", pos);
elem.setAttribute("path", tmp);
return;
}
private void transformForwards (Element elem, String prefix) {
List children;
int i;
Element tmp;
if (elem == null || prefix == null)
return;
children = elem.getChildren();
for (i = 0; i < children.size(); i++) {
tmp = (Element) children.get(i);
if (tmp == null)
continue;
if ("forward".equals (tmp.getName())) {
transformForward (tmp, prefix);
}
}
}
private Element transformForm (Element elem, String prefix) {
String name;
String tmp;
if (elem == null || prefix == null)
return (null);
name = elem.getAttributeValue("name");
if (name == null)
return (null);
tmp = name.replaceFirst("#name", prefix);
elem.setAttribute("name", tmp);
return (elem);
}
private String updateQuery (String str) {
String query;
String tmp;
if (str == null)
return (null);
if (defForm == null || defForm.getTable() == null)
return (str);
query = "select * from " + defForm.getTable();
try {
query = URLEncoder.encode(query, "UTF-8");
} catch (Exception ex) {
handleException (ex);
return (str);
}
tmp = str.replaceFirst("query=#query", "query=" + query);
if (tmp == null)
return (str);
return (tmp);
}
private String replaceString (String str, String substr, String newsubstr) {
int index;
int length;
String segment1;
String result;
if (str == null)
return (null);
if (substr == null || substr.equals ("") ||
newsubstr == null)
return (str);
result = null;
for (;;) {
index = str.indexOf(substr, 0);
if (index < 0) {
if (result == null)
result = str;
else
result = result + str;
break;
}
length = substr.length();
segment1 = str.substring(0, index);
str = str.substring(index+length);
if (result == null)
result = segment1 + newsubstr;
else
result = result + segment1 + newsubstr;
}
return (result);
}
private void transformAttribute (Element elem, String attr, String str) {
String value, tmp;
if (elem == null || attr == null || str == null)
return;
value = elem.getAttributeValue(attr);
if (value == null)
return;
tmp = value.replaceAll("#name", str);
if (tmp == null)
return;
elem.setAttribute(attr, tmp);
}
private Element transformAction (Element elem, String prefix, FileForm form) {
String path;
//String name;
String pos;
String tmp;
String parameter;
if (elem == null || prefix == null)
return (null);
path = elem.getAttributeValue("path");
if (path == null)
return (null);
pos = capFirstLetter (prefix.toLowerCase());
tmp = path.replaceFirst("#name", pos);
elem.setAttribute("path", tmp);
transformAttribute (elem, "input", pos);
/*
name = elem.getAttributeValue("name");
if (name == null)
return (null);
tmp = name.replaceFirst("#name", prefix);
elem.setAttribute("name", tmp);
*/
elem.setAttribute("name", form.getFormName());
transformForwards (elem, prefix);
parameter = elem.getAttributeValue("parameter");
if (parameter != null) {
tmp = parameter.replaceFirst("classname=#classname", "classname=" + classname);
if (keys != null && (keys.length > 0))
tmp = tmp.replaceFirst("key=#key", "key=" + keys[0]);
if (keys != null && (keys.length > 1))
tmp = tmp.replaceFirst("key1=#key1", "key1=" + keys[1]);
else
tmp = replaceString(tmp, "key1=#key1", "");
if (keys != null && (keys.length > 2))
tmp = tmp.replaceFirst("key2=#key2", "key2=" + keys[2]);
else
tmp = replaceString(tmp, "key2=#key2", "");
if (tmp != null && (tmp.indexOf ("query=#query") > 0))
tmp = updateQuery (tmp);
//System.out.println(tmp);
elem.setAttribute("parameter", tmp);
}
return (elem);
}
private String updateAction (String actionPath, FileForm form) {
Element elem, newElem, tmp;
elem = findActionMapping (templateAdapter, actionPath);
if (elem == null) {
handleWarning ("Action mapping not found in template struts config file:" + actionPath);
return null;
}
newElem = transformAction (elem, prefix, form);
if (newElem == null)
return null;
tmp = findActionMapping (adapter, newElem.getAttributeValue("path"));
//System.out.println (tmp);
if (tmp == null)
createActionMapping (newElem);
else
updateActionMapping (newElem.getAttributeValue("path"), newElem);
return (null);
}
private String updateActionForm (String name) {
Element elem, newElem, tmp;
elem = findForm (templateAdapter, name);
if (elem == null) {
handleWarning ("Form not found in template struts config file:" + name);
return null;
}
newElem = transformForm (elem, prefix);
if (newElem == null)
return null;
tmp = findForm (adapter, newElem.getAttributeValue("name"));
System.out.println (tmp);
if (tmp == null)
createForm (newElem);
else
updateForm (newElem.getAttributeValue("name"), newElem);
return (null);
}
private String retrieveClassname (String qclassname) {
int index;
if (qclassname == null)
return (null);
index = qclassname.lastIndexOf('.');
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?