From 23262d8be6a84b3e8c4d3727e669a32f32354ed9 Mon Sep 17 00:00:00 2001 From: Lennart Heinrich Date: Thu, 16 Oct 2025 21:19:41 +0200 Subject: [PATCH] restructure model --- .gitignore | 16 +- .idea/model.iml | 4 +- TelosysTools/telosys-tools.cfg | 4 +- .../backend_entity_java.vm} | 4 +- .../templates/infinimotion/backend/pom_xml.vm | 33 +++ .../infinimotion/domain_entity_test_java.vm | 52 ---- .../{angular => frontend}/.npmrc.vm | 0 .../{angular => frontend}/Xmodel_ts.vm | 0 .../{angular => frontend}/index_ts.vm | 0 .../{angular => frontend}/package_json.vm | 0 .../{angular => frontend}/tsconfig_json.vm | 0 .../{angular => frontend}/tsup.config_ts.vm | 0 .../main-resources/persistence_xml.vm | 23 -- .../include/init_var_entity.vm | 0 .../{ => persistence}/include/java_header.vm | 0 .../persistence_entity_id_java.vm} | 4 +- .../persistence_entity_java.vm} | 6 +- .../pom_xml.vm} | 25 +- .../{ => plantuml}/class-diag_txt.vm | 0 .../{ => sql}/postgresql-create-tables_sql.vm | 0 .../templates/infinimotion/templates.cfg | 45 ++-- .../test-java/DatabaseInit_java.vm | 68 ----- .../infinimotion/test-java/JpaTest_java.vm | 247 ------------------ .../infinimotion/test-java/XxxData_java.vm | 40 --- .../infinimotion/test-java/XxxJpaTest_java.vm | 134 ---------- .../test-resources/persistence_xml.vm | 49 ---- 26 files changed, 75 insertions(+), 679 deletions(-) rename TelosysTools/templates/infinimotion/{domain_entity_java.vm => backend/backend_entity_java.vm} (97%) create mode 100644 TelosysTools/templates/infinimotion/backend/pom_xml.vm delete mode 100644 TelosysTools/templates/infinimotion/domain_entity_test_java.vm rename TelosysTools/templates/infinimotion/{angular => frontend}/.npmrc.vm (100%) rename TelosysTools/templates/infinimotion/{angular => frontend}/Xmodel_ts.vm (100%) rename TelosysTools/templates/infinimotion/{angular => frontend}/index_ts.vm (100%) rename TelosysTools/templates/infinimotion/{angular => frontend}/package_json.vm (100%) rename TelosysTools/templates/infinimotion/{angular => frontend}/tsconfig_json.vm (100%) rename TelosysTools/templates/infinimotion/{angular => frontend}/tsup.config_ts.vm (100%) delete mode 100644 TelosysTools/templates/infinimotion/main-resources/persistence_xml.vm rename TelosysTools/templates/infinimotion/{ => persistence}/include/init_var_entity.vm (100%) rename TelosysTools/templates/infinimotion/{ => persistence}/include/java_header.vm (100%) rename TelosysTools/templates/infinimotion/{main-java/XxxJpaEntityId_java.vm => persistence/persistence_entity_id_java.vm} (95%) rename TelosysTools/templates/infinimotion/{main-java/XxxJpaEntity_java.vm => persistence/persistence_entity_java.vm} (96%) rename TelosysTools/templates/infinimotion/{pom_jpa_xml.vm => persistence/pom_xml.vm} (65%) rename TelosysTools/templates/infinimotion/{ => plantuml}/class-diag_txt.vm (100%) rename TelosysTools/templates/infinimotion/{ => sql}/postgresql-create-tables_sql.vm (100%) delete mode 100644 TelosysTools/templates/infinimotion/test-java/DatabaseInit_java.vm delete mode 100644 TelosysTools/templates/infinimotion/test-java/JpaTest_java.vm delete mode 100644 TelosysTools/templates/infinimotion/test-java/XxxData_java.vm delete mode 100644 TelosysTools/templates/infinimotion/test-java/XxxJpaTest_java.vm delete mode 100644 TelosysTools/templates/infinimotion/test-resources/persistence_xml.vm diff --git a/.gitignore b/.gitignore index c01f3ec..e784fa8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ -./plantuml -./sql -./src -./angular -./pom_jpa.xml -./TelosysTools/downloads -./TelosysTools/templates -!./TelosysTools/templates/infinimotion \ No newline at end of file +/plantuml +/sql +/frontend +/backend +/persistence +/TelosysTools/downloads +/TelosysTools/templates/* +!/TelosysTools/templates/infinimotion \ No newline at end of file diff --git a/.idea/model.iml b/.idea/model.iml index e0f12d2..9f5803b 100644 --- a/.idea/model.iml +++ b/.idea/model.iml @@ -16,7 +16,9 @@ - + + + diff --git a/TelosysTools/telosys-tools.cfg b/TelosysTools/telosys-tools.cfg index 74cbf6b..cc926c4 100644 --- a/TelosysTools/telosys-tools.cfg +++ b/TelosysTools/telosys-tools.cfg @@ -19,10 +19,10 @@ ROOT_PKG=de.infinimotion ENTITY_PKG=de.infinimotion.bean # ------------------------------------------- # --- Project Specific Variables -ProjectVariable.MAVEN_ARTIFACT_ID=infinimodel +ProjectVariable.MAVEN_ARTIFACT_ID=model ProjectVariable.MAVEN_GROUP_ID=de.infinimotion ProjectVariable.PROJECT_NAME=infinimodel -ProjectVariable.PROJECT_VERSION=0.1 +ProjectVariable.PROJECT_VERSION=0.0.0 ProjectVariable.REST_SERVER_PORT=3000 ProjectVariable.REST_API_ROOT=/api/v1 ProjectVariable.REST_URL_ROOT=http://localhost:3000 diff --git a/TelosysTools/templates/infinimotion/domain_entity_java.vm b/TelosysTools/templates/infinimotion/backend/backend_entity_java.vm similarity index 97% rename from TelosysTools/templates/infinimotion/domain_entity_java.vm rename to TelosysTools/templates/infinimotion/backend/backend_entity_java.vm index 5a0e2ef..3d2ae7e 100644 --- a/TelosysTools/templates/infinimotion/domain_entity_java.vm +++ b/TelosysTools/templates/infinimotion/backend/backend_entity_java.vm @@ -1,5 +1,5 @@ /* - * Java domain class for entity "${entity.name}" + * Java backend model class for entity "${entity.name}" * Created on $now.date ( $now.time ) * Generated by $generator.name ( version $generator.version ) */ @@ -19,7 +19,7 @@ import $import; #set( $linkFields = $entity.getAttributesByCriteria( $const.NOT_KEY, $const.IN_SELECTED_LINKS ) ) ##-------------------------------------------------------------------------------------------------------- /** - * Domain class for entity "${entity.name}" + * Backend model class for entity "${entity.name}" * * @author Telosys Tools Generator * diff --git a/TelosysTools/templates/infinimotion/backend/pom_xml.vm b/TelosysTools/templates/infinimotion/backend/pom_xml.vm new file mode 100644 index 0000000..69ead2b --- /dev/null +++ b/TelosysTools/templates/infinimotion/backend/pom_xml.vm @@ -0,0 +1,33 @@ + + + + + 4.0.0 + $fn.get("MAVEN_GROUP_ID","to.be.defined") + $fn.get("MAVEN_ARTIFACT_ID","to.be.defined")-backend + $fn.get("PROJECT_VERSION","0.0.0") + jar + + + UTF-8 + 21 + 21 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.5.1 + + 21 + 21 + + + + + + diff --git a/TelosysTools/templates/infinimotion/domain_entity_test_java.vm b/TelosysTools/templates/infinimotion/domain_entity_test_java.vm deleted file mode 100644 index 45aab4b..0000000 --- a/TelosysTools/templates/infinimotion/domain_entity_test_java.vm +++ /dev/null @@ -1,52 +0,0 @@ -/* - * JUnit test case for bean $entity.name - * Created on $now.date ( $now.time ) - * Generated by $generator.name ( version $generator.version ) - */ - -package ${target.javaPackageFromFolder(${TEST_SRC})}; - -## Same package => no need to import 'Record' class //import $entity.name ; - -import org.junit.Assert; -import org.junit.Test; - -/** - * JUnit test case for bean $entity.name - * - * @author Telosys Tools Generator - * - */ -#set ( $beanVar = ${fn.uncapitalize($entity.name)} ) -public class ${entity.name}Test -{ - - @Test - public void testSettersAndGetters() { - - System.out.println("Checking class ${entity.name} getters and setters ..." ); - - ${entity.name} ${beanVar} = new ${entity.name}(); - -## #set( $values = $fn.buildValues($entity.attributes, 1) ) -#set( $attributesToBeTested = $entity.getAttributesByCriteria( $const.NOT_IN_LINKS ) ) -#set( $values = $fn.buildValues($attributesToBeTested, 1) ) - - -## #foreach( $attribute in $entity.attributes ) -#foreach( $attribute in $attributesToBeTested ) -#set( $value = $values.getValue($attribute.name) ) - //--- Test setter/getter for attribute "$attribute.name" ( type : $attribute.type ) - ${beanVar}.${attribute.setter}( $value ) ; -#if ( $value == "null" ) - Assert.assertNull(${beanVar}.${attribute.getter}()); -#else - Assert.assertEquals( $value, ${beanVar}.${attribute.getter}() ) ; -#end - -#end - } - - - -} diff --git a/TelosysTools/templates/infinimotion/angular/.npmrc.vm b/TelosysTools/templates/infinimotion/frontend/.npmrc.vm similarity index 100% rename from TelosysTools/templates/infinimotion/angular/.npmrc.vm rename to TelosysTools/templates/infinimotion/frontend/.npmrc.vm diff --git a/TelosysTools/templates/infinimotion/angular/Xmodel_ts.vm b/TelosysTools/templates/infinimotion/frontend/Xmodel_ts.vm similarity index 100% rename from TelosysTools/templates/infinimotion/angular/Xmodel_ts.vm rename to TelosysTools/templates/infinimotion/frontend/Xmodel_ts.vm diff --git a/TelosysTools/templates/infinimotion/angular/index_ts.vm b/TelosysTools/templates/infinimotion/frontend/index_ts.vm similarity index 100% rename from TelosysTools/templates/infinimotion/angular/index_ts.vm rename to TelosysTools/templates/infinimotion/frontend/index_ts.vm diff --git a/TelosysTools/templates/infinimotion/angular/package_json.vm b/TelosysTools/templates/infinimotion/frontend/package_json.vm similarity index 100% rename from TelosysTools/templates/infinimotion/angular/package_json.vm rename to TelosysTools/templates/infinimotion/frontend/package_json.vm diff --git a/TelosysTools/templates/infinimotion/angular/tsconfig_json.vm b/TelosysTools/templates/infinimotion/frontend/tsconfig_json.vm similarity index 100% rename from TelosysTools/templates/infinimotion/angular/tsconfig_json.vm rename to TelosysTools/templates/infinimotion/frontend/tsconfig_json.vm diff --git a/TelosysTools/templates/infinimotion/angular/tsup.config_ts.vm b/TelosysTools/templates/infinimotion/frontend/tsup.config_ts.vm similarity index 100% rename from TelosysTools/templates/infinimotion/angular/tsup.config_ts.vm rename to TelosysTools/templates/infinimotion/frontend/tsup.config_ts.vm diff --git a/TelosysTools/templates/infinimotion/main-resources/persistence_xml.vm b/TelosysTools/templates/infinimotion/main-resources/persistence_xml.vm deleted file mode 100644 index e6fc8a8..0000000 --- a/TelosysTools/templates/infinimotion/main-resources/persistence_xml.vm +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - org.hibernate.ejb.HibernatePersistence - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TelosysTools/templates/infinimotion/include/init_var_entity.vm b/TelosysTools/templates/infinimotion/persistence/include/init_var_entity.vm similarity index 100% rename from TelosysTools/templates/infinimotion/include/init_var_entity.vm rename to TelosysTools/templates/infinimotion/persistence/include/init_var_entity.vm diff --git a/TelosysTools/templates/infinimotion/include/java_header.vm b/TelosysTools/templates/infinimotion/persistence/include/java_header.vm similarity index 100% rename from TelosysTools/templates/infinimotion/include/java_header.vm rename to TelosysTools/templates/infinimotion/persistence/include/java_header.vm diff --git a/TelosysTools/templates/infinimotion/main-java/XxxJpaEntityId_java.vm b/TelosysTools/templates/infinimotion/persistence/persistence_entity_id_java.vm similarity index 95% rename from TelosysTools/templates/infinimotion/main-java/XxxJpaEntityId_java.vm rename to TelosysTools/templates/infinimotion/persistence/persistence_entity_id_java.vm index e45e427..403e890 100644 --- a/TelosysTools/templates/infinimotion/main-java/XxxJpaEntityId_java.vm +++ b/TelosysTools/templates/infinimotion/persistence/persistence_entity_id_java.vm @@ -1,6 +1,6 @@ #checkId($entity) -#parse("include/init_var_entity.vm") -#parse("include/java_header.vm") +#parse("persistence/include/init_var_entity.vm") +#parse("persistence/include/java_header.vm") ##-------------------------------------------------------------------------------------------------------- package ${target.javaPackageFromFolder($SRC)}; diff --git a/TelosysTools/templates/infinimotion/main-java/XxxJpaEntity_java.vm b/TelosysTools/templates/infinimotion/persistence/persistence_entity_java.vm similarity index 96% rename from TelosysTools/templates/infinimotion/main-java/XxxJpaEntity_java.vm rename to TelosysTools/templates/infinimotion/persistence/persistence_entity_java.vm index b9fe64a..e4f398b 100644 --- a/TelosysTools/templates/infinimotion/main-java/XxxJpaEntity_java.vm +++ b/TelosysTools/templates/infinimotion/persistence/persistence_entity_java.vm @@ -4,8 +4,8 @@ #end ## -------------------------------------------------- #checkId($entity) -#parse("include/init_var_entity.vm") -#parse("include/java_header.vm") +#parse("persistence/include/init_var_entity.vm") +#parse("persistence/include/java_header.vm") ##--------------------------------------------------------------------------------------- ## JPA CONFIGURATION ##--------------------------------------------------------------------------------------- @@ -29,7 +29,7 @@ package ${target.javaPackageFromFolder(${SRC})}; ## IF ENTITY HAS A COMPOSITE PRIMARY KEY => GENERATE AN 'ID CLASS' FOR THIS PRIMARY KEY #if ( $entity.hasCompositePrimaryKey() ) -$generator.generate($target.entityName , "${jpaEntityIdClass}.java", $target.folder, "main-java/XxxJpaEntityId_java.vm" ) +$generator.generate($target.entityName , "${jpaEntityIdClass}.java", $target.folder, "persistence/persistence_entity_id_java.vm" ) #end import java.io.Serializable; diff --git a/TelosysTools/templates/infinimotion/pom_jpa_xml.vm b/TelosysTools/templates/infinimotion/persistence/pom_xml.vm similarity index 65% rename from TelosysTools/templates/infinimotion/pom_jpa_xml.vm rename to TelosysTools/templates/infinimotion/persistence/pom_xml.vm index 634190c..df6f9f4 100644 --- a/TelosysTools/templates/infinimotion/pom_jpa_xml.vm +++ b/TelosysTools/templates/infinimotion/persistence/pom_xml.vm @@ -6,37 +6,22 @@ 4.0.0 $fn.get("MAVEN_GROUP_ID","to.be.defined") - $fn.get("MAVEN_ARTIFACT_ID","to.be.defined") + $fn.get("MAVEN_ARTIFACT_ID","to.be.defined")-persistence $fn.get("PROJECT_VERSION","1.0.0") jar UTF-8 + 21 + 21 - - org.hibernate hibernate-entitymanager 5.4.18.Final - - - - junit - junit - 4.12 - test - - - com.h2database - h2 - 1.4.200 - test - - @@ -46,8 +31,8 @@ maven-compiler-plugin 2.5.1 - 1.8 - 1.8 + 21 + 21 diff --git a/TelosysTools/templates/infinimotion/class-diag_txt.vm b/TelosysTools/templates/infinimotion/plantuml/class-diag_txt.vm similarity index 100% rename from TelosysTools/templates/infinimotion/class-diag_txt.vm rename to TelosysTools/templates/infinimotion/plantuml/class-diag_txt.vm diff --git a/TelosysTools/templates/infinimotion/postgresql-create-tables_sql.vm b/TelosysTools/templates/infinimotion/sql/postgresql-create-tables_sql.vm similarity index 100% rename from TelosysTools/templates/infinimotion/postgresql-create-tables_sql.vm rename to TelosysTools/templates/infinimotion/sql/postgresql-create-tables_sql.vm diff --git a/TelosysTools/templates/infinimotion/templates.cfg b/TelosysTools/templates/infinimotion/templates.cfg index 34e122f..db8ca5f 100644 --- a/TelosysTools/templates/infinimotion/templates.cfg +++ b/TelosysTools/templates/infinimotion/templates.cfg @@ -8,35 +8,24 @@ # . value 5 : number of execution : "1" for "ONCE" for all entities, default is multiple executions ( executed for each entity ) #--------------------------------------------------------- -Model diagram ; model.plantuml ; plantuml ; class-diag_txt.vm ; 1 +### PlantUML ### +Model diagram ; model.plantuml ; plantuml ; plantuml/class-diag_txt.vm ; 1 -# PostgreSQL database -PostgreSQL create tables ; postgresql-create-tables.sql ; sql ; postgresql-create-tables_sql.vm ; 1 +### PostgreSQL Datenbank ### +PostgreSQL create tables ; postgresql-create-tables.sql ; sql ; sql/postgresql-create-tables_sql.vm ; 1 -# Domain class ( keep same package for tests classes ) -Java domain class (bean) ; ${BEANNAME}.java ; ${SRC}/${ROOT_PKG}/data/domain ; domain_entity_java.vm -Java domain class JUnit test ; ${BEANNAME}Test.java ; ${TEST_SRC}/${ROOT_PKG}/data/domain ; domain_entity_test_java.vm +### Frontend ### +.npmrc ; .npmrc ; frontend ; frontend/.npmrc.vm ; 1 +package.json ; package.json ; frontend ; frontend/package_json.vm ; 1 +tsconfig.json ; tsconfig.json ; frontend ; frontend/tsconfig_json.vm ; 1 +tsup.config.ts ; tsup.config.ts ; frontend ; frontend/tsup.config_ts.vm ; 1 +index.ts ; index.ts ; frontend ; frontend/index_ts.vm ; 1 +TypeScript Models ; ${BEANNAME}.ts ; frontend ; frontend/Xmodel_ts.vm -#--- Project root folder -Maven pom.xml ; pom_jpa.xml ; ; pom_jpa_xml.vm ; 1 +### Backend ### +Java Backend Models ; ${BEANNAME}.java ; backend/${SRC}/${ROOT_PKG}/backend ; backend/backend_entity_java.vm +Maven Backend pom.xml ; pom.xml ; backend ; backend/pom_xml.vm ; 1 -#--- JPA entities -Java JPA entity class ; ${BEANNAME}.java ; ${SRC}/${ROOT_PKG}/entities ; main-java/XxxJpaEntity_java.vm -#--- JPA resources -persistence.xml ; persistence.xml ; ${RES}/META-INF ; main-resources/persistence_xml.vm ; 1 -# persistence.properties ; persistence.properties ; ${RES}/META-INF ; main-resources/persistence_properties.vm ; 1 - -#--- src/test/java -Tests : generic class ; JpaTest.java ; ${TEST_SRC}/${ROOT_PKG}/entities/tooling ; test-java/JpaTest_java.vm ; 1 -Tests : database init ; DatabaseInit.java ; ${TEST_SRC}/${ROOT_PKG}/entities/tooling ; test-java/DatabaseInit_java.vm ; 1 -Tests : entity tests ; ${BEANNAME}JpaTest.java ; ${TEST_SRC}/${ROOT_PKG}/entities ; test-java/XxxJpaTest_java.vm ; * -#--- src/test/resources -Tests : persistence.xml ; persistence.xml ; ${TEST_RES}/META-INF ; test-resources/persistence_xml.vm ; 1 - -# Angular -.npmrc ; .npmrc ; angular ; angular/.npmrc.vm ; 1 -package.json ; package.json ; angular ; angular/package_json.vm ; 1 -tsconfig.json ; tsconfig.json ; angular ; angular/tsconfig_json.vm ; 1 -tsup.config.ts ; tsup.config.ts ; angular ; angular/tsup.config_ts.vm ; 1 -index.ts ; index.ts ; angular ; angular/index_ts.vm ; 1 -TypeScript Models ; ${BEANNAME}.ts ; angular ; angular/Xmodel_ts.vm \ No newline at end of file +### Persistence ### +Java Persistence Models ; ${BEANNAME}.java ; persistence/${SRC}/${ROOT_PKG}/persistence ; persistence/persistence_entity_java.vm +Maven Persistence pom.xml ; pom.xml ; persistence ; persistence/pom_xml.vm ; 1 diff --git a/TelosysTools/templates/infinimotion/test-java/DatabaseInit_java.vm b/TelosysTools/templates/infinimotion/test-java/DatabaseInit_java.vm deleted file mode 100644 index 350086f..0000000 --- a/TelosysTools/templates/infinimotion/test-java/DatabaseInit_java.vm +++ /dev/null @@ -1,68 +0,0 @@ -#parse("/include/java_header.vm") -##------------------------------------------------------ -#set( $entityNames = [] ) -#foreach( $entity in $model.allEntites ) -#if ( ! $entity.isJoinEntity() ) -#set($_ = $entityNames.add( $entity.name ) ) -#end -#end -##------------------------------------------------------ -package ${target.javaPackageFromFolder($TEST_SRC)}; - -import javax.persistence.EntityManager; - -#foreach( $entityName in $entityNames ) -## import ${ROOT_PKG}.jpa.data.${entityName}Data; -import ${ROOT_PKG}.entities.${entityName}JpaTest; -#end - -/** - * Database initialization before unit tests - * - * @author Telosys - * - */ -public class DatabaseInit { - - /** - * Set database initial state - * @param em - */ - public static void initializeTablesData(EntityManager em) { - - // Disable referential integrity - execNativeQuery(em, "SET REFERENTIAL_INTEGRITY FALSE"); - - // Initialize each table with one entity -#foreach( $entityName in $entityNames ) - initTableWithEntity(em, ${entityName}JpaTest.getInitEntity()); -#end - - // Enable referential integrity - execNativeQuery(em, "SET REFERENTIAL_INTEGRITY TRUE"); - } - - private static void execNativeQuery(EntityManager em, String sql) { - em.getTransaction().begin(); - em.createNativeQuery(sql).executeUpdate(); - em.getTransaction().commit(); - } - - private static void initTableWithEntity(EntityManager em, Object entity) { - execQuery(em, "DELETE FROM " + entity.getClass().getSimpleName()); - initEntity(em, entity); - } - - private static void execQuery(EntityManager em, String sql) { - em.getTransaction().begin(); - em.createQuery(sql).executeUpdate(); - em.getTransaction().commit(); - } - - private static void initEntity(EntityManager em, Object entity) { - em.getTransaction().begin(); - em.merge(entity); - em.getTransaction().commit(); - } - -} \ No newline at end of file diff --git a/TelosysTools/templates/infinimotion/test-java/JpaTest_java.vm b/TelosysTools/templates/infinimotion/test-java/JpaTest_java.vm deleted file mode 100644 index f77fea8..0000000 --- a/TelosysTools/templates/infinimotion/test-java/JpaTest_java.vm +++ /dev/null @@ -1,247 +0,0 @@ -#parse("/include/java_header.vm") -##------------------------------------------------------ -package ${target.javaPackageFromFolder($TEST_SRC)}; - -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; - -/** - * Generic abstract class for JPA JUnit test cases - * - * @author Telosys - */ -public abstract class JpaTest { - - /** - * JPA Persistence Unit name for unit tests - * Must be the same as in "src/test/resources/META-INF/persistence.xml" - */ - private static final String PERSISTENCE_UNIT_NAME = "h2-test"; - - private static final boolean LOG_FLAG = true; - - protected static EntityManagerFactory emf; - - /** - * Prints a log message - * @param msg - */ - protected static void log(String msg) { - if (LOG_FLAG) { - System.out.println("[LOG-TEST] " + msg); - System.out.flush(); - } - } - - private EntityManager createEntityManager() { - log(" createEntityManager()..."); - return emf.createEntityManager(); - } - - private void closeEntityManager(EntityManager em) { - log(" closeEntityManager(em)..."); - em.clear(); - em.close(); - } - - @BeforeClass - public static void setUpBeforeClass() { - log("----- BeforeClass : Initializing JPA env..."); - // All database tables are created before each test case class - // thanks to 'persistence.xml' property "hibernate.hbm2ddl.auto" set to "create" - emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); - } - - @AfterClass - public static void tearDownAfterClass() throws Exception { - log("----- AfterClass : Closing JPA env..."); - if ( emf != null ) { - emf.close(); - } - } - - @Before - public void setUpBeforeTest() throws Exception { - log("--- Before test : setUpBeforeTest()..."); - EntityManager em = createEntityManager(); - log(" DatabaseInit.init(em)..."); - DatabaseInit.initializeTablesData(em); - closeEntityManager(em); - log(" Database initialized and ready for test."); - } - - @After - public void tearDownAfterTest() throws Exception { - log("--- After test : tearDownAfterTest()..."); - } - - /** - * Call em.find(entityClass, pk) - * @param - * @param entityClass - * @param pk - * @return - */ - protected T find(Class entityClass, Object pk) { - log("find(" + entityClass.getSimpleName() + ", " + pk +")"); - return findAndPossiblyRefresh(entityClass, pk, false); - } - - /** - * Call em.find(entityClass, pk) and call em.refresh(entity) if entity found - * @param - * @param entityClass - * @param pk - * @return - */ - protected T findAndRefresh(Class entityClass, Object pk) { - log("findAndRefresh(" + entityClass.getSimpleName() + ", " + pk +")"); - return findAndPossiblyRefresh(entityClass, pk, true); - } - - /** - * Calls find then call refresh if flag is true - * @param - * @param entityClass - * @param pk - * @param refreshFlag - * @return - */ - private T findAndPossiblyRefresh(Class entityClass, Object pk, boolean refreshFlag) { - EntityManager em = createEntityManager(); - T entity = em.find(entityClass, pk); - if ( entity != null ) { - log(" em.find(entity,pk) : found "); - if ( refreshFlag ) { - log(" em.refresh(entity)"); - em.refresh(entity); // Useful to refresh links => SQL SELECT - } - } else { - log(" em.find(entity,pk) : not found "); - } - closeEntityManager(em); - return entity ; - } - - /** - * Call em.persist(entity) in a transaction - * @param entity - */ - protected void persist(Object entity) { - log("persist("+entity+")"); - persistAndPossiblyRefresh(entity, false); - } - - /** - * Call em.persist(entity) in a transaction then call em.refresh(entity) - * @param entity - */ - protected void persistAndRefresh(Object entity) { - log("persistAndRefresh("+entity+")"); - persistAndPossiblyRefresh(entity, true); - } - - /** - * Calls persist then call refresh if flag is true - * @param entity - * @param refreshFlag - */ - private void persistAndPossiblyRefresh(Object entity, boolean refreshFlag) { - log("persistAndRefresh("+entity+")"); - EntityManager em = createEntityManager(); - log(" em.getTransaction().begin()"); - em.getTransaction().begin(); - log(" em.persist(entity)"); - em.persist(entity); - log(" em.getTransaction().commit()"); - em.getTransaction().commit(); - // Refresh ? - if ( refreshFlag ) { - log(" em.refresh("+entity+")"); - em.refresh(entity); // Useful to refresh links => SQL SELECT - } - closeEntityManager(em); - } - - /** - * Calls em.merge(entity) in a transaction - * @param entity - * @return the managed entity (object returned by JPA merge) - */ - protected Object merge(Object entity) { - log("merge("+entity+")"); - return mergeAndPossiblyRefresh(entity, false); - } - - /** - * Calls em.merge(entity) in a transaction and refresh the managed entity - * @param entity - * @return the managed entity (object returned by JPA merge and refreshed) - */ - protected Object mergeAndRefresh(Object entity) { - log("mergeAndRefresh("+entity+")"); - return mergeAndPossiblyRefresh(entity, false); - } - - /** - * Call merge then call refresh if flag is true - * @param entity - * @param refreshFlag - * @return - */ - private Object mergeAndPossiblyRefresh(Object entity, boolean refreshFlag) { - EntityManager em = createEntityManager(); - // Merge - log(" em.getTransaction().begin()"); - em.getTransaction().begin(); - log(" em.merge("+entity+")"); - Object managedEntity = em.merge(entity); - log(" em.getTransaction().commit()"); - em.getTransaction().commit(); - // Refresh ? - if ( refreshFlag ) { - log(" em.refresh("+managedEntity+")"); - em.refresh(managedEntity); // Useful to refresh links => SQL SELECT - } - closeEntityManager(em); - return managedEntity; - } - - /** - * Try to find an entity and call em.remove(entity) in a transaction - * @param - * @param entityClass - * @param pk - * @return true if found and removed, else false - */ - protected boolean findAndRemove(Class entityClass, Object pk) { - boolean removed = false; - log("findAndRemove(" + entityClass.getSimpleName() + ", " + pk +")"); - EntityManager em = createEntityManager(); - log(" em.find(entity,pk) "); - T entity = em.find(entityClass, pk); - if ( entity != null ) { - log(" found "); - log(" em.getTransaction().begin()"); - em.getTransaction().begin(); - log(" em.remove(entity)"); - em.remove(entity); - log(" em.getTransaction().commit()"); - em.getTransaction().commit(); - removed = true; - } - else { - log(" not found "); - removed = false; - } - closeEntityManager(em); - return removed; - } - -} diff --git a/TelosysTools/templates/infinimotion/test-java/XxxData_java.vm b/TelosysTools/templates/infinimotion/test-java/XxxData_java.vm deleted file mode 100644 index afaa7ab..0000000 --- a/TelosysTools/templates/infinimotion/test-java/XxxData_java.vm +++ /dev/null @@ -1,40 +0,0 @@ -## -------------------------------------------------- -#if ( $entity.isJoinEntity() ) -#cancel("No test class for join entity") -#end -## -------------------------------------------------- -#parse("include/init_var_entity.vm") -#parse("/include/java_header.vm") -#set( $values = $fn.buildValues($entity.attributes, 1) ) -##------------------------------------------------------ -package ${target.javaPackageFromFolder($TEST_SRC)}; - -import javax.persistence.EntityManager; - -import ${ROOT_PKG}.entities.${entity.name}; - -public class ${entity.name}Data { - - private static ${entity.name} entity ; - - public static void init(EntityManager em) { - // new entity instance - ${entity.name} newEntity = new ${entity.name}(); -#foreach( $attribute in $entity.attributes ) -## #if ( $attribute.isNotNull() ) -## newEntity.${attribute.setter}( $values.getValue($attribute.name) ) ; -## #end - newEntity.${attribute.setter}( $values.getValue($attribute.name) ) ; -#end - - // save entity in database - em.getTransaction().begin(); - ${entity.name} managedEntity = (${entity.name}) em.merge(newEntity); - em.getTransaction().commit(); - entity = managedEntity; - } - - public static ${entity.name} getEntity() { - return entity; - } -} diff --git a/TelosysTools/templates/infinimotion/test-java/XxxJpaTest_java.vm b/TelosysTools/templates/infinimotion/test-java/XxxJpaTest_java.vm deleted file mode 100644 index 93c315b..0000000 --- a/TelosysTools/templates/infinimotion/test-java/XxxJpaTest_java.vm +++ /dev/null @@ -1,134 +0,0 @@ -## -------------------------------------------------- -#if ( $entity.isJoinEntity() ) -#cancel("No test class for join entity") -#end -## -------------------------------------------------- -#parse("include/init_var_entity.vm") -#parse("/include/java_header.vm") -##------------------------------------------------------ -package ${target.javaPackageFromFolder($TEST_SRC)}; - -import static junit.framework.TestCase.assertNotNull; - -## import ${ROOT_PKG}.jpa.tools.JpaTest; -import ${ROOT_PKG}.entities.tooling.JpaTest; -import org.junit.Test; - -## macro to define referenced value for the given attribute -#macro( setRefValue $attrib ) -#foreach( $fkPart in $attrib.fkParts ) -#if ( $foreach.count == 1 ) -## #set( $refEntity = $model.getEntityByClassName($fkPart.referencedEntityName) ) -## #set( $refAttribute = $refEntity.getAttributeByName($fkPart.referencedAttributeName) ) -## #set( $refValue = "${refEntity.name}JpaTest.getInitEntity().${refAttribute.getter}()" ) -## new (for test) -#set( $n = $attrib.fkPartsCount ) -#set( $e = $fkPart.referencedEntity ) -#set( $a = $fkPart.referencedAttribute ) -## -#set( $refValue = "${fkPart.referencedEntityName}JpaTest.getInitEntity().${fkPart.referencedAttribute.getter}()" ) -#end -#end -#end -## -#set( $values1 = $fn.buildValues($entity.attributes, 1) ) -#set( $values2 = $fn.buildValues($entity.attributes, 2) ) -## -public class ${entity.name}JpaTest extends JpaTest { - - public static ${entity.name} getInitEntity() { -#buildEntity($values1) - } - - private ${entity.name} createEntity() { -#buildEntity($values2) - } - -#macro( buildEntity $argValues ) - ${entity.name} entity = new ${entity.name}(); -#foreach( $attribute in $entity.attributes ) -#if ( $attribute.isFK() ) -#setRefValue ( $attribute ) - entity.${attribute.setter}( $refValue ) ; -#else -#if ( ! $attribute.isAutoIncremented() ) - entity.${attribute.setter}( $argValues.getValue($attribute.name) ) ; -#else - // $attribute.name is auto-incremented => do not set -#end -#end -#end - return entity; -#end - - private Object getEntityKey(${entity.name} entity) { -#if ( $entity.hasCompositePrimaryKey() ) - return new ${jpaEntityIdClass}( $fn.argumentsListWithGetter("entity", $entity.keyAttributes) ); -#else - return entity.${entity.keyAttribute.getter}(); -#end - } - - @Test - public void testFind() { -#if ( $entity.hasGeneratedKey() ) - // NB: this entity has an GENERATED PRIMARY KEY - // Cannot use a generic test with this kind of PK - // Create a specific test for this case -#else - ${entity.name} e = find(${entity.name}.class, getEntityKey(getInitEntity()) ); - assertNotNull(e); -#end - } - - @Test - public void testPersistFind() { -#if ( $entity.hasGeneratedKey() ) - // NB: this entity has an GENERATED PRIMARY KEY - // Cannot use a generic test with this kind of PK - // Create a specific test for this case -#else - ${entity.name} entity = createEntity(); - Object key = getEntityKey(entity); - - // if entity doesn't exist yet - if ( find(${entity.name}.class, key) == null ) { - - // Create with 'persist' - persistAndRefresh(entity); - - // Find - ${entity.name} entity2 = find(${entity.name}.class, key); - assertNotNull(entity2); - - // Remove (use only if no risk of referential integrity constraint violation) - // findAndRemove(${entity.name}.class, key); - // assertNull(find(${entity.name}.class, key)); - } -#end - } - - @Test - public void testMergeFind() { -#if ( $entity.hasGeneratedKey() ) - // NB: this entity has an GENERATED PRIMARY KEY - // Cannot use a generic test with this kind of PK - // Create a specific test for this case -#else - ${entity.name} entity = createEntity(); - Object key = getEntityKey(entity); - - // Create or update with 'merge' - mergeAndRefresh(entity); - - // Find - ${entity.name} entity2 = find(${entity.name}.class, key); - assertNotNull(entity2); - - // Remove (use only if no risk of referential integrity constraint violation) - // findAndRemove(${entity.name}.class, key); - // assertNull(find(${entity.name}.class, key)); -#end - } - -} diff --git a/TelosysTools/templates/infinimotion/test-resources/persistence_xml.vm b/TelosysTools/templates/infinimotion/test-resources/persistence_xml.vm deleted file mode 100644 index ef8631d..0000000 --- a/TelosysTools/templates/infinimotion/test-resources/persistence_xml.vm +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider - - - -#set( $DB_SCHEMA_NAME = "TO_BE_DEFINED" ) -#foreach( $entity in $selectedEntities ) - ${ROOT_PKG}.entities.${entity.name} -## Just keep the schema of the last entity -#set( $DB_SCHEMA_NAME = $entity.databaseSchema ) -#end - -## Schema name is determined from entities -#if ( ${DB_SCHEMA_NAME} != "" ) -#set( $INIT_DB = ";INIT=CREATE SCHEMA IF NOT EXISTS ${DB_SCHEMA_NAME}" ) -#else -#set( $INIT_DB = "" ) - -#end - - - - - - - - - - - - - - - - - \ No newline at end of file