diff --git a/querydsl-collections/pom.xml b/querydsl-collections/pom.xml
index 62ee6cc69..99c58f2aa 100644
--- a/querydsl-collections/pom.xml
+++ b/querydsl-collections/pom.xml
@@ -27,12 +27,6 @@
provided
-
- janino
- janino
- 2.5.10
-
-
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java b/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java
index 8bd7b2e8d..c47375f76 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Mysema Ltd.
+ * Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
@@ -35,6 +35,7 @@ import com.mysema.query.types.Order;
import com.mysema.query.types.OrderSpecifier;
import com.mysema.query.types.Path;
import com.mysema.query.types.expr.EBoolean;
+import com.mysema.util.MultiComparator;
import com.mysema.util.MultiIterator;
/**
@@ -123,15 +124,15 @@ public abstract class AbstractColQuery>
it = handleFromWhereMultiSource(sources);
}
- // group by
- if (!md.getGroupBy().isEmpty()){
- // TODO
-
- // having
- if (md.getHaving() != null){
- it = iteratorFactory.multiArgFilter(it, sources, md.getHaving());
- }
- }
+// // group by
+// if (!md.getGroupBy().isEmpty()){
+// // TODO
+//
+// // having
+// if (md.getHaving() != null){
+// it = iteratorFactory.multiArgFilter(it, sources, md.getHaving());
+// }
+// }
if (it.hasNext()) {
// order
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/ColDeleteClause.java b/querydsl-collections/src/main/java/com/mysema/query/collections/ColDeleteClause.java
index c623d4c11..d34f7269a 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/ColDeleteClause.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/ColDeleteClause.java
@@ -1,3 +1,8 @@
+/*
+ * Copyright (c) 2010 Mysema Ltd.
+ * All rights reserved.
+ *
+ */
package com.mysema.query.collections;
import java.util.Collection;
@@ -19,6 +24,10 @@ public class ColDeleteClause implements DeleteClause>{
private final Collection extends T> col;
+ public ColDeleteClause(Path expr, Collection extends T> col){
+ this(EvaluatorFactory.DEFAULT, expr, col);
+ }
+
public ColDeleteClause(EvaluatorFactory ef, Path expr, Collection extends T> col){
this.query = new ColQueryImpl(ef).from(expr, col);
this.expr = expr;
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuery.java b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuery.java
index 7e9d77655..953ced364 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuery.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuery.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Mysema Ltd.
+ * Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryImpl.java b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryImpl.java
index 0aae54f53..eed1153dd 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryImpl.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Mysema Ltd.
+ * Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
@@ -17,14 +17,28 @@ import com.mysema.query.QueryMetadata;
*/
public class ColQueryImpl extends AbstractColQuery implements ColQuery, Cloneable{
+ /**
+ * Create a new ColQueryImpl instance
+ */
public ColQueryImpl() {
super(new DefaultQueryMetadata(), EvaluatorFactory.DEFAULT);
}
+ /**
+ * Create a new ColQueryImpl instance
+ *
+ * @param evaluatorFactory
+ */
public ColQueryImpl(EvaluatorFactory evaluatorFactory) {
super(new DefaultQueryMetadata(), evaluatorFactory);
}
+ /**
+ * Create a new ColQueryImpl instance
+ *
+ * @param metadata
+ * @param evaluatorFactory
+ */
public ColQueryImpl(QueryMetadata metadata, EvaluatorFactory evaluatorFactory) {
super(metadata, evaluatorFactory);
}
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuerySerializer.java b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuerySerializer.java
index 834dc8f84..ffc05e8bb 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuerySerializer.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQuerySerializer.java
@@ -1,12 +1,11 @@
/*
- * Copyright (c) 2009 Mysema Ltd.
+ * Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.query.collections;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang.StringUtils;
@@ -28,13 +27,6 @@ import com.mysema.query.types.Template;
* @version $Id$
*/
public final class ColQuerySerializer extends SerializerBase {
-
- private static final List nonGeneric = Arrays.asList(
- PathType.ARRAYVALUE,
- PathType.ARRAYVALUE_CONSTANT,
- PathType.PROPERTY,
- PathType.VARIABLE
- );
public ColQuerySerializer(ColQueryTemplates patterns) {
super(patterns);
@@ -44,7 +36,8 @@ public final class ColQuerySerializer extends SerializerBase
public void visit(Path> path) {
PathType pathType = path.getMetadata().getPathType();
- if (pathType == PathType.PROPERTY){
+ if (pathType == PathType.PROPERTY){
+ // TODO : move this to PathMetadata ?!?
String prefix = "get";
if (path.getType() != null && path.getType().equals(Boolean.class)) {
prefix = "is";
@@ -54,9 +47,6 @@ public final class ColQuerySerializer extends SerializerBase
append(StringUtils.capitalize(path.getMetadata().getExpression().toString()) + "()");
}else{
- if (!nonGeneric.contains(pathType)){
- append("((").append(path.getType().getName()).append(")");
- }
List> args = new ArrayList>(2);
if (path.getMetadata().getParent() != null){
args.add((Expr>)path.getMetadata().getParent());
@@ -71,10 +61,7 @@ public final class ColQuerySerializer extends SerializerBase
}else{
handle(args.get(element.getIndex()));
}
- }
- if (!nonGeneric.contains(pathType)){
- append(")");
- }
+ }
}
}
@@ -109,9 +96,29 @@ public final class ColQuerySerializer extends SerializerBase
@Override
protected void visitOperation(Class> type, Operator> operator, List> args) {
- if (operator.equals(Ops.STRING_CAST)) {
+ if (args.size() == 2
+ && Number.class.isAssignableFrom(args.get(0).getType())
+ && Number.class.isAssignableFrom(args.get(1).getType())){
+
+ if (operator == Ops.AFTER){
+ handle(args.get(0)).append(" > ").handle(args.get(1));
+ return;
+ }else if (operator == Ops.BEFORE){
+ handle(args.get(0)).append(" < ").handle(args.get(1));
+ return;
+ }else if (operator == Ops.AOE){
+ handle(args.get(0)).append(" >= ").handle(args.get(1));
+ return;
+ }else if (operator == Ops.BOE){
+ handle(args.get(0)).append(" <= ").handle(args.get(1));
+ return;
+ }
+ // TODO : Ops.BETWEEN
+ }
+
+ if (operator == Ops.STRING_CAST) {
visitCast(operator, args.get(0), String.class);
- } else if (operator.equals(Ops.NUMCAST)) {
+ } else if (operator == Ops.NUMCAST) {
visitCast(operator, args.get(0), (Class>) ((Constant>) args.get(1)).getConstant());
} else {
super.visitOperation(type, operator, args);
@@ -119,7 +126,7 @@ public final class ColQuerySerializer extends SerializerBase
}
@Override
- public void visit(SubQuery expr) {
+ public void visit(SubQuery> expr) {
throw new IllegalArgumentException("Not supported");
}
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryTemplates.java b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryTemplates.java
index 7f56c6333..b4680749a 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryTemplates.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/ColQueryTemplates.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Mysema Ltd.
+ * Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/ColUpdateClause.java b/querydsl-collections/src/main/java/com/mysema/query/collections/ColUpdateClause.java
index be468536e..5ca62107a 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/ColUpdateClause.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/ColUpdateClause.java
@@ -1,3 +1,8 @@
+/*
+ * Copyright (c) 2010 Mysema Ltd.
+ * All rights reserved.
+ *
+ */
package com.mysema.query.collections;
import com.mysema.query.dml.UpdateClause;
@@ -15,6 +20,10 @@ public class ColUpdateClause implements UpdateClause>{
private final Path expr;
+ public ColUpdateClause(Path expr, Iterable extends T> col){
+ this(EvaluatorFactory.DEFAULT, expr, col);
+ }
+
public ColUpdateClause(EvaluatorFactory ef, Path expr, Iterable extends T> col){
this.query = new ColQueryImpl(ef).from(expr, col);
this.expr = expr;
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/Evaluator.java b/querydsl-collections/src/main/java/com/mysema/query/collections/Evaluator.java
index 71e4cfa34..1d34d68dc 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/Evaluator.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/Evaluator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Mysema Ltd.
+ * Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/EvaluatorFactory.java b/querydsl-collections/src/main/java/com/mysema/query/collections/EvaluatorFactory.java
index 6cb34b3d5..cd9006d6c 100644
--- a/querydsl-collections/src/main/java/com/mysema/query/collections/EvaluatorFactory.java
+++ b/querydsl-collections/src/main/java/com/mysema/query/collections/EvaluatorFactory.java
@@ -1,6 +1,11 @@
+/*
+ * Copyright (c) 2010 Mysema Ltd.
+ * All rights reserved.
+ *
+ */
package com.mysema.query.collections;
-import java.util.Arrays;
+import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -8,12 +13,7 @@ import java.util.Set;
import net.jcip.annotations.Immutable;
-import org.codehaus.janino.CompileException;
-import org.codehaus.janino.ExpressionEvaluator;
-import org.codehaus.janino.Parser.ParseException;
-import org.codehaus.janino.Scanner.ScanException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.commons.lang.ClassUtils;
import com.mysema.query.QueryException;
import com.mysema.query.types.Expr;
@@ -25,8 +25,6 @@ import com.mysema.query.types.Expr;
@Immutable
public class EvaluatorFactory {
- private static final Logger logger = LoggerFactory.getLogger(EvaluatorFactory.class);
-
public static final EvaluatorFactory DEFAULT = new EvaluatorFactory(ColQueryTemplates.DEFAULT);
private final ColQueryTemplates templates;
@@ -39,10 +37,10 @@ public class EvaluatorFactory {
ColQuerySerializer serializer = new ColQuerySerializer(templates);
serializer.handle(projection);
Map