Topia-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 4806 discussions
r2942 - trunk/topia-templates/src/main/java/org/nuiton/topia/templates
by tchemitï¼ users.nuiton.org 19 Dec '13
by tchemitï¼ users.nuiton.org 19 Dec '13
19 Dec '13
Author: tchemit
Date: 2013-12-19 22:23:21 +0100 (Thu, 19 Dec 2013)
New Revision: 2942
Url: http://nuiton.org/projects/topia/repository/revisions/2942
Log:
fixes #2895: Remove duplicated code betweeen generated XxxApplicationContext and XxxPersistenceContext
fixes #2974: Be able to specify a super class for any generated class
clean transformers
Modified:
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java 2013-12-19 21:22:20 UTC (rev 2941)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java 2013-12-19 21:23:21 UTC (rev 2942)
@@ -36,10 +36,7 @@
import org.nuiton.topia.AbstractTopiaApplicationContext;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.util.EntityOperator;
-import org.nuiton.topia.persistence.util.EntityOperatorStore;
-import java.lang.reflect.Array;
-import java.util.List;
import java.util.Properties;
/**
@@ -64,7 +61,6 @@
boolean generateConcrete = !isInClassPath(packageName, applicationContextConcreteName);
-
if (generateAbstract) {
generateAbstract(packageName,
@@ -84,13 +80,16 @@
String className) {
// try to find a super class by tag-value
-// String superClass = TopiaGeneratorUtil.getPersistenceContextSuperClassTagValue(model);
- String superClass = null;
+ String superClass = TopiaGeneratorUtil.getApplicationContextSuperClassTagValue(model);
if (superClass == null) {
// no super-class, use default one
superClass = AbstractTopiaApplicationContext.class.getName();
+ }else {
+
+ //TODO check that super class instance of ApplicationPersistenceContext
+
}
ObjectModelClass output = createAbstractClass(className, packageName);
@@ -99,10 +98,8 @@
setSuperClass(output, superClass + "<" + persistenceContextConcreteName + ">");
// detect if there is a contract to set on abstract
- String contractName = TopiaGeneratorUtil.getPersistenceContextInterfaceName(model);
+ String contractName = TopiaGeneratorUtil.getApplicationContextInterfaceName(model);
-// addInterface(output, TopiaPersistenceContext.class);
-
boolean addPersistenceContextContract = isInClassPath(packageName, contractName);
if (addPersistenceContextContract) {
@@ -110,55 +107,20 @@
}
String modelName = model.getName();
- String daoHelperClazzName = modelName + "DAOHelper";
String entityEnumName = modelName + "EntityEnum";
- List<ObjectModelClass> entityClasses =
- TopiaGeneratorUtil.getEntityClasses(model, true);
-
boolean generateOperator =
TopiaGeneratorUtil.shouldGenerateOperatorForDAOHelper(model);
-// boolean generateStandaloneEnum =
-// TopiaGeneratorUtil.shouldGenerateStandaloneEnumForDAOHelper(model);
-//
-// if (!generateStandaloneEnum) {
-//
-// addImport(output, packageName + "." + daoHelperClazzName + "." + entityEnumName);
-//
-// }
-
addImport(output, TopiaEntity.class);
- addImport(output, Array.class);
- addImport(output, Array.class);
if (generateOperator) {
addImport(output, EntityOperator.class);
- addImport(output, EntityOperatorStore.class);
}
- // add public constructor
- ObjectModelOperation constructor = addConstructor(
- output,
- ObjectModelJavaModifier.PUBLIC);
- addParameter(constructor, Properties.class, "properties");
- setOperationBody(constructor, ""
-/*{
- super(properties);
- }*/
- );
+ addConstructors(output, false);
- constructor = addConstructor(
- output,
- ObjectModelJavaModifier.PUBLIC);
- addParameter(constructor, "java.util.Map<String, String>", "configuration");
- setOperationBody(constructor, ""
-/*{
- super(configuration);
- }*/
- );
-
ObjectModelOperation op;
// getModelVersion method
@@ -198,33 +160,26 @@
addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
- <%=entityEnumName%> constant = <%=entityEnumName%>.valueOf(klass);
- return (Class<T>) constant.getContract();
+ return <%=entityEnumName%>.getContractClass(klass);
}*/
);
- // getImplementationClass method
- op = addOperation(output, "getImplementationClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC);
+ // getContractClasses method
+ op = addOperation(output, "getContractClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC);
addAnnotation(output, op, Override.class);
- addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
- <%=entityEnumName%> constant = <%=entityEnumName%>.valueOf(klass);
- return (Class<T>) constant.getImplementation();
+ return <%=entityEnumName%>.getContractClasses();
}*/
);
- // getContractClasses method
- op = addOperation(output, "getContractClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC);
+ // getImplementationClass method
+ op = addOperation(output, "getImplementationClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC);
addAnnotation(output, op, Override.class);
+ addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
- <%=entityEnumName%>[] values = <%=entityEnumName%>.values();
- Class<? extends TopiaEntity>[] result = (Class<? extends TopiaEntity>[]) Array.newInstance(Class.class, values.length);
- for (int i = 0; i < values.length; i++) {
- result[i] = values[i].getContract();
- }
- return result;
+ return <%=entityEnumName%>.getImplementationClass(klass);
}*/
);
@@ -233,12 +188,7 @@
addAnnotation(output, op, Override.class);
setOperationBody(op, ""
/*{
- <%=entityEnumName%>[] values = <%=entityEnumName%>.values();
- Class<? extends TopiaEntity>[] result = (Class<? extends TopiaEntity>[]) Array.newInstance(Class.class, values.length);
- for (int i = 0; i < values.length; i++) {
- result[i] = values[i].getImplementation();
- }
- return result;
+ return <%=entityEnumName%>.getImplementationClasses();
}*/
);
@@ -246,7 +196,7 @@
op = addOperation(output, "getContracts", entityEnumName + "[]", ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
- return <%=entityEnumName%>.values();
+ return <%=entityEnumName%>.getContracts();
}*/
);
@@ -256,12 +206,10 @@
addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
- <%=entityEnumName%> constant = <%=entityEnumName%>.valueOf(klass);
- return EntityOperatorStore.getOperator(constant);
+ return <%=entityEnumName%>.getOperator(klass);
}*/
);
}
-
}
protected ObjectModelClass generateImpl(String packageName,
@@ -272,10 +220,17 @@
setSuperClass(output, applicationContextAbstractName);
- // add public constructor
- ObjectModelOperation constructor = addConstructor(
- output,
- ObjectModelJavaModifier.PUBLIC);
+ addConstructors(output, true);
+ return output;
+ }
+
+ protected void addConstructors(ObjectModelClass output, boolean isPublic) {
+
+ ObjectModelJavaModifier visibility = isPublic ?
+ ObjectModelJavaModifier.PUBLIC :
+ ObjectModelJavaModifier.PROTECTED;
+
+ ObjectModelOperation constructor = addConstructor(output, visibility);
addParameter(constructor, Properties.class, "properties");
setOperationBody(constructor, ""
/*{
@@ -283,17 +238,13 @@
}*/
);
- constructor = addConstructor(
- output,
- ObjectModelJavaModifier.PUBLIC);
+ constructor = addConstructor(output, visibility);
addParameter(constructor, "java.util.Map<String, String>", "configuration");
setOperationBody(constructor, ""
/*{
super(configuration);
}*/
);
-
- return output;
}
}
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java 2013-12-19 21:22:20 UTC (rev 2941)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java 2013-12-19 21:23:21 UTC (rev 2942)
@@ -48,6 +48,7 @@
import org.nuiton.eugene.models.object.ObjectModelOperation;
import org.nuiton.topia.HibernateTopiaJpaSupport;
import org.nuiton.topia.TopiaHibernateSupport;
+import org.nuiton.topia.persistence.AbstractTopiaDao;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep;
@@ -86,12 +87,6 @@
*/
protected Set<String> allEntitiesFqn;
- /**
- * The class of abstract dao to use.
- * @since 2.5
- */
- protected Class<?> daoImplementation;
-
protected String entityEnumName;
protected String entityEnumPackage;
@@ -117,9 +112,6 @@
usages = TopiaGeneratorUtil.searchDirectUsages(model);
- daoImplementation = TopiaGeneratorUtil.getDAOImplementation(model);
-
-
// keep all classifiers on the model which are entities
List<ObjectModelClass> allEntities =
TopiaGeneratorUtil.getEntityClasses(model, true);
@@ -218,30 +210,12 @@
generateAbstractDao(clazz, clazzName, clazzFQN);
}
-// if (isGenerateLegacyDao(clazz)) {
-// generateLegacyDao(clazz, clazzName, clazzFQN);
-// }
-
if (isGenerateConcreteDao(clazz)) {
generateConcreteDao(clazz, clazzName, clazzFQN);
}
}
-// protected boolean isGenerateLegacyDao(ObjectModelClass input) {
-//
-// String daoLegacyFqn = TopiaGeneratorUtil.getLegacyDaoFqn(input);
-//
-// if (isInClassPath(daoLegacyFqn)) {
-//
-// // already in class-path
-// return false;
-// }
-//
-// // can safely generate the dao impl
-// return true;
-// }
-
protected boolean isGenerateConcreteDao(ObjectModelClass input) {
String daoConcreteFqn = TopiaGeneratorUtil.getConcreteDaoFqn(input);
@@ -295,17 +269,6 @@
}
-// protected void generateLegacyDao(ObjectModelClass clazz, String clazzName, String clazzFQN) {
-// ObjectModelClass daoClass = createClass(TopiaGeneratorUtil.getLegacyDaoName(clazz), clazz.getPackageName());
-// addAnnotation(daoClass, daoClass, Deprecated.class);
-// setDocumentation(daoClass, "/**\n" +
-// " * Cette classe etend le DAOImpl pour parametrer la classe avec le bon type\n" +
-// " * Cette classe est marque finale car l'heritage entre les DAO se fait\n" +
-// " * sur les DOAImpl, c-a-d que DAOAbstract peut etendre le DAOImpl\n" +
-// " */");
-// setSuperClass(daoClass, TopiaGeneratorUtil.getAbstractDaoFqn(clazz) + "<" + clazzName + ">");
-// }
-
protected void generateConcreteDao(ObjectModelClass clazz, String clazzName, String clazzFQN) {
String concreteDaoName = TopiaGeneratorUtil.getConcreteDaoName(clazz);
ObjectModelClass daoClass = createClass(concreteDaoName, clazz.getPackageName());
@@ -398,8 +361,13 @@
}
}
if (superClassName == null) {
- superClassName = daoImplementation.getName() + "<E>";
+ superClassName = TopiaGeneratorUtil.getDaoSuperClassTagValue(clazz, model);
+ if (superClassName == null) {
+ superClassName = AbstractTopiaDao.class.getName();
+ }
+ superClassName += "<E>";
}
+
if (log.isDebugEnabled()) {
log.debug("super class = " + superClassName);
}
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java 2013-12-19 21:22:20 UTC (rev 2941)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java 2013-12-19 21:23:21 UTC (rev 2942)
@@ -41,6 +41,7 @@
import org.nuiton.eugene.models.object.ObjectModelParameter;
import org.nuiton.topia.TopiaDaoSupplier;
import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.AbstractTopiaDao;
import org.nuiton.topia.persistence.EntityVisitor;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.TopiaEntityAbstract;
@@ -321,7 +322,12 @@
// Extends TopiaEntityAbstract (only if hasn't parent entity)
if (outputAbstract.getSuperclasses().isEmpty()) {
- setSuperClass(outputAbstract, TopiaEntityAbstract.class);
+
+ String superClassName = TopiaGeneratorUtil.getEntitySuperClassTagValue(input, model);
+ if (superClassName == null) {
+ superClassName = TopiaEntityAbstract.class.getName();
+ }
+ setSuperClass(outputAbstract, superClassName);
}
addContextableMethods(input, outputAbstract);
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java 2013-12-19 21:22:20 UTC (rev 2941)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java 2013-12-19 21:23:21 UTC (rev 2942)
@@ -25,7 +25,6 @@
*/
/*{generator option: parentheses = false}*/
-
/*{generator option: writeString = +}*/
import org.nuiton.eugene.java.ObjectModelTransformerToJava;
@@ -37,10 +36,7 @@
import org.nuiton.topia.persistence.HibernateProvider;
import org.nuiton.topia.persistence.TopiaHibernateSessionRegistry;
import org.nuiton.topia.TopiaListenableSupport;
-import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.TopiaIdFactory;
-import org.nuiton.topia.persistence.util.EntityOperator;
-import org.nuiton.topia.persistence.util.EntityOperatorStore;
import java.util.List;
@@ -86,13 +82,16 @@
String className) {
// try to find a super class by tag-value
-// String superClass = TopiaGeneratorUtil.getPersistenceContextSuperClassTagValue(model);
- String superClass = null;
+ String superClass = TopiaGeneratorUtil.getPersistenceContextSuperClassTagValue(model);
if (superClass == null) {
// no super-class, use default one
superClass = AbstractTopiaPersistenceContext.class.getName();
+ } else {
+
+ //TODO check that super class instance of TopiaPersistenceContext
+
}
ObjectModelClass output = createAbstractClass(className, packageName);
@@ -102,83 +101,30 @@
// detect if there is a contract to set on abstract
String contractName = TopiaGeneratorUtil.getPersistenceContextInterfaceName(model);
-// addInterface(output, TopiaPersistenceContext.class);
-
boolean addPersistenceContextContract = isInClassPath(packageName, contractName);
if (addPersistenceContextContract) {
addInterface(output, packageName + "." + contractName);
}
- String modelName = model.getName();
- String daoHelperClazzName = modelName + "DAOHelper";
-
- String entityEnumName = TopiaGeneratorUtil.getEntityEnumName(model);
-
List<ObjectModelClass> entityClasses =
TopiaGeneratorUtil.getEntityClasses(model, true);
- boolean generateOperator =
- TopiaGeneratorUtil.shouldGenerateOperatorForDAOHelper(model);
+ addContructor(output, false);
-// boolean generateStandaloneEnum =
-// TopiaGeneratorUtil.shouldGenerateStandaloneEnumForDAOHelper(model);
-// if (!generateStandaloneEnum) {
-//
-// addImport(output, packageName + "." + entityEnumName);
-//
-// }
- addImport(output, TopiaEntity.class);
-
- if (generateOperator) {
- addImport(output, EntityOperator.class);
-// addImport(output, EntityOperatorStore.class);
- }
-
- // add public constructor
- ObjectModelOperation constructor = addConstructor(
- output,
- ObjectModelJavaModifier.PUBLIC);
- addParameter(constructor, HibernateProvider.class, "hibernateProvider");
- addParameter(constructor, TopiaListenableSupport.class, "listenableSupport");
- addParameter(constructor, TopiaIdFactory.class, "topiaIdFactory");
- addParameter(constructor, TopiaHibernateSessionRegistry.class, "sessionRegistry");
- setOperationBody(constructor, ""
-/*{
- super(hibernateProvider, listenableSupport, topiaIdFactory, sessionRegistry);
- }*/
- );
-
- ObjectModelOperation op;
-
- // getModelVersion method
- String modelVersion = model.getVersion();
- op = addOperation(output, "getModelVersion", "String", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- setOperationBody(op, ""
-/*{
- return "<%=modelVersion%>";
- }*/
- );
-
- // getModelName method
- op = addOperation(output, "getModelName", "String", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- setOperationBody(op, ""
-/*{
- return "<%=modelName%>";
- }*/
- );
-
for (ObjectModelClass clazz : entityClasses) {
String clazzName = clazz.getName();
- // TODO brendan 14/10/13 use method
- String daoContractName = clazzName + "Dao";
+ String daoContractName = TopiaGeneratorUtil.getContracDaoName(clazz);
String daoClazzName = TopiaGeneratorUtil.getConcreteDaoName(clazz);
// specialized getXXXDao method
- op = addOperation(output, "get" + daoContractName, clazz.getPackageName() + '.' + daoClazzName);
+ ObjectModelOperation op = addOperation(
+ output,
+ "get" + daoContractName,
+ clazz.getPackageName() + '.' + daoClazzName);
addImport(output, clazz);
setOperationBody(op, ""
/*{
@@ -186,70 +132,7 @@
return result;
}*/
);
-
}
-
- // getContracts method
- op = addOperation(output, "getContracts", entityEnumName + "[]", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- setOperationBody(op, ""
-/*{
- return <%=entityEnumName%>.getContracts();
- }*/
- );
-
- // getContractClass method
- op = addOperation(output, "getContractClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- addParameter(op, "Class<T>", "klass");
- setOperationBody(op, ""
-/*{
- return <%=entityEnumName%>.getContractClass(klass);
- }*/
- );
-
- // getContractClasses method
- op = addOperation(output, "getContractClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- setOperationBody(op, ""
-/*{
- return <%=entityEnumName%>.getContractClasses();
- }*/
- );
-
- // getImplementationClass method
- op = addOperation(output, "getImplementationClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- addParameter(op, "Class<T>", "klass");
- setOperationBody(op, ""
-/*{
- return <%=entityEnumName%>.getImplementationClass(klass);
- }*/
- );
-
- // getImplementationClasses method
- op = addOperation(output, "getImplementationClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- setOperationBody(op, ""
-/*{
- return <%=entityEnumName%>.getImplementationClasses();
- }*/
- );
-
- // getImplementationClassesAsString method
- op = addOperation(output, "getImplementationClassesAsString", "String", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- setOperationBody(op, ""
-/*{
- return <%=entityEnumName%>.getImplementationClassesAsString();
- }*/
- );
-
- if (generateOperator) {
- // getOperator method
- op = addOperation(output, "getOperator", "<T extends TopiaEntity> EntityOperator<T>", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
- addParameter(op, "Class<T>", "klass");
- setOperationBody(op, ""
-/*{
- return <%=entityEnumName%>.getOperator(klass);
- }*/
- );
- }
-
}
protected ObjectModelClass generateImpl(String packageName,
@@ -259,10 +142,17 @@
ObjectModelClass output = createClass(entityConcreteName, packageName);
setSuperClass(output, entityAbstractName);
+ addContructor(output, true);
+ return output;
+ }
- ObjectModelOperation constructor = addConstructor(
- output,
- ObjectModelJavaModifier.PUBLIC);
+ protected void addContructor(ObjectModelClass output, boolean isPublic) {
+
+ ObjectModelJavaModifier visibility = isPublic ?
+ ObjectModelJavaModifier.PUBLIC :
+ ObjectModelJavaModifier.PROTECTED;
+
+ ObjectModelOperation constructor = addConstructor(output, visibility);
addParameter(constructor, HibernateProvider.class, "hibernateProvider");
addParameter(constructor, TopiaListenableSupport.class, "listenableSupport");
addParameter(constructor, TopiaIdFactory.class, "topiaIdFactory");
@@ -272,8 +162,6 @@
super(hibernateProvider, listenableSupport, topiaIdFactory, sessionRegistry);
}*/
);
-
- return output;
}
}
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java 2013-12-19 21:22:20 UTC (rev 2941)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java 2013-12-19 21:23:21 UTC (rev 2942)
@@ -205,6 +205,10 @@
return input.getName() + "TopiaDao";
}
+ public static String getContracDaoName(ObjectModelClass input) {
+ return input.getName() + "Dao";
+ }
+
@Deprecated
public static String getLegacyDaoName(ObjectModelClass input) {
return input.getName() + "DAO";
@@ -222,11 +226,6 @@
return input.getPackageName() + "." + getConcreteDaoName(input);
}
-// @Deprecated
-// public static String getLegacyDaoFqn(ObjectModelClass input) {
-// return input.getPackageName() + "." + getLegacyDaoName(input);
-// }
-
public static String getEntityPackage(ObjectModelTransformerToJava transformer,
ObjectModel model,
ObjectModelClassifier input) {
@@ -487,7 +486,7 @@
String attributes = "";
Collection<ObjectModelAttribute> attributeCollection;
attributeCollection = getElementsWithStereotype(clazz.getAttributes(),
- TopiaStereoTypes.STEREOTYPE_PRIMARYKAY);
+ TopiaStereoTypes.STEREOTYPE_PRIMARY_KEY);
for (ObjectModelAttribute attr : attributeCollection) {
attributes += attr.getType();
if (includeName) {
@@ -1017,12 +1016,14 @@
* Obtain the class to use as abstract dao.
* <p/>
* It will look after a tag value {@link TopiaTagValues#TAG_DAO_IMPLEMENTATION} in model
- * and if not found will use the default value which is {@link TopiaDAOImpl}.
+ * and if not found will use the default value which is {@link AbstractTopiaDao}.
*
* @param model the model which could contains
* @return the type of the abstract dao to use
* @since 2.5
+ * @deprecated since 3.0-alpha-8, replaced by {@link #getDaoSuperClassTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static Class<?> getDAOImplementation(ObjectModel model) {
String daoImpl = getDaoImplementationTagValue(model);
Class<?> result;
@@ -1178,7 +1179,6 @@
return hasEntityStereotype(classifier) && !classifier.isEnum();
}
-
/**
* Check if the given attribute has the
* {@link TopiaStereoTypes#STEREOTYPE_ENTITY} stereotype.
@@ -1246,15 +1246,15 @@
/**
* Check if the given attribute has the
- * {@link TopiaStereoTypes#STEREOTYPE_PRIMARYKAY} stereotype.
+ * {@link TopiaStereoTypes#STEREOTYPE_PRIMARY_KEY} stereotype.
*
* @param attribute attribute to test
* @return {@code true} if stereotype was found, {@code false otherwise}
- * @see TopiaStereoTypes#STEREOTYPE_PRIMARYKAY
+ * @see TopiaStereoTypes#STEREOTYPE_PRIMARY_KEY
* @since 2.5
*/
public static boolean hasPrimaryKeyStereotype(ObjectModelAttribute attribute) {
- return attribute.hasStereotype(TopiaStereoTypes.STEREOTYPE_PRIMARYKAY);
+ return attribute.hasStereotype(TopiaStereoTypes.STEREOTYPE_PRIMARY_KEY);
}
/**
@@ -1488,76 +1488,6 @@
}
/**
- * Tests if the given classifier own at least one security tag value.
- *
- * @param classifier the classifier to test
- * @return {@code true} if there is at least one security tag value on the given class
- * @since 2.5
- */
- public static boolean isClassWithSecurity(ObjectModelClassifier classifier) {
- return StringUtils.isNotEmpty(getSecurityCreateTagValue(classifier)) ||
- StringUtils.isNotEmpty(getSecurityLoadTagValue(classifier)) ||
- StringUtils.isNotEmpty(getSecurityUpdateTagValue(classifier)) ||
- StringUtils.isNotEmpty(getSecurityDeleteTagValue(classifier));
- }
-
- /**
- * Obtain the value of the {@link TopiaTagValues#TAG_SECURITY_CREATE}
- * tag value on the given classifier.
- *
- * @param classifier classifier to seek
- * @return the none empty value of the found tag value or {@code null} if not found nor empty.
- * @see TopiaTagValues#TAG_SECURITY_CREATE
- * @since 2.5
- */
- public static String getSecurityCreateTagValue(ObjectModelClassifier classifier) {
- String value = findTagValue(TopiaTagValues.TAG_SECURITY_CREATE, classifier, null);
- return value;
- }
-
- /**
- * Obtain the value of the {@link TopiaTagValues#TAG_SECURITY_DELETE}
- * tag value on the given classifier.
- *
- * @param classifier classifier to seek
- * @return the none empty value of the found tag value or {@code null} if not found nor empty.
- * @see TopiaTagValues#TAG_SECURITY_DELETE
- * @since 2.5
- */
- public static String getSecurityDeleteTagValue(ObjectModelClassifier classifier) {
- String value = findTagValue(TopiaTagValues.TAG_SECURITY_DELETE, classifier, null);
- return value;
- }
-
- /**
- * Obtain the value of the {@link TopiaTagValues#TAG_SECURITY_LOAD}
- * tag value on the given classifier.
- *
- * @param classifier classifier to seek
- * @return the none empty value of the found tag value or {@code null} if not found nor empty.
- * @see TopiaTagValues#TAG_SECURITY_LOAD
- * @since 2.5
- */
- public static String getSecurityLoadTagValue(ObjectModelClassifier classifier) {
- String value = findTagValue(TopiaTagValues.TAG_SECURITY_LOAD, classifier, null);
- return value;
- }
-
- /**
- * Obtain the value of the {@link TopiaTagValues#TAG_SECURITY_UPDATE}
- * tag value on the given classifier.
- *
- * @param classifier classifier to seek
- * @return the none empty value of the found tag value or {@code null} if not found nor empty.
- * @see TopiaTagValues#TAG_SECURITY_UPDATE
- * @since 2.5
- */
- public static String getSecurityUpdateTagValue(ObjectModelClassifier classifier) {
- String value = findTagValue(TopiaTagValues.TAG_SECURITY_UPDATE, classifier, null);
- return value;
- }
-
- /**
* Obtain the value of the {@link TopiaTagValues#TAG_NOT_GENERATE_TO_STRING}
* tag value on the given class.
*
@@ -1659,6 +1589,7 @@
return value;
}
+ //TODO Javadoc
public static boolean hasUseEnumerationNameTagValue(ObjectModelAttribute attr, ObjectModel model) {
String value = findTagValue(TopiaTagValues.TAG_USE_ENUMERATION_NAME, attr, model);
return Boolean.parseBoolean(value);
@@ -1680,5 +1611,61 @@
return generate;
}
+ /**
+ * Obtains the value of the {@link TopiaTagValues#TAG_PERSISTENCE_CONTEXT_SUPER_CLASS}
+ * tag value on the model.
+ *
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see TopiaTagValues#TAG_PERSISTENCE_CONTEXT_SUPER_CLASS
+ * @since 3.0
+ */
+ public static String getPersistenceContextSuperClassTagValue(ObjectModel model) {
+ String value = findTagValue(TopiaTagValues.TAG_PERSISTENCE_CONTEXT_SUPER_CLASS, null, model);
+ return value;
+ }
+
+ /**
+ * Obtains the value of the {@link TopiaTagValues#TAG_APPLICATION_CONTEXT_SUPER_CLASS}
+ * tag value on the model.
+ *
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see TopiaTagValues#TAG_APPLICATION_CONTEXT_SUPER_CLASS
+ * @since 3.0
+ */
+ public static String getApplicationContextSuperClassTagValue(ObjectModel model) {
+ String value = findTagValue(TopiaTagValues.TAG_APPLICATION_CONTEXT_SUPER_CLASS, null, model);
+ return value;
+ }
+
+ /**
+ * Obtains the value of the {@link TopiaTagValues#TAG_DAO_SUPER_CLASS}
+ * tag value on the given classifier or on the model.
+ *
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see TopiaTagValues#TAG_DAO_SUPER_CLASS
+ * @since 3.0
+ */
+ public static String getDaoSuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = findTagValue(TopiaTagValues.TAG_DAO_SUPER_CLASS, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtains the value of the {@link TopiaTagValues#TAG_ENTITY_SUPER_CLASS}
+ * tag value on the given classifier or on the model.
+ *
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see TopiaTagValues#TAG_ENTITY_SUPER_CLASS
+ * @since 3.0
+ */
+ public static String getEntitySuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = findTagValue(TopiaTagValues.TAG_ENTITY_SUPER_CLASS, classifier, model);
+ return value;
+ }
+
} // TopiaGeneratorUtil
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java 2013-12-19 21:22:20 UTC (rev 2941)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java 2013-12-19 21:23:21 UTC (rev 2942)
@@ -84,5 +84,5 @@
*/
@StereotypeDefinition(target = ObjectModelAttribute.class,
documentation = "To specify that an attribute is part of a primary key (Hibernate mapping)")
- String STEREOTYPE_PRIMARYKAY = "primaryKey";
+ String STEREOTYPE_PRIMARY_KEY = "primaryKey";
}
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java 2013-12-19 21:22:20 UTC (rev 2941)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java 2013-12-19 21:23:21 UTC (rev 2942)
@@ -30,7 +30,13 @@
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelElement;
+import org.nuiton.topia.AbstractTopiaApplicationContext;
+import org.nuiton.topia.AbstractTopiaPersistenceContext;
import org.nuiton.topia.TopiaDaoSupplier;
+import org.nuiton.topia.persistence.AbstractTopiaDao;
+import org.nuiton.topia.persistence.TopiaDao;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.persistence.TopiaEntityAbstract;
import org.nuiton.topia.persistence.TopiaEntityContextable;
import static org.nuiton.eugene.ModelPropertiesUtil.TagValueDefinition;
@@ -233,46 +239,6 @@
String TAG_INHERITANCE_STRATEGY = "inheritanceStrategy";
/**
- * Tag pour spécifier le permissions à la création.
- *
- * @see TopiaGeneratorUtil#getSecurityCreateTagValue(ObjectModelClassifier)
- * @since 2.5
- */
- @TagValueDefinition(target = {ObjectModelClassifier.class},
- documentation = "Sets the create permission on an entity")
- String TAG_SECURITY_CREATE = "securityCreate";
-
- /**
- * Tag pour spécifier le permissions au chargement.
- *
- * @see TopiaGeneratorUtil#getSecurityLoadTagValue(ObjectModelClassifier)
- * @since 2.5
- */
- @TagValueDefinition(target = {ObjectModelClassifier.class},
- documentation = "Sets the load permission on an entity")
- String TAG_SECURITY_LOAD = "securityLoad";
-
- /**
- * Tag pour spécifier le permissions à la mise à jour.
- *
- * @see TopiaGeneratorUtil#getSecurityUpdateTagValue(ObjectModelClassifier)
- * @since 2.5
- */
- @TagValueDefinition(target = {ObjectModelClassifier.class},
- documentation = "Sets the update permission on an entity")
- String TAG_SECURITY_UPDATE = "securityUpdate";
-
- /**
- * Tag pour spécifier le permissions à la suppression.
- *
- * @see TopiaGeneratorUtil#getSecurityDeleteTagValue(ObjectModelClassifier)
- * @since 2.5
- */
- @TagValueDefinition(target = {ObjectModelClassifier.class},
- documentation = "sets the delete permission on an entity")
- String TAG_SECURITY_DELETE = "securityDelete";
-
- /**
* Tag pour specifier de ne pas generer la methode toString.
*
* @see TopiaGeneratorUtil#getNotGenerateToStringTagValue(ObjectModelClassifier, ObjectModel)
@@ -361,4 +327,57 @@
@TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "Add a \"id\" property with its getter/setter on a DTO.")
String TAG_GENERATE_TOPIA_ID_IN_DTO = "generateDTOTopiaId";
+
+
+ /**
+ * Tag to specify a super class to use instead of {@link AbstractTopiaPersistenceContext}.
+ * <p/>
+ * <strong>Note:</strong> the class must implements {@link AbstractTopiaPersistenceContext}.
+ *
+ * @see AbstractTopiaPersistenceContext
+ * @see TopiaGeneratorUtil#getPersistenceContextSuperClassTagValue(ObjectModel)}
+ * @since 3.0
+ */
+ @TagValueDefinition(target = {ObjectModel.class},
+ documentation = "Change the super class to use when generating PersistenceContext.")
+ String TAG_PERSISTENCE_CONTEXT_SUPER_CLASS = "persistenceContextSuperClass";
+
+ /**
+ * Tag to specify a super class to use instead of {@link AbstractTopiaApplicationContext}.
+ * <p/>
+ * <strong>Note:</strong> the class must implements {@link AbstractTopiaApplicationContext}.
+ *
+ * @see AbstractTopiaApplicationContext
+ * @see TopiaGeneratorUtil#getApplicationContextSuperClassTagValue(ObjectModel)}
+ * @since 3.0
+ */
+ @TagValueDefinition(target = {ObjectModel.class},
+ documentation = "Change the super class to use when generating ApplicationContext.")
+ String TAG_APPLICATION_CONTEXT_SUPER_CLASS = "applicationContextSuperClass";
+
+ /**
+ * Tag to specify a super class to use instead of {@link AbstractTopiaDao}.
+ * <p/>
+ * <strong>Note:</strong> the class must implements {@link TopiaDao}.
+ *
+ * @see AbstractTopiaDao
+ * @see TopiaGeneratorUtil#getDaoSuperClassTagValue(ObjectModelClassifier, ObjectModel)}
+ * @since 3.0
+ */
+ @TagValueDefinition(target = {ObjectModelClassifier.class, ObjectModel.class},
+ documentation = "Change the super class to use when generating dao.")
+ String TAG_DAO_SUPER_CLASS= "daoSuperClass";
+
+ /**
+ * Tag to specify a super class to use instead of {@link TopiaEntityAbstract}.
+ * <p/>
+ * <strong>Note:</strong> the class must implements {@link TopiaEntity}.
+ *
+ * @see TopiaEntity
+ * @see TopiaGeneratorUtil#getEntitySuperClassTagValue(ObjectModelClassifier, ObjectModel)}
+ * @since 3.0
+ */
+ @TagValueDefinition(target = {ObjectModelClassifier.class, ObjectModel.class},
+ documentation = "Change the super class to use when generating Entity.")
+ String TAG_ENTITY_SUPER_CLASS= "entitySuperClass";
}
1
0
r2941 - trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence
by tchemitï¼ users.nuiton.org 19 Dec '13
by tchemitï¼ users.nuiton.org 19 Dec '13
19 Dec '13
Author: tchemit
Date: 2013-12-19 22:22:20 +0100 (Thu, 19 Dec 2013)
New Revision: 2941
Url: http://nuiton.org/projects/topia/repository/revisions/2941
Log:
restore protected visibility on some dao methods
Modified:
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 22:54:50 UTC (rev 2940)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-19 21:22:20 UTC (rev 2941)
@@ -149,7 +149,7 @@
return newFromClause(null);
}
- public String newFromClause(String alias) {
+ protected String newFromClause(String alias) {
String hql = "from " + getTopiaEntityEnum().getImplementationFQN();
if (StringUtils.isNotBlank(alias)) {
hql += " " + alias;
@@ -354,7 +354,7 @@
return result;
}
- public TopiaQueryBuilderRunQueryStep<E> forHql(String hql, Map<String, Object> hqlParameters) {
+ protected TopiaQueryBuilderRunQueryStep<E> forHql(String hql, Map<String, Object> hqlParameters) {
TopiaQueryBuilderRunQueryStep<E> result = new TopiaQueryBuilderRunQueryStep<E>(this, hql, hqlParameters);
return result;
}
1
0
r2940 - trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence
by tchemitï¼ users.nuiton.org 18 Dec '13
by tchemitï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: tchemit
Date: 2013-12-18 23:54:50 +0100 (Wed, 18 Dec 2013)
New Revision: 2940
Url: http://nuiton.org/projects/topia/repository/revisions/2940
Log:
add findAllLazy(int batchsize) + open some api on AbstractTopiaDao
Modified:
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 22:52:14 UTC (rev 2939)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 22:54:50 UTC (rev 2940)
@@ -149,7 +149,7 @@
return newFromClause(null);
}
- protected String newFromClause(String alias) {
+ public String newFromClause(String alias) {
String hql = "from " + getTopiaEntityEnum().getImplementationFQN();
if (StringUtils.isNotBlank(alias)) {
hql += " " + alias;
@@ -354,7 +354,7 @@
return result;
}
- protected TopiaQueryBuilderRunQueryStep<E> forHql(String hql, Map<String, Object> hqlParameters) {
+ public TopiaQueryBuilderRunQueryStep<E> forHql(String hql, Map<String, Object> hqlParameters) {
TopiaQueryBuilderRunQueryStep<E> result = new TopiaQueryBuilderRunQueryStep<E>(this, hql, hqlParameters);
return result;
}
@@ -504,7 +504,7 @@
return result;
}
- protected <K> List<K> find(String hql, Map<String, Object> hqlParameters, TopiaPagerBean pager) {
+ public <K> List<K> find(String hql, Map<String, Object> hqlParameters, TopiaPagerBean pager) {
Preconditions.checkNotNull(hql);
Preconditions.checkNotNull(hqlParameters);
Preconditions.checkNotNull(pager);
@@ -533,6 +533,12 @@
protected <K> Iterable<K> findAllLazy(String hql, Map<String, Object> hqlParameters) {
+ Iterable<K> result= findAllLazy(hql, hqlParameters, batchSize);
+ return result;
+ }
+
+ protected <K> Iterable<K> findAllLazy(String hql, Map<String, Object> hqlParameters, int batchSize) {
+
Preconditions.checkNotNull(hql);
Preconditions.checkNotNull(hqlParameters);
@@ -870,6 +876,11 @@
}
@Override
+ public Iterable<E> findAllLazy(int batchSize) {
+ return getNextStep().findAllLazy(batchSize);
+ }
+
+ @Override
public long count() {
return getNextStep().count();
}
@@ -979,6 +990,11 @@
}
@Override
+ public Iterable<E> findAllLazy(int batchSize) {
+ return topiaDAO.findAllLazy(hql, hqlParameters, batchSize);
+ }
+
+ @Override
public List<E> find(int startIndex, int endIndex) {
return topiaDAO.find(hql, hqlParameters, startIndex, endIndex);
}
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java 2013-12-18 22:52:14 UTC (rev 2939)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java 2013-12-18 22:54:50 UTC (rev 2940)
@@ -119,6 +119,8 @@
Iterable<E> findAllLazy();
+ Iterable<E> findAllLazy(int batchSize);
+
List<E> find(int startIndex, int endIndex);
List<E> find(TopiaPagerBean pager);
1
0
r2939 - in trunk: topia-persistence/src/main/java/org/nuiton/topia topia-templates/src/main/java/org/nuiton/topia/templates
by tchemitï¼ users.nuiton.org 18 Dec '13
by tchemitï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: tchemit
Date: 2013-12-18 23:52:14 +0100 (Wed, 18 Dec 2013)
New Revision: 2939
Url: http://nuiton.org/projects/topia/repository/revisions/2939
Log:
improve AbstractApplicationContext and his transformer
Modified:
trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java 2013-12-18 22:51:39 UTC (rev 2938)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/AbstractTopiaApplicationContext.java 2013-12-18 22:52:14 UTC (rev 2939)
@@ -107,6 +107,16 @@
protected abstract Class<? extends TopiaEntity>[] getImplementationClasses();
+ public abstract String getModelVersion() ;
+
+ public abstract String getModelName() ;
+
+ public abstract <T extends TopiaEntity> Class<T> getContractClass(Class<T> klass);
+
+ public abstract <T extends TopiaEntity> Class<T> getImplementationClass(Class<T> klass);
+
+ public abstract Class<? extends TopiaEntity>[] getContractClasses();
+
protected String getImplementationClassesAsString() {
StringBuilder buffer = new StringBuilder();
for (Class<? extends TopiaEntity> aClass : getImplementationClasses()) {
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java 2013-12-18 22:51:39 UTC (rev 2938)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java 2013-12-18 22:52:14 UTC (rev 2939)
@@ -176,6 +176,7 @@
// getModelVersion method
String modelVersion = model.getVersion();
op = addOperation(output, "getModelVersion", "String", ObjectModelJavaModifier.PUBLIC);
+ addAnnotation(output, op, Override.class);
setOperationBody(op, ""
/*{
return "<%=modelVersion%>";
@@ -184,6 +185,7 @@
// getModelName method
op = addOperation(output, "getModelName", "String", ObjectModelJavaModifier.PUBLIC);
+ addAnnotation(output, op, Override.class);
setOperationBody(op, ""
/*{
return "<%=modelName%>";
@@ -192,6 +194,7 @@
// getContractClass method
op = addOperation(output, "getContractClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC);
+ addAnnotation(output, op, Override.class);
addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
@@ -202,6 +205,7 @@
// getImplementationClass method
op = addOperation(output, "getImplementationClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC);
+ addAnnotation(output, op, Override.class);
addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
@@ -212,6 +216,7 @@
// getContractClasses method
op = addOperation(output, "getContractClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC);
+ addAnnotation(output, op, Override.class);
setOperationBody(op, ""
/*{
<%=entityEnumName%>[] values = <%=entityEnumName%>.values();
@@ -225,6 +230,7 @@
// getImplementationClasses method
op = addOperation(output, "getImplementationClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC);
+ addAnnotation(output, op, Override.class);
setOperationBody(op, ""
/*{
<%=entityEnumName%>[] values = <%=entityEnumName%>.values();
1
0
r2938 - trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration
by tchemitï¼ users.nuiton.org 18 Dec '13
by tchemitï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: tchemit
Date: 2013-12-18 23:51:39 +0100 (Wed, 18 Dec 2013)
New Revision: 2938
Url: http://nuiton.org/projects/topia/repository/revisions/2938
Log:
fixes #2973: Making migration service works again
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/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
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-12-18 22:50:15 UTC (rev 2937)
+++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/AbstractTopiaMigrationCallback.java 2013-12-18 22:51:39 UTC (rev 2938)
@@ -28,7 +28,6 @@
import org.apache.commons.logging.LogFactory;
import org.hibernate.jdbc.Work;
import org.nuiton.topia.AbstractTopiaApplicationContext;
-import org.nuiton.topia.AbstractTopiaPersistenceContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.TopiaHibernateSupport;
import org.nuiton.topia.TopiaPersistenceContext;
@@ -40,8 +39,6 @@
import java.sql.SQLException;
import java.util.List;
-import com.google.common.base.Preconditions;
-
/**
* Abstract migration callback.
*
@@ -57,9 +54,6 @@
/** @return the available versions from the call back */
public abstract Version[] getAvailableVersions();
- /** @return the current application version (says the version to use) */
- public abstract Version getApplicationVersion();
-
/**
* Hook to ask user if migration can be performed.
*
@@ -70,8 +64,10 @@
public abstract boolean askUser(Version dbVersion,
List<Version> versions);
+ protected abstract TopiaHibernateSupport getHibernateSupport(TopiaPersistenceContext tx);
+
protected abstract void migrateForVersion(Version version,
- TopiaHibernateSupport tx,
+ TopiaPersistenceContext tx,
boolean showSql,
boolean showProgression) throws Exception;
@@ -88,12 +84,12 @@
* <p/>
* Note: pour chaque version a appliquer, on ouvre une nouvelle transaction.
*
- * @param applicationContext topia context de la transaction en cours
- * @param dbVersion database version
- * @param showSql drapeau pour afficher les requete sql
- * @param showProgression drapeau pour afficher la progression
- * @param versions all versions knwon by service @return migration a
- * ggrement
+ * @param applicationContext topia context de la transaction en cours
+ * @param dbVersion database version
+ * @param showSql drapeau pour afficher les requete sql
+ * @param showProgression drapeau pour afficher la progression
+ * @param versions all versions knwon by service @return migration a
+ * ggrement
* @return {@code true} si la migration est accepté, {@code false} autrement.
*/
public boolean doMigration(AbstractTopiaApplicationContext applicationContext,
@@ -103,56 +99,49 @@
List<Version> versions) {
boolean doMigrate = askUser(dbVersion, versions);
- if (!doMigrate) {
- // l'utilisateur a refuse la migration
- return false;
- }
+ if (doMigrate) {
- for (Version v : versions) {
- // ouverture d'une connexion direct JDBC sur la base
- try {
+ for (Version v : versions) {
+ // ouverture d'une connexion direct JDBC sur la base
+ try {
- TopiaPersistenceContext persistenceContext = applicationContext.newPersistenceContext();
- TopiaHibernateSupport hibernateSupport = null;
- if (persistenceContext instanceof AbstractTopiaPersistenceContext) {
- hibernateSupport = ((AbstractTopiaPersistenceContext)persistenceContext).getHibernateSupport();
- }
- Preconditions.checkState(hibernateSupport != null);
+ TopiaPersistenceContext persistenceContext =
+ applicationContext.newPersistenceContext();
+ try {
- try {
+ log.info(String.format("Start migration to version %s", v));
- log.info(String.format("Start migration to version %s", v));
+ migrateForVersion(v, persistenceContext, showSql, showProgression);
- migrateForVersion(v, hibernateSupport, showSql, showProgression);
+ // commit des modifs
+ persistenceContext.commit();
- // commit des modifs
- persistenceContext.commit();
+ } catch (Exception eee) {
+ // en cas d'erreur
+ log.error("Could not migrate database", eee);
+ // rollback du travail en cours
+ persistenceContext.rollback();
+ // propagation de l'erreur
+ throw eee;
+ } finally {
+ // close database connexion
+ if (persistenceContext != null) {
+ persistenceContext.closeContext();
+ }
+ }
} catch (Exception eee) {
- // en cas d'erreur
- log.error("Could not migrate database", eee);
- // rollback du travail en cours
- persistenceContext.rollback();
- // propagation de l'erreur
- throw eee;
- } finally {
- // close database connexion
- if (persistenceContext != null) {
- persistenceContext.closeContext();
- }
+ log.error("Error lors de la tentative de migration", eee);
+ doMigrate = false;
+ // toute erreur arrête la mgration
+ break;
}
-
- } catch (Exception eee) {
- log.error("Error lors de la tentative de migration", eee);
- doMigrate = false;
- // toute erreur arrête la mgration
- break;
}
}
return doMigrate;
}
- public void executeSQL(TopiaHibernateSupport tx, String... sqls)
+ public void executeSQL(TopiaPersistenceContext tx, String... sqls)
throws TopiaException {
executeSQL(tx, false, false, sqls);
}
@@ -160,18 +149,18 @@
/**
* Executes the given {@code sqls} requests.
*
- * @param tx the session
* @param showSql flag to see sql requests
* @param showProgression flag to see progession on console
* @param sqls requests to execute
* @throws TopiaException if any pb
* @since 2.3.0
*/
- public void executeSQL(TopiaHibernateSupport tx,
+ public void executeSQL(TopiaPersistenceContext tx,
final boolean showSql,
final boolean showProgression,
final String... sqls) throws TopiaException {
+ TopiaHibernateSupport hibernateSupport = getHibernateSupport(tx);
if (log.isInfoEnabled()) {
log.info(String.format("Will execute %1$s requests...", sqls.length));
@@ -189,7 +178,7 @@
"--------------------------------------------------------------------------------\n"
);
}
- tx.getHibernateSession().doWork(new Work() {
+ hibernateSupport.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-12-18 22:50:15 UTC (rev 2937)
+++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClass.java 2013-12-18 22:51:39 UTC (rev 2938)
@@ -25,7 +25,7 @@
package org.nuiton.topia.migration;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.TopiaHibernateSupport;
+import org.nuiton.topia.TopiaPersistenceContext;
import org.nuiton.util.ObjectUtil;
import org.nuiton.util.Version;
@@ -67,7 +67,7 @@
@Override
protected void migrateForVersion(Version version,
- TopiaHibernateSupport tx,
+ TopiaPersistenceContext tx,
boolean showSql,
boolean showProgression) throws Exception {
@@ -100,7 +100,7 @@
}
- protected String[] prepareMigration(TopiaHibernateSupport tx,
+ protected String[] prepareMigration(TopiaPersistenceContext tx,
boolean showSql,
boolean showProgression) throws TopiaException {
@@ -111,17 +111,17 @@
return queries.toArray(new String[queries.size()]);
}
- protected abstract void prepareMigrationScript(TopiaHibernateSupport tx,
+ protected abstract void prepareMigrationScript(TopiaPersistenceContext tx,
List<String> queries,
boolean showSql,
boolean showProgression) throws TopiaException;
- public void executeSQL(TopiaHibernateSupport tx,
+ public void executeSQL(TopiaPersistenceContext tx,
String... sqls) throws TopiaException {
callBack.executeSQL(tx, sqls);
}
- public void executeSQL(TopiaHibernateSupport tx,
+ public void executeSQL(TopiaPersistenceContext 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-12-18 22:50:15 UTC (rev 2937)
+++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByClassNG.java 2013-12-18 22:51:39 UTC (rev 2938)
@@ -27,7 +27,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.TopiaHibernateSupport;
+import org.nuiton.topia.TopiaPersistenceContext;
import org.nuiton.util.Version;
import org.nuiton.util.VersionUtil;
@@ -73,7 +73,7 @@
@Override
protected void migrateForVersion(Version version,
- TopiaHibernateSupport tx,
+ TopiaPersistenceContext tx,
boolean showSql,
boolean showProgression) throws Exception {
@@ -103,7 +103,7 @@
this.callBack = callBack;
}
- protected String[] prepareMigration(TopiaHibernateSupport tx,
+ protected String[] prepareMigration(TopiaPersistenceContext tx,
boolean showSql,
boolean showProgression) throws TopiaException {
@@ -114,17 +114,17 @@
return queries.toArray(new String[queries.size()]);
}
- protected abstract void prepareMigrationScript(TopiaHibernateSupport tx,
+ protected abstract void prepareMigrationScript(TopiaPersistenceContext tx,
List<String> queries,
boolean showSql,
boolean showProgression) throws TopiaException;
- public void executeSQL(TopiaHibernateSupport tx,
+ public void executeSQL(TopiaPersistenceContext tx,
String... sqls) throws TopiaException {
callBack.executeSQL(tx, sqls);
}
- public void executeSQL(TopiaHibernateSupport tx,
+ public void executeSQL(TopiaPersistenceContext tx,
boolean showSql,
boolean showProgression,
String... sqls) throws TopiaException {
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-12-18 22:50:15 UTC (rev 2937)
+++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationCallbackByMethod.java 2013-12-18 22:51:39 UTC (rev 2938)
@@ -26,7 +26,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.TopiaHibernateSupport;
+import org.nuiton.topia.TopiaPersistenceContext;
import org.nuiton.util.Version;
import java.lang.reflect.Method;
@@ -51,14 +51,14 @@
@Override
protected void migrateForVersion(Version version,
- TopiaHibernateSupport tx,
+ TopiaPersistenceContext tx,
boolean showSql,
boolean showProgression) throws Exception {
String methodName = "migrateTo_" + version.getValidName();
Method m = getClass().getMethod(methodName,
- TopiaHibernateSupport.class,
+ TopiaPersistenceContext.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-12-18 22:50:15 UTC (rev 2937)
+++ trunk/topia-service-migration/src/main/java/org/nuiton/topia/migration/TopiaMigrationEngine.java 2013-12-18 22:51:39 UTC (rev 2938)
@@ -202,7 +202,8 @@
public boolean preInit(AbstractTopiaApplicationContext context) {
applicationContext = context;
- Properties config = null; //applicationContext.getConfig();
+ Properties config = new Properties();
+ config.putAll(applicationContext.getConfiguration());
String callbackStr = getSafeParameter(config, MIGRATION_CALLBACK);
if (log.isDebugEnabled()) {
@@ -299,7 +300,7 @@
detectDbVersion();
- Version version = callback.getApplicationVersion();
+ Version version = getApplicationVersion();
log.info(String.format("Starting Topia Migration Service - Application version \\: %1$s, Database version \\: %2$s",
version.getVersion(),
@@ -424,7 +425,7 @@
checkInit();
- Version version = callback.getApplicationVersion();
+ Version version = getApplicationVersion();
detectDbVersion();
@@ -504,6 +505,10 @@
dbVersion = version;
}
+ protected Version getApplicationVersion() {
+ return VersionUtil.valueOf(applicationContext.getModelVersion());
+ }
+
/**
* Recupere depuis la base les états internes du service :
* <p/>
1
0
r2937 - in trunk/topia-templates/src/main/resources: . META-INF META-INF/services
by tchemitï¼ users.nuiton.org 18 Dec '13
by tchemitï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: tchemit
Date: 2013-12-18 23:50:15 +0100 (Wed, 18 Dec 2013)
New Revision: 2937
Url: http://nuiton.org/projects/topia/repository/revisions/2937
Log:
fixes #2972: ToPIA tagValues and stereotypes are no more found wxhile generating a model
Added:
trunk/topia-templates/src/main/resources/META-INF/
trunk/topia-templates/src/main/resources/META-INF/services/
trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider
Removed:
trunk/topia-templates/src/main/resources/META-INF.services/
trunk/topia-templates/src/main/resources/META-INF/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider
Deleted: trunk/topia-templates/src/main/resources/META-INF/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider
===================================================================
--- trunk/topia-templates/src/main/resources/META-INF.services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2013-12-18 16:22:42 UTC (rev 2933)
+++ trunk/topia-templates/src/main/resources/META-INF/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2013-12-18 22:50:15 UTC (rev 2937)
@@ -1 +0,0 @@
-org.nuiton.topia.templates.TopiaGeneratorUtil$TopiaModelPropertiesProvider
\ No newline at end of file
Copied: trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider (from rev 2933, trunk/topia-templates/src/main/resources/META-INF.services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider)
===================================================================
--- trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider (rev 0)
+++ trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2013-12-18 22:50:15 UTC (rev 2937)
@@ -0,0 +1 @@
+org.nuiton.topia.templates.TopiaGeneratorUtil$TopiaModelPropertiesProvider
\ No newline at end of file
1
0
r2936 - trunk/topia-templates/src/main/java/org/nuiton/topia/templates
by tchemitï¼ users.nuiton.org 18 Dec '13
by tchemitï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: tchemit
Date: 2013-12-18 23:47:03 +0100 (Wed, 18 Dec 2013)
New Revision: 2936
Url: http://nuiton.org/projects/topia/repository/revisions/2936
Log:
fix javadoc
Modified:
trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java
Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java
===================================================================
--- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java 2013-12-18 17:43:56 UTC (rev 2935)
+++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java 2013-12-18 22:47:03 UTC (rev 2936)
@@ -30,6 +30,7 @@
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelElement;
+import org.nuiton.topia.TopiaDaoSupplier;
import org.nuiton.topia.persistence.TopiaEntityContextable;
import static org.nuiton.eugene.ModelPropertiesUtil.TagValueDefinition;
@@ -55,7 +56,7 @@
/**
* Tag pour que les entités etendent {@link TopiaEntityContextable} et
- * se fasse injecter le {@link TopiaContext} par rapport aux autres
+ * se fasse injecter le {@link TopiaDaoSupplier} par rapport aux autres
* entités qui ne l'ont pas.
*
* @since 2.5.3
1
0
r2935 - trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence
by blenyï¼ users.nuiton.org 18 Dec '13
by blenyï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: bleny
Date: 2013-12-18 18:43:56 +0100 (Wed, 18 Dec 2013)
New Revision: 2935
Url: http://nuiton.org/projects/topia/repository/revisions/2935
Log:
add some arguments checks in HqlAndParametersBuilder, add missing methods on TopiaQueryBuilderAddCriteriaStep
Modified:
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 16:40:25 UTC (rev 2934)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 17:43:56 UTC (rev 2935)
@@ -785,6 +785,18 @@
return this;
}
+ @Override
+ public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addTopiaIdNotEquals(String property, String topiaId) {
+ hqlAndParametersBuilder.addTopiaIdNotEquals(property, topiaId);
+ return this;
+ }
+
+ @Override
+ public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addTopiaIdNotIn(String property, Iterable<String> topiaIds) {
+ hqlAndParametersBuilder.addTopiaIdNotIn(property, topiaIds);
+ return this;
+ }
+
// shortcuts to next step
@Override
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2013-12-18 16:40:25 UTC (rev 2934)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2013-12-18 17:43:56 UTC (rev 2935)
@@ -66,38 +66,18 @@
this.entityClass = entityClass;
}
- public Set<String> getWhereClauses() {
- return whereClauses;
- }
-
- public void setWhereClauses(Set<String> whereClauses) {
- this.whereClauses = whereClauses;
- }
-
public void addNull(String property) {
+ Preconditions.checkArgument(StringUtils.isNotBlank(property));
whereClauses.add(alias + "." + property + " is null");
}
public void addNotNull(String property) {
+ Preconditions.checkArgument(StringUtils.isNotBlank(property));
whereClauses.add(alias + "." + property + " is not null");
}
- public void setParameters(Map<String, Object> parameters) {
- this.parameters = parameters;
- }
-
- public void setOrderByArguments(Set<String> orderByArguments) {
- this.orderByArguments = orderByArguments;
- }
-
- public void setOrderByArguments(String... orderByArguments) {
- Set<String> orderByArgumentsAsSet = Sets.newLinkedHashSet();
- orderByArgumentsAsSet.addAll(Arrays.asList(orderByArguments));
- this.orderByArguments = orderByArgumentsAsSet;
- }
-
public void addEquals(String property, Object value) {
- Preconditions.checkNotNull(property);
+ Preconditions.checkArgument(StringUtils.isNotEmpty(property));
// TODO brendan 02/10/13 do not use HQL parameters of Object are primitive types
// TODO brendan 02/10/13 if value is intanceof TopiaEntity, we can check type
if (value == null) {
@@ -109,7 +89,7 @@
}
public void addNotEquals(String property, Object value) {
- Preconditions.checkNotNull(property);
+ Preconditions.checkArgument(StringUtils.isNotEmpty(property));
// TODO brendan 02/10/13 do not use HQL parameters of Object are primitive types
// TODO brendan 02/10/13 if value is intanceof TopiaEntity, we can check type
if (value == null) {
@@ -133,7 +113,7 @@
* must not be in given collection
*/
protected void addInOrNotIn(String property, Iterable<?> values, boolean in) {
- Preconditions.checkNotNull(property);
+ Preconditions.checkArgument(StringUtils.isNotEmpty(property));
Preconditions.checkNotNull(values);
// TODO brendan 02/10/13 if value is intanceof TopiaEntity, we can check type
// TODO brendan 02/10/13 do not use HQL parameters of Object are primitive
@@ -189,9 +169,18 @@
}
public void addTopiaIdIn(String property, Iterable<String> topiaIds) {
- addIn(property + "." + TopiaEntity.PROPERTY_TOPIA_ID, (Iterable) topiaIds);
+ addIn(property + "." + TopiaEntity.PROPERTY_TOPIA_ID, topiaIds);
}
+ public void addTopiaIdNotEquals(String property, String topiaId) {
+ Preconditions.checkNotNull(topiaId);
+ addNotEquals(property + "." + TopiaEntity.PROPERTY_TOPIA_ID, topiaId);
+ }
+
+ public void addTopiaIdNotIn(String property, Iterable<String> topiaIds) {
+ addNotIn(property + "." + TopiaEntity.PROPERTY_TOPIA_ID, (Iterable) topiaIds);
+ }
+
public void addContains(String property, Object value) {
String hqlParameterName = putHqlParameterWithAvailableName(property, value);
whereClauses.add(":" + hqlParameterName + " in elements(" + alias + "." + property + ")");
@@ -215,6 +204,31 @@
parameters.putAll(hqlParameters);
}
+ public void setWhereClauses(Set<String> whereClauses) {
+ Preconditions.checkNotNull(whereClauses);
+ this.whereClauses = whereClauses;
+ }
+
+ public Set<String> getWhereClauses() {
+ return whereClauses;
+ }
+
+ public void setParameters(Map<String, Object> parameters) {
+ Preconditions.checkNotNull(parameters);
+ this.parameters = parameters;
+ }
+
+ public void setOrderByArguments(Set<String> orderByArguments) {
+ Preconditions.checkNotNull(orderByArguments);
+ this.orderByArguments = orderByArguments;
+ }
+
+ public void setOrderByArguments(String... orderByArguments) {
+ Set<String> orderByArgumentsAsSet = Sets.newLinkedHashSet();
+ orderByArgumentsAsSet.addAll(Arrays.asList(orderByArguments));
+ this.orderByArguments = orderByArgumentsAsSet;
+ }
+
public String getHql() {
StringBuilder hqlStringBuilder = new StringBuilder();
hqlStringBuilder.append("from ").append(entityClass.getCanonicalName()).append(" ").append(alias);
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java 2013-12-18 16:40:25 UTC (rev 2934)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java 2013-12-18 17:43:56 UTC (rev 2935)
@@ -103,6 +103,10 @@
TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addTopiaIdIn(String property, Iterable<String> topiaIds);
+ TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addTopiaIdNotEquals(String property, String topiaId);
+
+ TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addTopiaIdNotIn(String property, Iterable<String> topiaIds);
+
TopiaQueryBuilderRunQueryStep<E> setOrderByArguments(Set<String> orderByArguments);
TopiaQueryBuilderRunQueryStep<E> setOrderByArguments(String... orderByArguments);
1
0
r2934 - trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence
by tchemitï¼ users.nuiton.org 18 Dec '13
by tchemitï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: tchemit
Date: 2013-12-18 17:40:25 +0100 (Wed, 18 Dec 2013)
New Revision: 2934
Url: http://nuiton.org/projects/topia/repository/revisions/2934
Log:
fixes #2971: Add some methods to use pager in TopiaDao and query builder
Modified:
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 16:22:42 UTC (rev 2933)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 16:40:25 UTC (rev 2934)
@@ -188,6 +188,11 @@
public TopiaPagerBean newPager(String hql, Map<String, Object> params, int pageSize) {
TopiaPagerBean pager = new TopiaPagerBean();
+ if (hqlContainsOrderBy(hql)) {
+
+ // must remove the order by clause, otherwise some sql queries won't work.
+ hql = hql.substring(0, hql.toLowerCase().indexOf("order by"));
+ }
long count = count("SELECT COUNT(*) " + hql, params);
pager.setRecords(count);
pager.setPageSize(pageSize);
@@ -504,10 +509,13 @@
Preconditions.checkNotNull(hqlParameters);
Preconditions.checkNotNull(pager);
- boolean orderByClausePresent = hqlContainsOrderBy(hql);
- Preconditions.checkState(!orderByClausePresent, "An 'order by' clause was already found in hql, can't use the order of the pager");
+ if (StringUtils.isNotBlank(pager.getSortColumn())) {
- if (StringUtils.isNotBlank(pager.getSortColumn())) {
+ // can't have a order by clause in hql query
+ Preconditions.checkState(
+ !hqlContainsOrderBy(hql),
+ "An 'order by' clause was already found in hql, can't use the order of the pager");
+
hql += " order by " + pager.getSortColumn();
if (!pager.isSortAscendant()) {
hql += " desc";
1
0
r2933 - trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence
by tchemitï¼ users.nuiton.org 18 Dec '13
by tchemitï¼ users.nuiton.org 18 Dec '13
18 Dec '13
Author: tchemit
Date: 2013-12-18 17:22:42 +0100 (Wed, 18 Dec 2013)
New Revision: 2933
Url: http://nuiton.org/projects/topia/repository/revisions/2933
Log:
fixes #2971: Add some methods to use pager in TopiaDao and query builder
fixes some generics issues on query builder
Modified:
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 16:21:54 UTC (rev 2932)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/AbstractTopiaDao.java 2013-12-18 16:22:42 UTC (rev 2933)
@@ -80,6 +80,7 @@
* @param <E> the managed entity type
* @author bpoussin <poussin(a)codelutin.com>
* @author Arnaud Thimel <thimel(a)codelutin.com>
+ * @author Tony CHEMIT <chemit(a)codelutin.com>
*/
public abstract class AbstractTopiaDao<E extends TopiaEntity> implements TopiaDao<E> {
@@ -144,6 +145,10 @@
this.batchSize = batchSize;
}
+ protected String newFromClause() {
+ return newFromClause(null);
+ }
+
protected String newFromClause(String alias) {
String hql = "from " + getTopiaEntityEnum().getImplementationFQN();
if (StringUtils.isNotBlank(alias)) {
@@ -165,15 +170,32 @@
} catch (InstantiationException e) {
throw new TopiaException(
"Impossible de trouver ou d'instancier la classe "
- + implementation);
+ + implementation);
} catch (IllegalAccessException e) {
throw new TopiaException(
"Impossible de trouver ou d'instancier la classe "
- + implementation);
+ + implementation);
}
}
@Override
+ public TopiaPagerBean newPager(int pageSize) {
+ TopiaPagerBean pager = newPager(newFromClause(), null, pageSize);
+ return pager;
+ }
+
+ @Override
+ public TopiaPagerBean newPager(String hql, Map<String, Object> params, int pageSize) {
+ TopiaPagerBean pager = new TopiaPagerBean();
+
+ long count = count("SELECT COUNT(*) " + hql, params);
+ pager.setRecords(count);
+ pager.setPageSize(pageSize);
+ PagerBeanUtil.computeRecordIndexesAndPagesNumber(pager);
+ return pager;
+ }
+
+ @Override
public void addTopiaEntityListener(TopiaEntityListener listener) {
topiaListenableSupport.addTopiaEntityListener(getEntityClass(), listener);
}
@@ -328,7 +350,7 @@
}
protected TopiaQueryBuilderRunQueryStep<E> forHql(String hql, Map<String, Object> hqlParameters) {
- TopiaQueryBuilderRunQueryStep result = new TopiaQueryBuilderRunQueryStep(this, hql, hqlParameters);
+ TopiaQueryBuilderRunQueryStep<E> result = new TopiaQueryBuilderRunQueryStep<E>(this, hql, hqlParameters);
return result;
}
@@ -344,7 +366,7 @@
@Override
public TopiaQueryBuilderAddCriteriaStep<E> forProperties(Map<String, Object> properties) {
HqlAndParametersBuilder<E> hqlAndParametersBuilder = getHqlForProperties(properties);
- TopiaQueryBuilderAddCriteriaStep result = new TopiaQueryBuilderAddCriteriaStep(this, hqlAndParametersBuilder);
+ TopiaQueryBuilderAddCriteriaStep<E> result = new TopiaQueryBuilderAddCriteriaStep<E>(this, hqlAndParametersBuilder);
return result;
}
@@ -353,14 +375,14 @@
Object propertyValue,
Object... otherPropertyNamesAndValues) {
HqlAndParametersBuilder<E> hqlAndParametersBuilder = getHqlForProperties(propertyName, propertyValue, otherPropertyNamesAndValues);
- TopiaQueryBuilderAddCriteriaStep result = new TopiaQueryBuilderAddCriteriaStep(this, hqlAndParametersBuilder);
+ TopiaQueryBuilderAddCriteriaStep<E> result = new TopiaQueryBuilderAddCriteriaStep<E>(this, hqlAndParametersBuilder);
return result;
}
@Override
public TopiaQueryBuilderAddCriteriaStep<E> newQueryBuilder() {
HqlAndParametersBuilder<E> hqlAndParametersBuilder = newHqlAndParametersBuilder();
- TopiaQueryBuilderAddCriteriaStep result = new TopiaQueryBuilderAddCriteriaStep(this, hqlAndParametersBuilder);
+ TopiaQueryBuilderAddCriteriaStep<E> result = new TopiaQueryBuilderAddCriteriaStep<E>(this, hqlAndParametersBuilder);
return result;
}
@@ -377,7 +399,7 @@
}
@Override
- public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> forIn(String propertyName, Iterable<Object> propertyValues) {
+ public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> forIn(String propertyName, Iterable<?> propertyValues) {
TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> result = newQueryBuilder().addIn(propertyName, propertyValues);
return result;
}
@@ -434,7 +456,7 @@
}
protected <K> K findFirstOrNull(String hql, Map<String, Object> hqlParameters) throws QueryMissingOrderException {
- if ( ! hql.toLowerCase().contains("order by")) {
+ if (!hqlContainsOrderBy(hql)) {
throw new QueryMissingOrderException(hql, hqlParameters);
}
K result = findAnyOrNull(hql, hqlParameters);
@@ -482,6 +504,9 @@
Preconditions.checkNotNull(hqlParameters);
Preconditions.checkNotNull(pager);
+ boolean orderByClausePresent = hqlContainsOrderBy(hql);
+ Preconditions.checkState(!orderByClausePresent, "An 'order by' clause was already found in hql, can't use the order of the pager");
+
if (StringUtils.isNotBlank(pager.getSortColumn())) {
hql += " order by " + pager.getSortColumn();
if (!pager.isSortAscendant()) {
@@ -504,9 +529,9 @@
Preconditions.checkNotNull(hqlParameters);
final Iterator<K> iterator = new FindAllIterator<E, K>(this,
- batchSize,
- hql,
- hqlParameters);
+ batchSize,
+ hql,
+ hqlParameters);
Iterable<K> result = new Iterable<K>() {
@Override
@@ -577,6 +602,14 @@
return result;
}
+ protected boolean hqlContainsOrderBy(String hql) {
+ return hql.toLowerCase().contains("order by");
+ }
+
+ protected boolean hqlContainsCount(String hql) {
+ return hql.toLowerCase().contains("count(");
+ }
+
// /**
// * package locale method because this is hibernate specific method and
// * we don't want expose it.
@@ -599,47 +632,38 @@
protected final AbstractTopiaDao<E> dao;
-
protected final String hql;
protected final Map<String, Object> params;
- protected TopiaPagerBean pager;
+ protected final TopiaPagerBean pager;
public FindAllIterator(AbstractTopiaDao<E> dao,
int batchSize,
String hql,
Map<String, Object> params) {
- this.dao = dao;
- this.hql = hql;
- this.params = params;
- String hql2 = hql.toLowerCase();
- int i = hql2.indexOf("order by");
- if (i == -1) {
+ if (!dao.hqlContainsOrderBy(hql)) {
throw new QueryMissingOrderException(hql, params);
}
- // get the count (removing the order-by)
- long count2 = dao.count("SELECT COUNT(*) " +
- hql.substring(0, i), params);
- pager = new TopiaPagerBean();
- pager.setRecords(count2);
- pager.setPageSize(batchSize);
- PagerBeanUtil.computeRecordIndexesAndPagesNumber(pager);
+ this.dao = dao;
+ this.hql = hql;
+ this.params = params;
+ pager = dao.newPager(hql, params, batchSize);
// empty iterator (will be changed at first next call)
data = Iterators.emptyIterator();
}
-
+
public boolean hasNext() {
boolean result = data.hasNext() || // no more data
- pager.getPageIndex() < pager.getPagesNumber();
+ pager.getPageIndex() < pager.getPagesNumber();
return result;
}
-
+
public K next() {
if (!hasNext()) {
throw new NoSuchElementException();
@@ -663,7 +687,7 @@
return next;
}
-
+
public void remove() {
throw new UnsupportedOperationException(
"This iterator does not support remove operation.");
@@ -676,8 +700,6 @@
protected HqlAndParametersBuilder<E> hqlAndParametersBuilder;
- protected boolean hasOrderByClause = false;
-
protected TopiaQueryBuilderAddCriteriaStep(AbstractTopiaDao<E> topiaDAO, HqlAndParametersBuilder<E> hqlAndParametersBuilder) {
this.topiaDAO = topiaDAO;
this.hqlAndParametersBuilder = hqlAndParametersBuilder;
@@ -685,7 +707,6 @@
@Override
public TopiaQueryBuilderRunQueryStep<E> setOrderByArguments(Set<String> orderByArguments) {
- hasOrderByClause = ! Iterables.isEmpty(orderByArguments);
hqlAndParametersBuilder.setOrderByArguments(orderByArguments);
return getNextStep();
}
@@ -709,13 +730,13 @@
}
@Override
- public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addIn(String property, Iterable<Object> values) {
+ public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addIn(String property, Iterable<?> values) {
hqlAndParametersBuilder.addIn(property, values);
return this;
}
@Override
- public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addNotIn(String property, Iterable<Object> values) {
+ public TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addNotIn(String property, Iterable<?> values) {
hqlAndParametersBuilder.addNotIn(property, values);
return this;
}
@@ -819,6 +840,11 @@
}
@Override
+ public List<E> find(TopiaPagerBean pager) {
+ return getNextStep().find(pager);
+ }
+
+ @Override
public Iterable<E> findAllLazy() {
return getNextStep().findAllLazy();
}
@@ -834,6 +860,11 @@
}
@Override
+ public List<String> findIds(TopiaPagerBean pager) {
+ return getNextStep().findIds(pager);
+ }
+
+ @Override
public List<String> findAllIds() {
return getNextStep().findAllIds();
}
@@ -841,7 +872,7 @@
protected TopiaQueryBuilderRunQueryStep<E> getNextStep() {
String hql = hqlAndParametersBuilder.getHql();
Map<String, Object> hqlParameters = hqlAndParametersBuilder.getHqlParameters();
- TopiaQueryBuilderRunQueryStep nextStep = new TopiaQueryBuilderRunQueryStep(topiaDAO, hql, hqlParameters);
+ TopiaQueryBuilderRunQueryStep<E> nextStep = new TopiaQueryBuilderRunQueryStep<E>(topiaDAO, hql, hqlParameters);
return nextStep;
}
@@ -853,7 +884,7 @@
protected final Map<String, Object> hqlParameters;
- protected AbstractTopiaDao<E> topiaDAO;
+ protected final AbstractTopiaDao<E> topiaDAO;
protected TopiaQueryBuilderRunQueryStep(AbstractTopiaDao<E> topiaDAO, String hql, Map<String, Object> hqlParameters) {
this.hql = hql;
@@ -933,6 +964,11 @@
}
@Override
+ public List<E> find(TopiaPagerBean pager) {
+ return topiaDAO.find(hql, hqlParameters, pager);
+ }
+
+ @Override
public List<String> findAllIds() {
String hqlWithSelectClause = "select topiaId " + hql;
return topiaDAO.findAll(hqlWithSelectClause, hqlParameters);
@@ -944,6 +980,11 @@
return topiaDAO.find(hqlWithSelectClause, hqlParameters, startIndex, endIndex);
}
+ @Override
+ public List<String> findIds(TopiaPagerBean pager) {
+ String hqlWithSelectClause = "select topiaId " + hql;
+ return topiaDAO.find(hqlWithSelectClause, hqlParameters, pager);
+ }
}
}
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2013-12-18 16:21:54 UTC (rev 2932)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2013-12-18 16:22:42 UTC (rev 2933)
@@ -120,11 +120,11 @@
}
}
- public void addIn(String property, Iterable<Object> values) {
+ public void addIn(String property, Iterable<?> values) {
addInOrNotIn(property, values, true);
}
- public void addNotIn(String property, Iterable<Object> values) {
+ public void addNotIn(String property, Iterable<?> values) {
addInOrNotIn(property, values, false);
}
@@ -132,7 +132,7 @@
* @param in true if property value must be in given collection, false if value
* must not be in given collection
*/
- protected void addInOrNotIn(String property, Iterable<Object> values, boolean in) {
+ protected void addInOrNotIn(String property, Iterable<?> values, boolean in) {
Preconditions.checkNotNull(property);
Preconditions.checkNotNull(values);
// TODO brendan 02/10/13 if value is intanceof TopiaEntity, we can check type
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java 2013-12-18 16:21:54 UTC (rev 2932)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java 2013-12-18 16:22:42 UTC (rev 2933)
@@ -28,6 +28,7 @@
import org.nuiton.topia.TopiaNoResultException;
import org.nuiton.topia.event.TopiaEntityListener;
import org.nuiton.topia.event.TopiaEntityVetoable;
+import org.nuiton.topia.persistence.pager.TopiaPagerBean;
import java.util.List;
import java.util.Map;
@@ -74,6 +75,33 @@
E newInstance();
/**
+ * Creates a new pager initialized for the first page of all data of the dao.
+ *
+ * <strong>Note:</strong> This method will execute a count query to init
+ * the pager.
+ *
+ * @param pageSize size of a page
+ * @return the initialized pager.
+ * @since 3.0
+ */
+ TopiaPagerBean newPager(int pageSize);
+
+ /**
+ * Creates a new pager initialized for the first page of data of the given
+ * query.
+ *
+ * <strong>Note:</strong> This method will execute a count query to init
+ * the pager.
+ *
+ * @param hql query
+ * @param params params of the query
+ * @param pageSize size of a page
+ * @return the initialized pager.
+ * @since 3.0
+ */
+ TopiaPagerBean newPager(String hql, Map<String, Object> params, int pageSize);
+
+ /**
* Creates an entity not created without the DAO using any of the others
* create methods. The instance may have been created elsewhere.
*
@@ -195,7 +223,7 @@
/**
* @since 3.0
*/
- TopiaQueryBuilderRunQueryStep<E> forIn(String propertyName, Iterable<Object> propertyValues);
+ TopiaQueryBuilderRunQueryStep<E> forIn(String propertyName, Iterable<?> propertyValues);
/**
* @since 3.0
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java 2013-12-18 16:21:54 UTC (rev 2932)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java 2013-12-18 16:22:42 UTC (rev 2933)
@@ -56,14 +56,14 @@
* a one-to-one or a many-to-one property
* @param values the value the field of the entity must be equals to one of the given values
*/
- TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addIn(String property, Iterable<Object> values);
+ TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addIn(String property, Iterable<?> values);
/**
* @param property the name of a field of the queried entity, must be
* a one-to-one or a many-to-one property
* @param values the value the field of the entity must not be equals to any of the given values
*/
- TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addNotIn(String property, Iterable<Object> values);
+ TopiaQueryBuilderAddCriteriaOrRunQueryStep<E> addNotIn(String property, Iterable<?> values);
/**
* @param property the name of a field of the queried entity, must be
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java 2013-12-18 16:21:54 UTC (rev 2932)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderRunQueryStep.java 2013-12-18 16:22:42 UTC (rev 2933)
@@ -28,6 +28,7 @@
import org.nuiton.topia.QueryMissingOrderException;
import org.nuiton.topia.TopiaNoResultException;
import org.nuiton.topia.TopiaNonUniqueResultException;
+import org.nuiton.topia.persistence.pager.TopiaPagerBean;
import java.util.List;
@@ -120,8 +121,12 @@
List<E> find(int startIndex, int endIndex);
+ List<E> find(TopiaPagerBean pager);
+
List<String> findAllIds();
List<String> findIds(int startIndex, int endIndex);
+ List<String> findIds(TopiaPagerBean pager);
+
}
1
0