Author: fdesbois Date: 2010-06-08 15:23:33 +0200 (Tue, 08 Jun 2010) New Revision: 1996 Url: http://nuiton.org/repositories/revision/topia/1996 Log: Add methods in TopiaQuery : addBetween and addNull Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java 2010-06-03 22:13:22 UTC (rev 1995) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java 2010-06-08 13:23:33 UTC (rev 1996) @@ -910,18 +910,63 @@ } /** - * Add link constraint between two properties. {@code propertyA} is in - * elements of {@code propertyB} which is a collection with same type than - * {@code propertyA}. (HQL : A IN elements (B)) + * Add an element to the query with the constraint null. * - * @param propertyA contains in propertyB collection - * @param propertyB collection which contains propertyA + * @param paramName name of the parameter in the query * @return the TopiaQuery + */ + public TopiaQuery addNull(String paramName) { + addWhere(paramName, Op.EQ, null); + return this; + } + + /** + * Add an element with BETWEEN operation. The {@code paramName} will be + * found between {@code value1} and {@code value2}. Useful for date + * manipulations. + * + * @param paramName The name of the parameter in the query (entity property) + * @param value1 First value + * @param value2 Second value + * @return the TopiaQuery + */ + public TopiaQuery addBetween(String paramName, Object value1, Object value2) { + + String valueName = getValueName(paramName); + String valueName1 = new StringBuilder(valueName).append('1').toString(); + String valueName2 = new StringBuilder(valueName).append('2').toString(); + + addParam(valueName1, value1); + addParam(valueName2, value2); + + StringBuilder builder = + new StringBuilder(paramName). + append(" BETWEEN "). + append(':').append(valueName1). + append(" AND "). + append(':').append(valueName2); + + parentheses = false; + addWhere(builder.toString()); + parentheses = true; + return this; + } + + + /** + * Add link constraint between two properties. {@code elementProperty} is in + * elements of {@code containerProperty} which is a collection with same type + * than {@code elementProperty}. (HQL : elementProperty IN elements + * (containerProperty)) + * + * @param elementProperty contains in containerProperty collection + * @param containerProperty collection which contains elementProperty + * @return the TopiaQuery * @since 2.4 */ - public TopiaQuery addInElements(String propertyA, String propertyB) { - StringBuilder builder = new StringBuilder(propertyA). - append(" IN elements(").append(propertyB).append(')'); + public TopiaQuery addInElements(String elementProperty, String containerProperty) { + StringBuilder builder = new StringBuilder(elementProperty). + append(" IN elements(").append(containerProperty).append(')'); parentheses = false; addWhere(builder.toString()); parentheses = true;
participants (1)
-
fdesbois@users.nuiton.org