⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formtagshandler.java

📁 this is for appfuse1.8 source using strut 1.x, spring and hibernate.
💻 JAVA
字号:
package org.example.antbook.xdoclet;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.LinkedHashMap;import xdoclet.XDocletException;import xdoclet.tagshandler.AbstractProgramElementTagsHandler;import xdoclet.tagshandler.MethodTagsHandler;import xjavadoc.XClass;import xjavadoc.XMethod;import xjavadoc.XParameter;public class FormTagsHandler extends AbstractProgramElementTagsHandler {    XClass clazz = getCurrentClass();    private String curFieldName;    private final static List supportedTypes = new ArrayList();    private boolean curFieldIsIdorVersion = false;    private boolean curFieldIsBoolean = false;        static {        supportedTypes.add("java.lang.String");        supportedTypes.add("java.lang.Integer");        supportedTypes.add("int");        supportedTypes.add("java.lang.Float");        supportedTypes.add("float");        supportedTypes.add("java.lang.Long");        supportedTypes.add("long");        supportedTypes.add("java.lang.Double");        supportedTypes.add("double");        supportedTypes.add("java.lang.Boolean");        supportedTypes.add("boolean");        supportedTypes.add("java.util.Date");        supportedTypes.add("java.sql.Timestamp");    }    /**     * Gets the package name for the parent of this Package.     * @author Lance Lavandowska     */    public String parentPackageName() {        String packageName = getCurrentPackage().getName();        return packageName.substring(0, packageName.lastIndexOf("."));    }    /**     * Iterates the body for each field of the current form requiring validation.     *     * @param template     * @param attributes     * @throws XDocletException     */    public void forAllFields(String template, Properties attributes) throws XDocletException {        Map setters = new LinkedHashMap(getFields(clazz));        for (Iterator iterator = setters.keySet().iterator(); iterator.hasNext();) {            curFieldName = (String) iterator.next();            XMethod field = (XMethod) setters.get(curFieldName);                        XMethod getter = field.getAccessor();            setCurrentMethod(getter);       	    curFieldIsIdorVersion = false;            Properties pro = new Properties();            pro.setProperty("tagName", "hibernate.id");            if (hasTag(pro, FOR_METHOD)) {                curFieldIsIdorVersion = true;            }            pro.setProperty("tagName", "hibernate.version");            if (hasTag(pro, FOR_METHOD)) {                curFieldIsIdorVersion = true;            }            String typename = field.getPropertyType().getType().getQualifiedName();            curFieldIsBoolean = typename.equals("boolean") || typename.equals("java.lang.Boolean");            setCurrentMethod(field);            generate(template);        }    }    /**     * This method is added so that I can pick up a boolean field. When     * generating a form page, checkbox is used for boolean fields.     *     * @author hzhang(mb4henry@yahoo.com.au)     * @param template     * @param attributes     * @throws XDocletException     */    public void ifIsBooleanField(String template, Properties attributes) throws XDocletException {        if (curFieldIsBoolean)            generate(template);    }    public void ifIsNotBooleanField(String template, Properties attributes) throws XDocletException {        if (!curFieldIsBoolean)            generate(template);    }    /**     * This method is used to determine id fields - this is used in the view     * pages to set the ids as hidden fields.     *     * @param template     * @param attributes     * @throws XDocletException     */    public void ifIsIdOrVersionField(String template, Properties attributes) throws XDocletException {        if (curFieldIsIdorVersion) {            generate(template);        }    }    public void ifIsNotIdOrVersionField(String template, Properties attributes) throws XDocletException {        if (!curFieldIsIdorVersion) {            generate(template);        }    }        /**     * Returns the current fields name.     *     * @param props     * @return     */    public String fieldName(Properties props) {        return curFieldName;    }    /**     * @return Classname of the POJO with first letter in lowercase     */    public String classNameLower() {        String name = clazz.getName();        return Character.toLowerCase(name.charAt(0)) + name.substring(1);       }        public String className() {        return clazz.getName();    }    /**     * Name of the POJO in UPPERCASE, for usage in Constants.java.     * @return     */    public String classNameUpper() {        String name = clazz.getName();        return name.toUpperCase();    }    public String fieldDescription(Properties props) {        StringBuffer buffer = new StringBuffer();        boolean nextUpper = false;        for (int i = 0; i < curFieldName.length(); i++) {            char c = curFieldName.charAt(i);            if (i == 0) {                buffer.append(Character.toUpperCase(c));                continue;            }            if (Character.isUpperCase(c)) {                buffer.append(' ');                buffer.append(c);                continue;            }            if (c == '.') {                buffer.delete(0, buffer.length());                nextUpper = true;                continue;            }            char x = nextUpper ? Character.toUpperCase(c) : c;            buffer.append(x);            nextUpper = false;        }        return buffer.toString();    }    private Map getFields(XClass clazz) throws XDocletException {        return getFields(clazz, "");    }    private Map getFields(XClass clazz, String prefix) throws XDocletException {        Map fields = new LinkedHashMap();        Collection curFields = clazz.getMethods(true);        for (Iterator iterator = curFields.iterator(); iterator.hasNext();) {            XMethod setter = (XMethod) iterator.next();            if (MethodTagsHandler.isSetterMethod(setter)) {                String name = MethodTagsHandler.getPropertyNameFor(setter);                XParameter param = (XParameter) setter.getParameters().iterator().next();                String type = param.getType().getQualifiedName();                XMethod getter = setter.getAccessor();                setCurrentClass(setter.getContainingClass());                super.setCurrentMethod(getter);                Properties pro = new Properties();                pro.setProperty("tagName", "hibernate.component");                                if (super.hasTag(pro, FOR_METHOD)) {                    name += "Form";                    fields.putAll(getFields(param.getType(), prefix + name + "."));                } else {                    fields.put(prefix + name, setter);                }            }        }        return fields;    }}

⌨️ 快捷键说明

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