diff --git a/querydsl-jdoql/pom.xml b/querydsl-jdoql/pom.xml
index b73805f43..ced07c433 100644
--- a/querydsl-jdoql/pom.xml
+++ b/querydsl-jdoql/pom.xml
@@ -6,7 +6,7 @@
com.mysema.querydsl
querydsl-root
- 0.3.6-SNAPSHOT
+ 0.3.7-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLOps.java b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLOps.java
index 9799af877..4fb180b8b 100644
--- a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLOps.java
+++ b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLOps.java
@@ -5,10 +5,7 @@
*/
package com.mysema.query.jdoql;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
import com.mysema.query.serialization.OperationPatterns;
import com.mysema.query.types.operation.Ops;
@@ -17,6 +14,7 @@ import com.mysema.query.types.path.PathMetadata;
import com.mysema.query.types.path.PathMetadata.PathType;
/**
+ * Operation patterns for JDOQL serialization
*
* @author tiwe
*
@@ -25,35 +23,25 @@ public class JDOQLOps extends OperationPatterns {
public static final JDOQLOps DEFAULT = new JDOQLOps();
- public static final List> wrapCollectionsForOp;
-
- static{
- wrapCollectionsForOp = Collections.>unmodifiableList(Arrays.>asList(
- Ops.IN,
- Ops.NOTIN,
- OpQuant.ALL,
- OpQuant.ANY,
- OpQuant.AVG_IN_COL,
- OpQuant.EXISTS,
- OpQuant.NOTEXISTS));
- }
-
public JDOQLOps(){
- add(Ops.AFTER, "%s.compareTo(%s) > 0");
- add(Ops.BEFORE, "%s.compareTo(%s) < 0");
- add(Ops.AOE, "%s.compareTo(%s) >= 0");
- add(Ops.BOE, "%s.compareTo(%s) <= 0");
-
- add(Ops.EQ_PRIMITIVE, "%s == %s");
+ add(Ops.EQ_PRIMITIVE, "%s == %s");
add(Ops.EQ_OBJECT, "%s == %s");
add(Ops.NE_OBJECT, "%s != %s");
-
add(Ops.ISNULL, "%s == null");
add(Ops.ISNOTNULL, "%s != null");
-
add(Ops.ISTYPEOF, "%s instanceof %s");
+
+ // collection
add(Ops.IN, "%2$s.contains(%1$s)");
- add(Ops.NOTIN, "!%2$s.contains(%1$s)");
+ add(Ops.NOTIN, "!%2$s.contains(%1$s)");
+ add(Ops.COL_ISEMPTY, "%s.isEmpty()");
+ add(Ops.COL_ISNOTEMPTY, "!%s.isEmpty()");
+
+ // comparable
+ add(Ops.AFTER, "%s > %s");
+ add(Ops.BEFORE, "%s < %s");
+ add(Ops.AOE, "%s >= %s");
+ add(Ops.BOE, "%s <= %s");
// java.lang.String
add(Ops.CHAR_AT, "%s.charAt(%s)");
@@ -67,7 +55,7 @@ public class JDOQLOps extends OperationPatterns {
add(Ops.STRING_LENGTH, "%s.length(%s)");
add(Ops.LAST_INDEX_2ARGS, "%s.lastIndex(%s)");
add(Ops.LAST_INDEX, "%s.lastIndex(%s,%s)");
- add(Ops.ISEMPTY, "%s.isEmpty()");
+ add(Ops.STRING_ISEMPTY, "%s.isEmpty()");
add(Ops.STARTSWITH, "%s.startsWith(%s)");
add(Ops.STARTSWITH_IC, "%s.toLowerCase().startsWith(%s.toLowerCase())");
add(Ops.INDEXOF_2ARGS, "%s.indexOf(%s,%s)");
@@ -77,13 +65,16 @@ public class JDOQLOps extends OperationPatterns {
add(Ops.ENDSWITH_IC, "%s.toLowerCase().endsWith(%s.toLowerCase())");
add(Ops.CONTAINS, "%s.contains(%s)");
- // path types
- for (PathType type : new PathType[]{PathMetadata.LISTVALUE, PathMetadata.LISTVALUE_CONSTANT, PathMetadata.MAPVALUE, PathMetadata.MAPVALUE_CONSTANT}){
- add(type,"%s[%s]");
- }
- add(PathMetadata.PROPERTY,"%s.%s");
- add(PathMetadata.SIZE,"%s.size");
- add(PathMetadata.VARIABLE,"%s");
+ // path types
+ add(PathMetadata.VARIABLE,"%s");
+ for (PathType type : new PathType[]{PathMetadata.LISTVALUE, PathMetadata.LISTVALUE_CONSTANT, PathMetadata.MAPVALUE, PathMetadata.MAPVALUE_CONSTANT}){
+ add(type,"%s.get(%s)");
+ }
+ add(PathMetadata.ARRAYVALUE, "%s[%s]");
+ add(PathMetadata.ARRAYVALUE_CONSTANT, "%s[%s]");
+
+ add(PathMetadata.ARRAY_SIZE,"%s.length");
+ add(PathMetadata.SIZE,"%s.size()");
}
diff --git a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQuery.java b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQuery.java
index 2e6eedc02..77c2c7186 100644
--- a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQuery.java
+++ b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQuery.java
@@ -12,22 +12,56 @@ import com.mysema.query.types.expr.EBoolean;
import com.mysema.query.types.path.PEntity;
/**
+ * Query interface for JDOQLQueries
*
* @author tiwe
*
*/
-public interface JDOQLQuery extends Projectable { // --> projections go into result
+public interface JDOQLQuery extends Projectable {
- JDOQLQuery from(PEntity>... o); // first is candidate, rest are variables
+ /**
+ * Define the sources of the query, the first becomes the candidate, the rest variables
+ */
+ JDOQLQuery from(PEntity>... o);
- JDOQLQuery orderBy(OrderSpecifier>... o); // -> ordering
+ /**
+ * Define the order the projection
+ *
+ * @param o
+ * @return
+ */
+ JDOQLQuery orderBy(OrderSpecifier>... o);
- JDOQLQuery where(EBoolean... o); // limit
+ /**
+ * Define the filter of the query
+ *
+ * @param o
+ * @return
+ */
+ JDOQLQuery where(EBoolean... o);
- JDOQLQuery limit(long limit); // --> range
+ /**
+ * Define the limit of the results
+ *
+ * @param limit
+ * @return
+ */
+ JDOQLQuery limit(long limit);
- JDOQLQuery offset(long offset); // --> range
+ /**
+ * Define the offset of the results
+ *
+ * @param offset
+ * @return
+ */
+ JDOQLQuery offset(long offset);
- JDOQLQuery restrict(QueryModifiers mod); // --> range
+ /**
+ * Define the limit and offset of the results
+ *
+ * @param mod
+ * @return
+ */
+ JDOQLQuery restrict(QueryModifiers mod);
}
diff --git a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQueryImpl.java b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQueryImpl.java
index 86f6af6e3..01c4df45a 100644
--- a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQueryImpl.java
+++ b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLQueryImpl.java
@@ -24,6 +24,7 @@ import com.mysema.query.types.expr.Expr;
import com.mysema.query.types.path.PEntity;
/**
+ * Default implementation of the JDOQLQuery interface
*
* @author tiwe
*
@@ -94,13 +95,12 @@ class JDOQLQueryImpl extends QueryBaseWithProjection