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