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 + -
显示快捷键?