Author: tchemit Date: 2013-08-05 12:41:12 +0200 (Mon, 05 Aug 2013) New Revision: 2792 Url: http://nuiton.org/projects/topia/repository/revisions/2792 Log: refs #2748: Improve TopiaContext if necessary (do not use any longer internal TopiaContextImplementor) Modified: trunk/src/site/rst/migrate_to_3.0.rst trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClass.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClassNG.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByMethod.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java Modified: trunk/src/site/rst/migrate_to_3.0.rst =================================================================== --- trunk/src/site/rst/migrate_to_3.0.rst 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/src/site/rst/migrate_to_3.0.rst 2013-08-05 10:41:12 UTC (rev 2792) @@ -94,7 +94,17 @@ Les méthodes ``preInit(TopiaContextImplementor)`` et ``postInit(TopiaContextImplementor)`` doivent être remplacées par ``preInit(TopiaContext)`` et ``postInit(TopiaContext)`` +Service de migration +-------------------- +|MANDATORY| + +Toute référence à **TopiaContextImplementor** a été supprimé et remplacée par +**TopiaContext**, cela change donc les signatures et rend le code incompatible, +il faut donc bien effectuer le remplacement dans les callbacks que vous avez +écrits. + + Gestion des exceptions ---------------------- Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaSQLQuery.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -25,6 +25,7 @@ package org.nuiton.topia.framework; import org.hibernate.jdbc.Work; +import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import java.sql.Connection; @@ -39,8 +40,8 @@ /** * An executor of sql query which permits to obtain a single result via - * the method {@link #findSingleResult(TopiaContextImplementor)} - * or a multiple result with method {@link #findMultipleResult(TopiaContextImplementor)}. + * the method {@link #findSingleResult(TopiaContext)} + * or a multiple result with method {@link #findMultipleResult(TopiaContext)}. * * @param <O> the type of result data * @since 2.5 @@ -71,11 +72,24 @@ * @param tx the transaction used to execute the query. * @return the single result or {@code null} if none found. * @throws TopiaException for any pb + * @deprecated since 3.0, use now {@link #findSingleResult(TopiaContext)}. */ + @Deprecated public O findSingleResult(TopiaContextImplementor tx) throws TopiaException { + return findSingleResult((TopiaContext) tx); + } + + /** + * Obtain a single result from the builded sql query. + * + * @param tx the transaction used to execute the query. + * @return the single result or {@code null} if none found. + * @throws TopiaException for any pb + */ + public O findSingleResult(TopiaContext tx) throws TopiaException { final List<O> result = new ArrayList<O>(); - tx.getHibernate().doWork(new Work() { + tx.getHibernateSession().doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { @@ -103,11 +117,24 @@ * @param tx the transaction used to execute the query. * @return the list of results (the list is empty if non result is found). * @throws TopiaException for any pb + * @deprecated since 3.0, use now {@link #findMultipleResult(TopiaContext)}. */ + @Deprecated public List<O> findMultipleResult(TopiaContextImplementor tx) throws TopiaException { + return findMultipleResult((TopiaContext) tx); + } + + /** + * Obtain a multiple results fro the builded sql query. + * + * @param tx the transaction used to execute the query. + * @return the list of results (the list is empty if non result is found). + * @throws TopiaException for any pb + */ + public List<O> findMultipleResult(TopiaContext tx) throws TopiaException { final List<O> result = new ArrayList<O>(); - tx.getHibernate().doWork(new Work() { + tx.getHibernateSession().doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -40,7 +40,6 @@ import org.nuiton.eugene.models.object.xml.ObjectModelEnumerationImpl; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnum; @@ -144,7 +143,6 @@ String modelName = model.getName(); String modelVersion = model.getVersion(); - addImport(daoHelper, TopiaContextImplementor.class); addImport(daoHelper, TopiaDAO.class); addImport(daoHelper, TopiaEntity.class); addImport(daoHelper, TopiaContext.class); @@ -190,8 +188,7 @@ addException(op, TopiaException.class); setOperationBody(op, "" /*{ - TopiaContextImplementor ci = (TopiaContextImplementor) context; - <%=daoClazzName%> result = ci.getDAO(<%=clazzName%>.class, <%=daoClazzName%>.class); + <%=daoClazzName%> result = context.getDAO(<%=clazzName%>.class, <%=daoClazzName%>.class); return result; }*/ ); @@ -205,9 +202,8 @@ addException(op, TopiaException.class); setOperationBody(op, "" /*{ - TopiaContextImplementor ci = (TopiaContextImplementor) context; <%=entityEnumName%> constant = <%=entityEnumName%>.valueOf(klass); - D dao = (D) ci.getDAO(constant.getContract()); + D dao = (D) context.getDAO(constant.getContract()); return dao; }*/ ); @@ -218,9 +214,8 @@ addException(op, TopiaException.class); setOperationBody(op, "" /*{ - TopiaContextImplementor ci = (TopiaContextImplementor) context; <%=entityEnumName%> constant = <%=entityEnumName%>.valueOf(entity); - D dao = (D) ci.getDAO(constant.getContract()); + D dao = (D) context.getDAO(constant.getContract()); return dao; }*/ ); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -43,7 +43,6 @@ import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.StringUtil; @@ -365,7 +364,6 @@ boolean enableSecurity = TopiaGeneratorUtil.isClassWithSecurity(clazz); if (enableSecurity) { - addImport(daoAbstractClass, TopiaContextImplementor.class); addImport(daoAbstractClass, ArrayList.class); addImport(daoAbstractClass, Permission.class); addImport(daoAbstractClass, "org.nuiton.topia.taas.entities.TaasAuthorizationImpl"); @@ -514,7 +512,7 @@ // setDocumentation(op, "Retourne les permissions a verifier pour " + // "l'acces a l'entite pour le service Taas"); setOperationBody(op, "" -/*{ TopiaContextImplementor context = getContext(); +/*{ TopiaContext context = getTopiaContext(); List<String> result = context.findAll(query, "id", topiaId); List<Permission> resultPermissions = new ArrayList<Permission>(); @@ -601,7 +599,7 @@ // attrType + "." + getConstantName(reverseAttrName); // // -// <%=entityDAO%> dao = <%=daoHelper%>.get<%=entityDAO%>(getContext()); +// <%=entityDAO%> dao = <%=daoHelper%>.get<%=entityDAO%>(getTopiaContext()); // TopiaQuery query = dao.createQuery("B"). // addFrom(entity.getClass(), "A"). // add("A", entity). @@ -614,7 +612,7 @@ body.append("" /*{ { - List<<%=attrType%>> list = getContext().getHibernateSession().createSQLQuery( + List<<%=attrType%>> list = getTopiaContext().getHibernateSession().createSQLQuery( "SELECT main.topiaid " + "from <%=attrClassifierDBName%> main, <%=attrJoinTableName%> secondary " + "where main.topiaid=secondary.<%=attrDBName%>" + @@ -640,7 +638,7 @@ body.append("" /*{ { - List<<%=attrSimpleType%>> list = getContext() + List<<%=attrSimpleType%>> list = getTopiaContext() .getDAO(<%=attrSimpleType%>.class) .findAllByProperties(<%=attrSimpleType%>.<%=getConstantName(reverseAttrName)%>, entity); for (<%=attrSimpleType%> item : list) { @@ -654,7 +652,7 @@ if (attr.isAggregate()) { body.append("" /*{ - getContext().getDAO(<%=attrSimpleType%>.class).delete(item); + getTopiaContext().getDAO(<%=attrSimpleType%>.class).delete(item); //item.delete(); }*/ ); @@ -812,7 +810,7 @@ /*{ if (type == <%=usageSimpleType%>.class) { <%=daoName%> dao = (<%=daoName%>) - getContext().getDAO(<%=usageSimpleType%>.class); + getTopiaContext().getDAO(<%=usageSimpleType%>.class); tmp = dao.<%=methodName%>(entity); result.addAll(tmp); } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -41,7 +41,6 @@ import org.nuiton.eugene.models.object.ObjectModelParameter; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.persistence.EntityVisitor; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityAbstract; @@ -344,7 +343,6 @@ if (TopiaGeneratorUtil.isContextable(input)) { addImport(outputAbstract, TopiaContext.class); - addImport(outputAbstract, TopiaContextImplementor.class); // topiaContext attribute ObjectModelAttribute topiaContextAttribute = addAttribute( @@ -380,7 +378,7 @@ if (topiaContext == null) { topiaContext = context; // } else { -// throw new TopiaRuntimeException("TopiaContext replacement is forbidden"); +// throw new TopiaException("TopiaContext replacement is forbidden"); } }*/ ); @@ -392,7 +390,7 @@ addAnnotation(outputAbstract, op, Override.class); setOperationBody(op, "" /*{ - ((TopiaContextImplementor)getTopiaContext()).getDAO(<%=input.getName()%>.class).update(this); + getTopiaContext().getDAO(<%=input.getName()%>.class).update(this); }*/ ); @@ -402,7 +400,7 @@ addAnnotation(outputAbstract, op, Override.class); setOperationBody(op, "" /*{ - ((TopiaContextImplementor)getTopiaContext()).getDAO(<%=input.getName()%>.class).delete(this); + getTopiaContext().getDAO(<%=input.getName()%>.class).delete(this); }*/ ); } @@ -1410,11 +1408,10 @@ // tmp.addAll(<%=ref%>); // } - addImport(outputAbstract, TopiaContextImplementor.class); body.append("" /*{ { - org.nuiton.topia.persistence.TopiaDAO<<%=assocClassFQN%>> dao = ((TopiaContextImplementor) getTopiaContext()).getDAO(<%=assocClassFQN%>.class); + org.nuiton.topia.persistence.TopiaDAO<<%=assocClassFQN%>> dao = getTopiaContext().getDAO(<%=assocClassFQN%>.class); List<<%=assocClassFQN%>> findAllByProperties = dao.findAllByProperties("<%=reverseAttrName%>", this); if (findAllByProperties != null) { tmp.addAll(findAllByProperties); @@ -1454,39 +1451,48 @@ addException(operation, TopiaException.class); addAnnotation(outputAbstract, operation, Override.class); - addImport(outputAbstract, ArrayList.class); - addImport(outputAbstract, List.class); - StringBuilder body = new StringBuilder("" + StringBuilder body = new StringBuilder(); + if (!TopiaGeneratorUtil.isContextable(input)) { + body = new StringBuilder("" /*{ + throw new UnsupportedOperationException("Since ToPIA 3.0, 'getComposite' is only available for contextable entities"); + }*/ + ); + } else { + + addImport(outputAbstract, ArrayList.class); + addImport(outputAbstract, List.class); + body .append("" +/*{ List<TopiaEntity> tmp = new ArrayList<TopiaEntity>(); // pour tous les attributs rechecher les composites et les class d'asso // on les ajoute dans tmp }*/ - ); - for (ObjectModelAttribute attr : input.getAttributes()) { + ); + for (ObjectModelAttribute attr : input.getAttributes()) { - if (attr.referenceClassifier() && - TopiaGeneratorUtil.isEntity(attr.getClassifier()) && - attr.isAggregate()) { + if (attr.referenceClassifier() && + TopiaGeneratorUtil.isEntity(attr.getClassifier()) && + attr.isAggregate()) { - String attrName = attr.getName(); - String getterName = getJavaBeanMethodName("get", attrName); - if (TopiaGeneratorUtil.isNMultiplicity(attr)) { - body.append("" + String attrName = attr.getName(); + String getterName = getJavaBeanMethodName("get", attrName); + if (TopiaGeneratorUtil.isNMultiplicity(attr)) { + body.append("" /*{ tmp.addAll(<%=getterName%>()); }*/ - ); - } else { - body.append("" + ); + } else { + body.append("" /*{ tmp.add(<%=getterName%>()); }*/ - ); + ); + } } } - } - body.append("" + body.append("" /*{ // on refait un tour sur chaque entity de tmp pour recuperer leur // composite @@ -1497,8 +1503,8 @@ } return result; }*/ - ); - + ); + } setOperationBody(operation, body.length() == 0 ? " " : body.toString()); } Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -29,7 +29,6 @@ import org.hibernate.jdbc.Work; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.util.StringUtil; import org.nuiton.util.Version; @@ -67,7 +66,7 @@ List<Version> versions); protected abstract void migrateForVersion(Version version, - TopiaContextImplementor tx, + TopiaContext tx, boolean showSql, boolean showProgression) throws Exception; @@ -103,13 +102,12 @@ // l'utilisateur a refuse la migration return false; } - TopiaContextImplementor tx; for (Version v : versions) { // ouverture d'une connexion direct JDBC sur la base try { - tx = (TopiaContextImplementor) ctxt.beginTransaction(); + TopiaContext tx = ctxt.beginTransaction(); try { @@ -144,7 +142,7 @@ return doMigrate; } - public void executeSQL(TopiaContextImplementor tx, String... sqls) + public void executeSQL(TopiaContext tx, String... sqls) throws TopiaException { executeSQL(tx, false, false, sqls); } @@ -159,7 +157,7 @@ * @throws TopiaException if any pb * @since 2.3.0 */ - public void executeSQL(TopiaContextImplementor tx, + public void executeSQL(TopiaContext tx, final boolean showSql, final boolean showProgression, final String... sqls) throws TopiaException { @@ -181,7 +179,7 @@ "--------------------------------------------------------------------------------\n" ); } - tx.getHibernate().doWork(new Work() { + tx.getHibernateSession().doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClass.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClass.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClass.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -24,8 +24,8 @@ */ package org.nuiton.topia.migration; +import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.util.ObjectUtil; import org.nuiton.util.Version; @@ -67,7 +67,7 @@ @Override protected void migrateForVersion(Version version, - TopiaContextImplementor tx, + TopiaContext tx, boolean showSql, boolean showProgression) throws Exception { @@ -100,7 +100,7 @@ } - protected String[] prepareMigration(TopiaContextImplementor tx, + protected String[] prepareMigration(TopiaContext tx, boolean showSql, boolean showProgression) throws TopiaException { @@ -111,17 +111,17 @@ return queries.toArray(new String[queries.size()]); } - protected abstract void prepareMigrationScript(TopiaContextImplementor tx, + protected abstract void prepareMigrationScript(TopiaContext tx, List<String> queries, boolean showSql, boolean showProgression) throws TopiaException; - public void executeSQL(TopiaContextImplementor tx, + public void executeSQL(TopiaContext tx, String... sqls) throws TopiaException { callBack.executeSQL(tx, sqls); } - public void executeSQL(TopiaContextImplementor tx, + public void executeSQL(TopiaContext tx, boolean showSql, boolean showProgression, String... sqls) throws TopiaException { Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClassNG.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClassNG.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClassNG.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -26,8 +26,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.util.Version; import org.nuiton.util.VersionUtil; @@ -73,7 +73,7 @@ @Override protected void migrateForVersion(Version version, - TopiaContextImplementor tx, + TopiaContext tx, boolean showSql, boolean showProgression) throws Exception { @@ -103,7 +103,7 @@ this.callBack = callBack; } - protected String[] prepareMigration(TopiaContextImplementor tx, + protected String[] prepareMigration(TopiaContext tx, boolean showSql, boolean showProgression) throws TopiaException { @@ -114,17 +114,17 @@ return queries.toArray(new String[queries.size()]); } - protected abstract void prepareMigrationScript(TopiaContextImplementor tx, + protected abstract void prepareMigrationScript(TopiaContext tx, List<String> queries, boolean showSql, boolean showProgression) throws TopiaException; - public void executeSQL(TopiaContextImplementor tx, + public void executeSQL(TopiaContext tx, String... sqls) throws TopiaException { callBack.executeSQL(tx, sqls); } - public void executeSQL(TopiaContextImplementor tx, + public void executeSQL(TopiaContext tx, boolean showSql, boolean showProgression, String... sqls) throws TopiaException { @@ -152,7 +152,7 @@ * * @param version the version to migrate * @return the migration call for the given version, or {@code null} - * if no such migration callback exists for the version + * if no such migration callback exists for the version */ MigrationCallBackForVersion getCallBack(Version version); } Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByMethod.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByMethod.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByMethod.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -26,7 +26,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.TopiaContext; import org.nuiton.util.Version; import java.lang.reflect.Method; @@ -51,14 +51,14 @@ @Override protected void migrateForVersion(Version version, - TopiaContextImplementor tx, + TopiaContext tx, boolean showSql, boolean showProgression) throws Exception { String methodName = "migrateTo_" + version.getValidName(); Method m = getClass().getMethod(methodName, - TopiaContextImplementor.class, + TopiaContext.class, boolean.class, boolean.class ); Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -131,8 +131,8 @@ @Override public void beginTransaction(TopiaTransactionEvent event) { - TopiaContextImplementor context = - (TopiaContextImplementor) event.getSource(); + TopiaContext context = + event.getSource(); // add topia context listener context.addTopiaContextListener(contextListener); Modified: trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java =================================================================== --- trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java 2013-08-05 09:30:26 UTC (rev 2791) +++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/mappings/TMSVersionDAO.java 2013-08-05 10:41:12 UTC (rev 2792) @@ -34,7 +34,6 @@ import org.hibernate.tool.hbm2ddl.SchemaExport; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; -import org.nuiton.topia.framework.TopiaContextImplementor; import org.nuiton.topia.framework.TopiaUtil; import org.nuiton.util.Version; import org.nuiton.util.VersionUtil; @@ -63,7 +62,7 @@ public static TMSVersion get(TopiaContext tx) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = tx.getHibernateSession(); Criteria criteria = session.createCriteria(TMSVersion.class); List<?> list = criteria.list(); TMSVersion result = list.isEmpty() ? null : (TMSVersion) list.get(0); @@ -90,7 +89,7 @@ public static TMSVersion create(TopiaContext tx, String version) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = tx.getHibernateSession(); TMSVersion result = TMSVersion.valueOf(version); // save entity @@ -103,7 +102,7 @@ public static void update(TopiaContext tx, TMSVersion version) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = tx.getHibernateSession(); session.saveOrUpdate(version); tx.commitTransaction(); } catch (HibernateException e) { @@ -113,7 +112,7 @@ public static void deleteAll(TopiaContext tx) throws TopiaException { try { - Session session = ((TopiaContextImplementor) tx).getHibernate(); + Session session = tx.getHibernateSession(); Criteria criteria = session.createCriteria(TMSVersion.class); List<?> list = criteria.list(); for (Object o : list) { @@ -135,14 +134,13 @@ public static Version getVersion(TopiaContext tx, String tableName) { try { - TopiaContextImplementor txImpl = (TopiaContextImplementor) tx; - Configuration hibernateConfiguration = txImpl.getHibernateConfiguration(); + Configuration hibernateConfiguration = tx.getHibernateConfiguration(); // Get schema name String schemaName = TopiaUtil.getSchemaName(hibernateConfiguration); GetVersionWork work = new GetVersionWork(schemaName, tableName); - txImpl.getHibernate().doWork(work); + tx.getHibernateSession().doWork(work); Version v = work.getVersion(); return v; } catch (TopiaException e) { @@ -155,6 +153,7 @@ protected Version version; private final String tableName; + private final String schemaName; public GetVersionWork(String schemaName, String tableName) { @@ -166,7 +165,7 @@ public void execute(Connection connection) throws SQLException { String fullTableName = schemaName == null ? - tableName : schemaName + "." + tableName; + tableName : schemaName + "." + tableName; PreparedStatement st = connection.prepareStatement("select " + TMSVersion.PROPERTY_VERSION + " from " + fullTableName + ";");