entity.Entity.xpt Maven / Gradle / Ivy
«EXTENSION java::Naming»
«EXTENSION java::GeneratorCommons»
«EXTENSION entity::ModelProperties»
«IMPORT uml»
«IMPORT JMM»
«IMPORT java»
«IMPORT entity»
«IMPORT jeaf»
«EXTENSION org::openarchitectureware::util::stdlib::io»
«DEFINE PersistentClass FOR PersistentObject»
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Generate base class for every business object class (*BOBase.java). Existing java code will be overwritten on
// every generator run.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
«FILE packagePath() + "/" + this.getBOBaseName() +".java" src_gen»
package «packageName()»;
«IF this.hasMultivaluedAssociation()»
«ENDIF»
import java.util.List;
«IF superClass.isEmpty»import com.anaptecs.jeaf.spi.persistence.PersistentObject; «ENDIF»
import com.anaptecs.jeaf.spi.persistence.ClassID;
«EXPAND functions::Javadoc::JavadocForType»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public abstract class «this.getBOBaseName()» «IF !superClass.isEmpty»extends «superClass.get(0).fqn()» «ELSE»extends PersistentObject«ENDIF» {
/**
* The class id is a unique id within the domain model of an application for every business object class.
*/
public static final ClassID CLASS_ID = ClassID.createClassID(«classID», «this.getBOName()».class);
«IF superClass.isEmpty»
/**
* Name of the database table that is used to store the data of objects of this class.
*/
public static final String TABLE_NAME = "«IF table.length > 0»«table»«ELSE»«name.toUpperCase()»«ENDIF»";
«ENDIF»
«REM»Generate constants for all attributes«ENDREM»
«IF generateConstantsForAttributeNames() == true»
«FOREACH this.ownedAttribute AS attr»
«IF attr.isStereotypeApplied("Field") == true»
/**
* Constant for the name of the row that is used to store the values of attribute "«attr.name»".
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation FOR attr -»
public static final String «attr.asInstanceVar().toUpperCase()»_ROW = "«attr.asInstanceVar().toUpperCase()»";
/**
* Constant for the name of attribute "«attr.name»".
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation FOR attr -»
public static final String «attr.asInstanceVar().toUpperCase()»_ATTRIBUTE = "«attr.asInstanceVar()»";
«ENDIF»
«ENDFOREACH»
«REM»Generate constants for all attributes«ENDREM»
«FOREACH this.ownedAttribute AS attr»
«IF attr.isStereotypeApplied("Role") == true»
/**
* Constant for the name of role "«attr.name»".
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation FOR attr -»
public static final String «attr.asInstanceVar().toUpperCase()»_ROLE = "«attr.asInstanceVar()»";
«ENDIF»
«ENDFOREACH»
«ENDIF»
«EXPAND java::Attribute::PropertyDeclaration FOREACH this.ownedAttribute»
/**
* Initialize object. The constructor of the class has visibility protected in order to avoid creating
* business objects not through JEAFs persistence service provider.
*/
protected «this.getBOBaseName()»( ) {
«EXPAND PersistentObjectConstructorInits»
}
/**
* Method returns all instance of this class including potential subclasses.
*
* @return {@link List} List with all objects of this class. The method never returns null.
*/
public static List<«this.getBOName()»> findAll«this.getBOName()»s( ) {
return com.anaptecs.jeaf.spi.persistence.PersistentObject.getPersistenceServiceProvider().findAll(«this.getBOName()».class);
}
«EXPAND Attribute::PropertyAccessors FOREACH ownedAttribute»
«EXPAND JEAFOperation::PersistentObjectOperation FOREACH ownedOperation»
/**
* Method returns the class id of this business object class.
*
* @return {@link ClassID} Class ID of this business object. The method never returns null.
*/
public ClassID getClassID() {
return CLASS_ID;
}
}
«ENDFILE»
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Generate business object class itself. Since this class contains the part of the business logic that can not be
// generated this class will only be generated if it does not exist yet.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
«FILE packagePath() + "/" + this.getBOName() + ".java" src»
package «packageName()»;
«EXPAND functions::Javadoc::JavadocForType»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public «IF this.isAbstract»abstract«ENDIF» class «this.getBOName()» extends «this.getBOBaseName()» {
/**
* Initialize object. The constructor of the class has visibility protected in order to avoid creating
* business objects not through JEAFs persistence service provider.
*/
protected «this.getBOName()»( ) {
// Nothing to do.
}
«EXPAND JEAFOperation::PersistentObjectOperationImpl FOREACH ownedOperation»
}
«ENDFILE»
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Generate hibernate mapping. The mapping for subclasses comes as tag into the superclass. For all other
// classes a seperate mapping file will be created.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
«IF superClass.isEmpty»
«FILE packagePath() + "/" + this.getBOName() + ".hbm.xml" res_gen-»
«IF this.getSubclasses().typeSelect(PersistentObject).size > 0 -»
«ENDIF»
«EXPAND PropertyMapping::PropertyMapping FOREACH ownedElement-»
«EXPAND AssociationMapping::AssociationMapping FOREACH ownedElement-»
«EXPAND InheritanceMapping::SubclassMapping FOREACH this.getSubclasses().typeSelect(PersistentObject) -»
«ENDFILE»
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateManagedClassesAnnotation FOR Package»
«IF this.hasPersistentClasses()»
«FILE packagePath() + "/" + "Mappings.java" src_gen»
package «packageName()»;
import com.anaptecs.jeaf.spi.persistence.annotations.MappingFiles;
@MappingFiles(mappingFiles = { «FOREACH this.getPersistentClassesMappingFileNames() AS fileName SEPARATOR ", "»"«fileName»"«ENDFOREACH» })
public interface Mappings {
}
«ENDFILE»
«ENDIF»
«ENDDEFINE»
«DEFINE GeneratePersistenceUnit FOR PersistenceUnit»
«IF this.clientDependency.supplier.typeSelect(Package).size > 0»
«ELSE»
«error("Warning: PersistenceUnit " + this.name + " does not refernece any package with persistent objects. Class will not be generated.")»
«ENDIF»
«FILE packagePath() + "/" + name+ ".java" src_gen»
package «packageName()»;
/**
* Persistence unit contains persistent classes of the following packages:
* «FOREACH this.clientDependency.supplier.typeSelect(Package).sortBy(e|e.packageName()) AS package SEPARATOR ""»
* - «package.packageName()»
«ENDFOREACH»
*
*/
@com.anaptecs.jeaf.spi.persistence.annotations.PersistenceUnit(
name="«name»",
mappingFilesDefinition = {«FOREACH this.clientDependency.supplier.typeSelect(Package).sortBy(e|e.fqn()) AS package SEPARATOR ", "»«package.packageName()».Mappings.class «ENDFOREACH»},
showSQL= «EXPAND GenerationMode(this.showSQL.name, "showSQL") FOR this»,
formatSQL = «EXPAND GenerationMode(this.formatSQL.name, "formatSQL") FOR this»)
public interface «name» {
}
«ENDFILE»
«ENDDEFINE»
«DEFINE GenerationMode(String configMode, String propertyName) FOR PersistenceUnit-»
«IF configMode == "TRUE"»"true"«ELSE»
«IF configMode == "FALSE"-»"false"
«ELSE-»
«IF configMode == "GLOBAL_PROPERTY"-»
"{jeaf.persistence.«propertyName»}"
«ELSE-»
«IF configMode == "INDIVIDUAL_PROPERTY"»
"{jeaf.persistence.«this.name».«propertyName»}"
«ELSE-»
«ERROR "Internal Error in JEAF Generator: Unexpected literal " + configMode +" for enumeration ConfigurationMode found"-»
«ENDIF-»
«ENDIF-»
«ENDIF-»
«ENDIF-»
«ENDDEFINE»
«DEFINE PersistentObjectConstructorInits FOR PersistentObject»
«FOREACH this.ownedAttribute AS attr»
«IF attr.isReadOnly() == true && attr.isStatic == false»
«IF attr.type.isPrimitiveType() == true»
«IF attr.isMultivalued() == false»
«IF attr.isRealInitValue()»
«attr.name» = «attr.initValue()»;
«ELSE»
«attr.name» = «attr.getPrimitiveDefaultValue()»;
«ENDIF»
«ELSE»
«attr.name» = null;
«ENDIF»
«ELSE»
«IF attr.isMultivalued()»
«REM»Distiguish between arrays and collections.«ENDREM»
«IF attr.association == null»
«attr.name» = null;
«ELSE»
«attr.name» = new «attr.getCollectionImplType()»<«attr.type.fqn()»>();
«ENDIF»
«ELSE»
«attr.name» = null;
«ENDIF»
«ENDIF»
«ELSE»
«IF attr.isMultivalued() && attr.association != null»
«REM»Only in case of collections we have to initilize them.«ENDREM»
«attr.name» = new «attr.getCollectionImplType()»<«attr.type.fqn()»>();
«ELSE»
«IF attr.isRealInitValue() && attr.isStatic == false »
«attr.name» = «IF attr.isJEAFEnumerationProperty()»«attr.type.name».«ENDIF»«attr.initValue()»;
«ENDIF»
«ENDIF»
«ENDIF»
«ENDFOREACH»
«ENDDEFINE»