jspgenerator.java

来自「Java Pattern Oriented Framework (Jt) 是为了」· Java 代码 · 共 1,639 行 · 第 1/4 页

JAVA
1,639
字号
package Jt.wizard.struts.view;

import java.beans.PropertyDescriptor;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletContext;


import org.jdom.Element;
import org.jdom.Namespace;

import Jt.*;
import Jt.util.BeanProperty;
import Jt.util.JtJavaParser;
import Jt.wizard.struts.DynaMapping;
import Jt.wizard.struts.FormBean;
import Jt.wizard.struts.FormBeanForm;
import Jt.xml.JDOMAdapter;


/**
 * Jsp generator (internal JtWizard class). 
 */

public class JspGenerator extends JtObject {
    public static final String JtCLASS_NAME = JspGenerator.class.getName(); 
    public static final String UPDATE_FORM = "UPDATE_FORM";
    public static final String UPDATE_DISPLAY_TAG = "UPDATE_DISPLAY_TAG";
    public static final String UPDATE_LINKS = "UPDATE_LINKS";
    private JtFactory factory = new JtFactory ();
    private JDOMAdapter templateAdapter;


    private static final long serialVersionUID = 1L;

    private String className;
    private String action;
    private String path;
    private String prefix;
    private boolean readonly;
    private String key;
    private InputStream inputStream;
    private List keys;
    private String formName;
    



    public JspGenerator() {
    }

    // Attributes


    public void setClassName (String className) {
        this.className = className; 

    }

    public String getClassName () {
        return (className);
    }


    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public boolean isReadonly() {
        return readonly;
    }

    public void setReadonly(boolean readonly) {
        this.readonly = readonly;
    }

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }
    
   
    public List getKeys() {
        return keys;
    }

    public void setKeys(List keys) {
        this.keys = keys;
    }
    
    
    public String getFormName() {
        return formName;
    }

    public void setFormName(String formName) {
        this.formName = formName;
    }


    private void addElement (JDOMAdapter adapter, String parentPath, Element element) {
        JtMessage msg = new JtMessage (JDOMAdapter.ADD_ELEMENT);

        if (adapter == null || element == null)
            return;

        msg.setMsgContent(element);
        msg.setMsgData(parentPath);
        adapter.processMessage(msg);
    }
    
    // Add a child
  
    /*
    private void addChild (Element parent, Element element) {
        if (parent == null || element == null)
            return;
        
        parent.addContent(element);
    }
    */
    
    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 boolean generateInputFields (JDOMAdapter adapter, String className) {
        //JtFactory factory = new JtFactory ();
        Object obj;
        JtMessage msg = new JtMessage (JtFactory.JtGET_ATTRIBUTES);
        JtHashTable attributes;
        JtIterator iterator;
        String attrName;
        Element element;
        int index = 1;
        Namespace nameSpace = Namespace.getNamespace("html", "http://www.jt.org");
        PropertyDescriptor prop;
        JtMessage msg1 = new JtMessage (JtHashTable.JtGET);

        if (className == null || adapter == null)
            return (false);
        obj = factory.createObject(className);

        if (obj == null)
            return (false); // check

        msg.setMsgContent(obj);

        attributes = (JtHashTable) factory.processMessage(msg);

        if (attributes == null) {
            handleWarning ("DAODefinition.generateProperties: no class attributes for " +
                    className);
            return (true);
        }  

        iterator = (JtIterator) attributes.processMessage (new JtMessage (JtHashTable.JtGET_KEYS));

        if (iterator == null)
            return (false); //check

        msg = new JtMessage (JDOMAdapter.ADD_ELEMENT);
        for (;;) {
            attrName = (String) iterator.processMessage(new JtMessage (JtIterator.JtNEXT));

            if (attrName == null)
                break;
            msg1.setMsgData (attrName);
            prop = (PropertyDescriptor) attributes.processMessage(msg1);

            if (!(prop.getPropertyType().isPrimitive() || 
                    String.class.isAssignableFrom (prop.getPropertyType()) ||

                    "java.util.Date".equals(prop.getPropertyType().getName())))
                continue;



            element = new Element ("tr");
            msg.setMsgContent(element);
            msg.setMsgData ("html:form/table");
            adapter.processMessage(msg);           

            element = new Element ("td");
            element.setText(attrName + ":");
            msg.setMsgContent(element);
            msg.setMsgData ("html:form/table/tr[" + index + "]");
            adapter.processMessage(msg);  

            element = new Element ("td");
            addElement (adapter, "html:form/table/tr[" + index + "]", element);

            element = new Element ("text");
            element.setNamespace(nameSpace);
            element.setAttribute("property", attrName);
            msg.setMsgContent(element);
            msg.setMsgData ("html:form/table/tr[" + index + "]" + "/td[2]");
            adapter.processMessage(msg);
            index++;
        }  

        element = new Element ("tr");
        addElement (adapter, "html:form/table", element);

        element = new Element ("td");
        addElement (adapter, "html:form/table/tr[" + index + "]", element);

        element = new Element ("submit");           
        addElement (adapter, "html:form/table/tr[" + index + "]" + "/td[1]", element);
        element.setNamespace(nameSpace);      


        return (true);

    }

    private boolean generateColumns (JDOMAdapter adapter, String formName) {
    //private boolean generateColumns (JDOMAdapter adapter, String className) {
        //JtFactory factory = new JtFactory ();
        Object obj;
        JtMessage msg = new JtMessage (JtFactory.JtGET_ATTRIBUTES);
        //JtHashTable attributes;
        //JtIterator iterator;
        String attrName;
        Element element;
        int index = 0, index1;
        Namespace nameSpace = Namespace.getNamespace("display", "http://displaytag.sf.net");
        //PropertyDescriptor prop;
        JtMessage msg1 = new JtMessage (JtHashTable.JtGET);
        //JtMessage msg2;
        //List children;
        FormBeanForm form;
        DynaMapping[] mapping; 
        int i;

        if (formName == null || adapter == null)
            return (false);
/*
        obj = factory.createObject(className);

        if (obj == null) {
            // Propagate the exception
            if (factory.getObjException() != null)
                this.setObjException(factory.getObjException());
            return (false); // check
        }

        msg.setMsgContent(obj);

        attributes = (JtHashTable) factory.processMessage(msg);

        if (attributes == null) {
            handleWarning ("generateInputFields: no class attributes for " +
                    className);
            return (true);
        }  


        iterator = (JtIterator) attributes.processMessage (new JtMessage (JtHashTable.JtGET_KEYS));

        if (iterator == null)
            return (false); //check
*/
        
        /*        
        msg2 = new JtMessage (JDOMAdapter.GET_CHILDREN);
        msg2.setMsgContent ("jsp:root/html:html/html:form/fieldset");

        children = (List) adapter.processMessage(msg2);

        if (children == null || (children.size() == 0))
            index1 = 1;
        else {
            index1 = 2;
        }
         */
        
        
        form = retrieveForm (formName);
        
        if (form == null)
            return (false);
        
        mapping = form.getMappings();
        
        if (mapping == null)
            return (false);


        if (keys != null && keys.size() == 1) {
            key = (String) keys.get(0);
            index1 = 2;
        } else {
            key = null;
            index1 = 1;
        }    
        
        msg = new JtMessage (JDOMAdapter.INSERT_ELEMENT);
        for (i = 0; i < mapping.length; i++) {
            //attrName = (String) iterator.processMessage(new JtMessage (JtIterator.JtNEXT));
            attrName = mapping[i].getName();
            
            if (attrName == null || attrName.equals(""))
                break;



            msg1.setMsgData (attrName);
            
            /*
            prop = (PropertyDescriptor) attributes.processMessage(msg1);

            if (!(prop.getPropertyType().isPrimitive() || 
                    String.class.isAssignableFrom (prop.getPropertyType()) ||

                    "java.util.Date".equals(prop.getPropertyType().getName())))
                continue;
            */
            

                           

            msg.setMsgData ("jsp:root/html:html/display:table");

            element = new Element ("column");
            element.setNamespace(nameSpace);
            element.setAttribute("property", attrName);
            msg.setMsgContent(element);


            if (attrName.equals(key)) {
                element.setAttribute("href", "Read" + capFirstLetter (prefix) + ".do?jtMsgId=READ");
                element.setAttribute("paramId", "jtMsgContent");
                element.setAttribute("paramProperty", attrName);
                msg.setMsgAttachment(new Integer (1));

            } else
                msg.setMsgAttachment(new Integer (index1++));

            adapter.processMessage(msg);


            index++;
        }  


        return (true);

    }   
    
    
    private FormBeanForm retrieveForm (String formName) {
        FormBean formBean = new FormBean ();
        FormBeanForm form;
        
        JtMessage msg = new JtMessage (JtObject.JtREAD);
        if (formName == null)
            return null;
        
        msg.setMsgContent(formName);
        
        form = (FormBeanForm) factory.sendMessage(formBean, msg);
        
        if (form == null) {
            handleWarning ("retrieveForm: invalid form: " + formName);
            return (null);
        }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?