entitystruct.java

来自「一个java 代码生成器」· Java 代码 · 共 335 行

JAVA
335
字号
/**
 * Copyright (c) 2002, Siddhartha P. Chandurkar siddhartha@visioncodified.com
 * All rights reserved.
 * Licensed under the Academic Free License version 1.1
 * See the file LICENSE.TXT for details.
 * LICENSE.txt is located in the directory  <install-directory>\Jenerator
 * of your Jenertaor Installation.
 *
 */
package com.jenerator.struct.ejb;

//<Imports>

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;

//<Imports>

/**
 *	The class is a datastructure which contains all the
 *  descriptor parameters which are needed for the
 *  code generation. The values are read from an XML file
 *  i.e. jen-desc.xml. This structure is used to generate
 *  entity objects
 *  @author		Siddhartha P. Chandurkar
 *	@version	0.9.0
 *  @see		EjbStruct
 */

public class EntityStruct extends EjbStruct {


    //ATTRIBUTES


    //Local remote name
    private String localRemote;
    //Local Home name
    private String localHome;
    //Primary Key hashtable
    private Hashtable primKeys;
    //The persistence type of the entity bean
    private String persistenceType;
    //Contains all the custom finders
    //private Vector finders;
    //Are all getters needed for the entity bean
    private boolean getterFlag = false;
    //Are all setters needed for the entity bean
    private boolean setterFlag = false;
    //Are value objects need for a particular bean
    private boolean valueObjects = false;
    //Are setters need for the value objects
    //Since some developers might need Immutable structures
    private boolean valueSetters = false;
    //The package name to be used for the value objects
    private String valueObjectPackage;
    //The original table name from which the entity will be generated.
    //It is needed to build the queries for BMP
    private String tableName;
    //Whether to generate Local interfaces.
    private String localGenerate;


    //CONSTRUCTORS
    public EntityStruct() {
        //  finders = new Vector();
        primKeys = new Hashtable();
    }

    //METHODS
    public String getLocalName() {
        return localRemote;
    }

    public String getLocalHomeName() {
        return localHome;
    }

    public String getValueObjectPackage() {
        return convertPackageToDir(valueObjectPackage);
    }

    public Hashtable getPrimKeys() {
        return primKeys;
    }

    public String getPersistenceType() {
        return persistenceType;
    }

    /**
     * public Vector getFinders() {
     return finders;
     }
     **/

    public boolean isGetter() {
        return getterFlag;
    }

    public boolean isSetter() {
        return setterFlag;
    }

    public boolean isValueObjects() {
        return valueObjects;
    }

    public boolean isValueSetters() {

        return valueSetters;
    }

    public void setLocalRemote(String _localRemote) {
        localRemote = _localRemote;
    }

    public void setLocalHome(String _localHome) {
        localHome = _localHome;
    }

    /**
     public void setFinders(Vector _finders) {
     finders = _finders;
     }
     **/
    public void setGetterFlag(boolean _getterFlag) {
        getterFlag = _getterFlag;
    }

    public void setSetterFlag(boolean _setterFlag) {
        setterFlag = _setterFlag;
    }

    public void setPersistenceType(String _persistenceType) {
        persistenceType = _persistenceType;
    }

    public void setValueObjects(boolean _valueObjects) {
        valueObjects = _valueObjects;
    }

    public void setValueSetters(boolean _valueSetters) {
        valueSetters = _valueSetters;
    }

    public void setValueObjectPackage(String _valueObjectPackage) {
        valueObjectPackage = _valueObjectPackage;
    }

    /**
     public void addFinderSignature(String _finder) {
     finders.addElement(_finder);
     }
     **/
    public void addPrimKey(String columnName, String columnType) {
        primKeys.put(columnName, columnType);
    }

    public boolean isPrimKeyClassNeeded() {
        if (primKeys.size() > 1)
            return true;
        else
            return false;
    }

    public void setTableName(String _tableName) {
        tableName = _tableName;
    }

    public String getTableName() {
        return tableName;
    }

    public void setLocalGenerate(String flag) {
        localGenerate = flag;
    }

    public String getLocalGenerate() {
        return localGenerate;
    }

    /**
     * The method is just like the <code>toString()</code>
     * of the Object class. The difference is that it returns
     * an XMLized string of the Object
     */
    public String toXml() {
        StringBuffer xmlBuffer = new StringBuffer();
        xmlBuffer.append("<?xml version='1.0'?>");
        xmlBuffer.append("<entity>");
        xmlBuffer.append("<version>");
        xmlBuffer.append(super.getEjbSpecVersion());
        xmlBuffer.append("</version>");
        xmlBuffer.append("<package>");
        xmlBuffer.append(super.getPackageName());
        xmlBuffer.append("</package>");
        Vector imports = super.getImports();
        if (imports.size() > 0) {
            xmlBuffer.append("<imports>");
            for (int i = 0; i < imports.size(); i++) {
                xmlBuffer.append("<import>");
                xmlBuffer.append(imports.elementAt(i));
                xmlBuffer.append("</import>");
            }
            xmlBuffer.append("</imports>");
        }
        xmlBuffer.append("<table-name>");
        xmlBuffer.append(tableName);
        xmlBuffer.append("</table-name>");
        xmlBuffer.append("<ejb-name>");
        xmlBuffer.append(super.getBeanName());
        xmlBuffer.append("</ejb-name>");
        xmlBuffer.append("<remote>");
        xmlBuffer.append(super.getRemoteName());
        xmlBuffer.append("</remote>");
        xmlBuffer.append("<home>");
        xmlBuffer.append(super.getHomeName());
        xmlBuffer.append("</home>");
        xmlBuffer.append("<local generate=\"" + getLocalGenerate() + "\">");
        xmlBuffer.append(localRemote);
        xmlBuffer.append("</local>");
        xmlBuffer.append("<local-home>");
        xmlBuffer.append(localHome);
        xmlBuffer.append("</local-home>");
        xmlBuffer.append("<ejb-class>");
        xmlBuffer.append(super.getEjbClass());
        xmlBuffer.append("</ejb-class>");


        Vector attributes = super.getAttributes();
        xmlBuffer.append("<attributes>");
        for (int m = 0; m < attributes.size(); m++) {
            AttributeStruct attrStruct = (AttributeStruct) attributes.elementAt(m);
            xmlBuffer.append("<attribute name=\"" + attrStruct.getOriginalName() + "\" type=\"" + attrStruct.getType() + "\" prim-key=\"" + attrStruct.isBPrimKey() + "\">");
            xmlBuffer.append(attrStruct.getName());
            xmlBuffer.append("</attribute>");
        }
        xmlBuffer.append("</attributes>");
        xmlBuffer.append("<getters>");
        xmlBuffer.append(getterFlag);
        xmlBuffer.append("</getters>");
        xmlBuffer.append("<setters>");
        xmlBuffer.append(setterFlag);
        xmlBuffer.append("</setters>");

        Hashtable methodSigs = super.getMethodSignatures();
        if (!methodSigs.isEmpty()) {
            Enumeration keys = methodSigs.keys();

            xmlBuffer.append("<methods>");
            while (keys.hasMoreElements()) {
                String signature = keys.nextElement().toString();
                String exceptions = methodSigs.get(signature).toString();
                xmlBuffer.append("<method>");
                xmlBuffer.append("<signature>");
                xmlBuffer.append(signature.toString());
                xmlBuffer.append("</signature>");
                xmlBuffer.append("<exceptions>");
                xmlBuffer.append(exceptions.toString());
                xmlBuffer.append("</exceptions>");
                xmlBuffer.append("</method>");
            }
            xmlBuffer.append("</methods>");
        }

        Enumeration keys = primKeys.keys();
        if (primKeys.size() > 1)
            xmlBuffer.append("<primary-keys compound=\"yes\">");
        else
            xmlBuffer.append("<primary-keys compound=\"no\">");
        while (keys.hasMoreElements()) {
            xmlBuffer.append("<primary-key>");
            String key = keys.nextElement().toString();
            xmlBuffer.append("<prim-key-class name=\"" + removePackageAndGetClass(primKeys.get(key).toString()) + "\">");
            xmlBuffer.append(primKeys.get(key));
            xmlBuffer.append("</prim-key-class>");
            xmlBuffer.append("<primkey-field name=\"" + getOriginalPKName(key) + "\">");
            xmlBuffer.append(key);
            xmlBuffer.append("</primkey-field>");
            xmlBuffer.append("</primary-key>");

        }

        xmlBuffer.append("</primary-keys>");
        xmlBuffer.append("<persistence-type>");
        xmlBuffer.append(persistenceType);
        xmlBuffer.append("</persistence-type>");
        xmlBuffer.append("<value-object setters=\"" + valueSetters + "\">" + valueObjects + "</value-object>");
        xmlBuffer.append("<jndi-name>" + super.getJndiName() + "</jndi-name>");
        xmlBuffer.append("<unit-test-framework>" + super.getUnitTestingFramework() + "</unit-test-framework>");
        xmlBuffer.append("<resource-ref>");
        xmlBuffer.append("<description>" + super.getResRefStruct().getDescription() + "</description>");
        xmlBuffer.append("<res-ref-name>" + super.getResRefStruct().getResRefName() + "</res-ref-name>");
        xmlBuffer.append("<res-type>" + super.getResRefStruct().getResType() + "</res-type>");
        xmlBuffer.append("<res-auth>" + super.getResRefStruct().getResAuth() + "</res-auth>	");
        xmlBuffer.append("<datasource-jndi-name>" + super.getResRefStruct().getDsJndiName() + "</datasource-jndi-name>");
        xmlBuffer.append("</resource-ref>");

        xmlBuffer.append("</entity>");
        return xmlBuffer.toString();
    }//toXml

    /**
     * getOriginalPKName
     *
     */
    private String getOriginalPKName(String _name) {
        Vector attributes = super.getAttributes();
        for (int m = 0; m < attributes.size(); m++) {
            AttributeStruct attrStruct = (AttributeStruct) attributes.elementAt(m);
            if (_name.equals(attrStruct.getName()))
                return attrStruct.getOriginalName();
        }
        return _name;
    }//getOriginalPKName

    /**
     * removePackageAndGetClass
     * The method is used to extract the class name from the fully qualified name
     * e.g. <code>java.math.BigDecimal</code> to <code>BigDecimal</code>
     * @param   fullQualifiedName  A string containing the fully Qualified Name of the class
     */
    private String removePackageAndGetClass(String fullQualifiedName) {
        if (fullQualifiedName.lastIndexOf(".") != -1)
            return fullQualifiedName.substring(fullQualifiedName.lastIndexOf(".") + 1);
        else
            return fullQualifiedName;

    }

}//EntityStruct

⌨️ 快捷键说明

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