All Downloads are FREE. Search and download functionalities are using the official Maven repository.

entity.Entity.xpt Maven / Gradle / Ivy

There is a newer version: 1.24.1
Show newest version
«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»




© 2015 - 2024 Weber Informatics LLC | Privacy Policy