Repository: jena Updated Branches: refs/heads/master b8540b431 -> 84f3b6734
Fixes for JENA-1153. Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/581d2892 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/581d2892 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/581d2892 Branch: refs/heads/master Commit: 581d2892d699e6127559fca94dd37f2fc4439df4 Parents: b8540b4 Author: Claude Warren <[email protected]> Authored: Tue Mar 8 19:52:50 2016 +0000 Committer: Claude Warren <[email protected]> Committed: Tue Mar 8 19:52:50 2016 +0000 ---------------------------------------------------------------------- .../arq/querybuilder/AbstractQueryBuilder.java | 38 ++++++ .../jena/arq/querybuilder/AskBuilder.java | 29 ++++- .../jena/arq/querybuilder/ConstructBuilder.java | 29 ++++- .../org/apache/jena/arq/querybuilder/Order.java | 8 ++ .../jena/arq/querybuilder/SelectBuilder.java | 28 +++- .../clauses/SolutionModifierClause.java | 50 +++++++- .../handlers/SolutionModifierHandler.java | 55 ++------ .../clauses/SolutionModifierTest.java | 127 +++++++++++++------ .../handlers/SolutionModifierHandlerTest.java | 8 +- 9 files changed, 279 insertions(+), 93 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java index 0da573f..59f4bf2 100644 --- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java +++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java @@ -27,14 +27,17 @@ import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; import org.apache.jena.graph.impl.LiteralLabelFactory ; import org.apache.jena.query.Query ; +import org.apache.jena.query.QueryParseException; import org.apache.jena.rdf.model.Resource ; import org.apache.jena.riot.RiotException; import org.apache.jena.riot.system.PrefixMapFactory; import org.apache.jena.shared.PrefixMapping; import org.apache.jena.sparql.ARQInternalErrorException ; import org.apache.jena.sparql.core.Var ; +import org.apache.jena.sparql.expr.Expr; import org.apache.jena.sparql.expr.ExprVar ; import org.apache.jena.sparql.syntax.ElementGroup; +import org.apache.jena.sparql.util.ExprUtils; import org.apache.jena.sparql.util.NodeFactoryExtra ; /** @@ -74,6 +77,41 @@ public abstract class AbstractQueryBuilder<T extends AbstractQueryBuilder<T>> } /** + * A convenience method to make an expression from a string. Evaluates the + * expression with respect to the current query. + * + * @param expression The expression to parse. + * @return the Expr object. + * @throws QueryParseExcpetion on error. + */ + public Expr makeExpr(String expression) throws QueryParseException + { + return ExprUtils.parse(query, expression, true); + } + + /** + * A convenience method to quote a string. + * @param q the string to quote. + * + * Will use single quotes if there are no single quotes in the string or if the + * double quote is before the single quote in the string. + * + * Will use double quote otherwise. + * + * @return the quoted string. + */ + public String quote(String q) { + int qt = q.indexOf('"'); + int sqt = q.indexOf("'"); + + if (sqt == -1 || qt<sqt) + { + return String.format( "'%s'", q); + } + return String.format( "\"%s\"", q); + } + + /** * Make a node from an object while using the associated prefix mapping. * <ul> * <li>Will return Node.ANY if object is null.</li> http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java index 9ae7fa2..23965a8 100644 --- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java +++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java @@ -29,6 +29,7 @@ import org.apache.jena.arq.querybuilder.handlers.WhereHandler; import org.apache.jena.graph.FrontsTriple ; import org.apache.jena.graph.Node; import org.apache.jena.graph.Triple ; +import org.apache.jena.query.SortCondition; import org.apache.jena.sparql.expr.Expr; import org.apache.jena.sparql.lang.sparql_11.ParseException ; @@ -177,13 +178,38 @@ public class AskBuilder extends AbstractQueryBuilder<AskBuilder> implements getWhereHandler().addBind( expression, makeVar(var) ); return this; } + + @Override + public AskBuilder addOrderBy(Expr orderBy) { + getSolutionModifierHandler().addOrderBy(orderBy); + return this; + } + + @Override + public AskBuilder addOrderBy(Object orderBy) { + getSolutionModifierHandler().addOrderBy(makeVar(orderBy)); + return this; + } + @Override - public AskBuilder addOrderBy(String orderBy) { + public AskBuilder addOrderBy(SortCondition orderBy) { getSolutionModifierHandler().addOrderBy(orderBy); return this; } @Override + public AskBuilder addOrderBy(Expr orderBy, Order order) { + getSolutionModifierHandler().addOrderBy(orderBy, order); + return this; + } + + @Override + public AskBuilder addOrderBy(Object orderBy, Order order) { + getSolutionModifierHandler().addOrderBy(makeVar(orderBy), order); + return this; + } + + @Override public AskBuilder addGroupBy(String groupBy) { getSolutionModifierHandler().addGroupBy(groupBy); return this; @@ -216,4 +242,5 @@ public class AskBuilder extends AbstractQueryBuilder<AskBuilder> implements public Node list(Object... objs) { return getWhereHandler().list(objs); } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java index 64324a4..9db1dae 100644 --- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java +++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java @@ -28,9 +28,11 @@ import org.apache.jena.arq.querybuilder.handlers.DatasetHandler; import org.apache.jena.arq.querybuilder.handlers.HandlerBlock; import org.apache.jena.arq.querybuilder.handlers.SolutionModifierHandler; import org.apache.jena.arq.querybuilder.handlers.WhereHandler; +import org.apache.jena.graph.FrontsNode; import org.apache.jena.graph.FrontsTriple ; import org.apache.jena.graph.Node; import org.apache.jena.graph.Triple ; +import org.apache.jena.query.SortCondition; import org.apache.jena.sparql.expr.Expr; import org.apache.jena.sparql.lang.sparql_11.ParseException ; @@ -111,14 +113,38 @@ public class ConstructBuilder extends AbstractQueryBuilder<ConstructBuilder> getDatasetHandler().from(graphName); return this; } + + @Override + public ConstructBuilder addOrderBy(Expr orderBy) { + getSolutionModifierHandler().addOrderBy(orderBy); + return this; + } + + @Override + public ConstructBuilder addOrderBy(Object orderBy) { + getSolutionModifierHandler().addOrderBy(makeVar(orderBy)); + return this; + } @Override - public ConstructBuilder addOrderBy(String orderBy) { + public ConstructBuilder addOrderBy(SortCondition orderBy) { getSolutionModifierHandler().addOrderBy(orderBy); return this; } @Override + public ConstructBuilder addOrderBy(Expr orderBy, Order order) { + getSolutionModifierHandler().addOrderBy(orderBy, order); + return this; + } + + @Override + public ConstructBuilder addOrderBy(Object orderBy, Order order) { + getSolutionModifierHandler().addOrderBy(makeVar(orderBy), order); + return this; + } + + @Override public ConstructBuilder addGroupBy(String groupBy) { getSolutionModifierHandler().addGroupBy(groupBy); return this; @@ -242,4 +268,5 @@ public class ConstructBuilder extends AbstractQueryBuilder<ConstructBuilder> public Node list(Object... objs) { return getWhereHandler().list(objs); } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/Order.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/Order.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/Order.java new file mode 100644 index 0000000..c72d4de --- /dev/null +++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/Order.java @@ -0,0 +1,8 @@ +package org.apache.jena.arq.querybuilder; + +/** + * The order for the ORDER BY modifiers. + */ +public enum Order { + ASCENDING, DESCENDING +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java index 03796e9..5979e07 100644 --- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java +++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java @@ -33,6 +33,7 @@ import org.apache.jena.graph.FrontsNode ; import org.apache.jena.graph.FrontsTriple ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; +import org.apache.jena.query.SortCondition; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.expr.Expr; import org.apache.jena.sparql.lang.sparql_11.ParseException ; @@ -144,12 +145,36 @@ public class SelectBuilder extends AbstractQueryBuilder<SelectBuilder> } @Override - public SelectBuilder addOrderBy(String orderBy) { + public SelectBuilder addOrderBy(Expr orderBy) { getSolutionModifierHandler().addOrderBy(orderBy); return this; } @Override + public SelectBuilder addOrderBy(Object orderBy) { + getSolutionModifierHandler().addOrderBy( makeVar(orderBy)); + return this; + } + + @Override + public SelectBuilder addOrderBy(SortCondition orderBy) { + getSolutionModifierHandler().addOrderBy(orderBy); + return this; + } + + @Override + public SelectBuilder addOrderBy(Expr orderBy, Order order) { + getSolutionModifierHandler().addOrderBy(orderBy, order); + return this; + } + + @Override + public SelectBuilder addOrderBy(Object orderBy, Order order) { + getSolutionModifierHandler().addOrderBy(makeVar(orderBy), order); + return this; + } + + @Override public SelectBuilder addGroupBy(String groupBy) { getSolutionModifierHandler().addGroupBy(groupBy); return this; @@ -313,4 +338,5 @@ public class SelectBuilder extends AbstractQueryBuilder<SelectBuilder> public Node list(Object... objs) { return getWhereHandler().list(objs); } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierClause.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierClause.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierClause.java index d38e715..af0b602 100644 --- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierClause.java +++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierClause.java @@ -18,7 +18,11 @@ package org.apache.jena.arq.querybuilder.clauses; import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; +import org.apache.jena.arq.querybuilder.Order; import org.apache.jena.arq.querybuilder.handlers.SolutionModifierHandler; +import org.apache.jena.graph.FrontsNode; +import org.apache.jena.query.SortCondition; +import org.apache.jena.sparql.expr.Expr; import org.apache.jena.sparql.lang.sparql_11.ParseException ; /** @@ -29,15 +33,53 @@ import org.apache.jena.sparql.lang.sparql_11.ParseException ; * The Builder type that the clause is part of. */ public interface SolutionModifierClause<T extends AbstractQueryBuilder<T>> { - + + /** + * Add an ascending order by. + * + * @param orderBy + * The expression to order by. + * @return The builder for chaining. + */ + public T addOrderBy(Expr orderBy); + + /** + * Add an ascending order by. + * + * @param orderBy + * The object to order by. + * @return The builder for chaining. + */ + public T addOrderBy(Object orderBy); + + /** + * Add an ascending order by. + * + * @param orderBy + * The SortCondition to order by. + * @return The builder for chaining. + */ + public T addOrderBy(SortCondition orderBy); + + /** + * Add an order by with direction specified. + * + * @param orderBy + * The expression to order by. + * @param order The direction to order. + * @return The builder for chaining. + */ + public T addOrderBy(Expr orderBy, Order order); + /** - * Add an order by + * Add an order by with direction specified. * * @param orderBy - * The variable name to order by. + * The object to order by. + * @param order The direction to order. * @return The builder for chaining. */ - public T addOrderBy(String orderBy); + public T addOrderBy(Object orderBy, Order order); /** * Add a group by http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandler.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandler.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandler.java index c52a2e8..eb0fbbb 100644 --- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandler.java +++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandler.java @@ -21,6 +21,7 @@ import java.io.ByteArrayInputStream ; import java.util.List ; import java.util.Map ; +import org.apache.jena.arq.querybuilder.Order; import org.apache.jena.arq.querybuilder.rewriters.ExprRewriter ; import org.apache.jena.graph.Node ; import org.apache.jena.query.Query ; @@ -38,13 +39,6 @@ import org.apache.jena.sparql.lang.sparql_11.SPARQLParser11 ; * */ public class SolutionModifierHandler implements Handler { - /** - * The order for the ORDER BY modifiers. - */ - public enum Order { - ASCENDING, DESCENDING - } - // the query to modify private final Query query; @@ -74,25 +68,6 @@ public class SolutionModifierHandler implements Handler { } /** - * Add an order by variable. - * @param varName The variable name. - */ - public void addOrderBy(String varName) { - query.addOrderBy(varName, Query.ORDER_DEFAULT); - } - - /** - * Add an order by variable. - * @param varName The variable name. - * @param order The direction for the ordering. - */ - public void addOrderBy(String varName, Order order) { - query.addOrderBy(varName, - order == Order.ASCENDING ? Query.ORDER_ASCENDING - : Query.ORDER_DESCENDING); - } - - /** * Add an order by clause * @param condition The SortCondition to add to the order by. */ @@ -114,20 +89,20 @@ public class SolutionModifierHandler implements Handler { } /** - * Add a node to the order by clause. - * @param node + * Add a var to the order by clause. + * @param var */ - public void addOrderBy(Node node) { - query.addOrderBy(node, Query.ORDER_DEFAULT); + public void addOrderBy(Var var) { + query.addOrderBy(var, Query.ORDER_DEFAULT); } /** - * Add a node to add to the order by clause. - * @param node The node to add + * Add a var to the order by clause. + * @param var The var to add * @param order The direction of the ordering. */ - public void addOrderBy(Node node, Order order) { - query.addOrderBy(node, order == Order.ASCENDING ? Query.ORDER_ASCENDING + public void addOrderBy(Var var, Order order) { + query.addOrderBy(var, order == Order.ASCENDING ? Query.ORDER_ASCENDING : Query.ORDER_DESCENDING); } @@ -151,8 +126,8 @@ public class SolutionModifierHandler implements Handler { * Add a node to the group by clause. * @param node The node to add. */ - public void addGroupBy(Node node) { - query.addGroupBy(node); + public void addGroupBy(Var var) { + query.addGroupBy(var); } /** @@ -178,14 +153,6 @@ public class SolutionModifierHandler implements Handler { } /** - * Add a node to the having clause. - * @param exprNode The node to add. - */ - public void addHaving(Node exprNode) { - query.addHavingCondition(new ExprVar(exprNode)); - } - - /** * Add a variable to the having clause. * @param var The variable to add. */ http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java index 996e2bf..8e3244b 100644 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java @@ -19,17 +19,19 @@ package org.apache.jena.arq.querybuilder.clauses; import static org.junit.Assert.assertFalse; import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; +import org.apache.jena.arq.querybuilder.Order; import org.apache.jena.arq.querybuilder.clauses.SolutionModifierClause; -import org.apache.jena.sparql.core.Var ; -import org.apache.jena.sparql.lang.sparql_11.ParseException ; +import org.apache.jena.sparql.core.Var; +import org.apache.jena.sparql.expr.E_Random; +import org.apache.jena.sparql.expr.Expr; +import org.apache.jena.sparql.lang.sparql_11.ParseException; import org.junit.After; import org.xenei.junit.contract.Contract; import org.xenei.junit.contract.ContractTest; import org.xenei.junit.contract.IProducer; @Contract(SolutionModifierClause.class) -public class SolutionModifierTest<T extends SolutionModifierClause<?>> extends - AbstractClauseTest { +public class SolutionModifierTest<T extends SolutionModifierClause<?>> extends AbstractClauseTest { // the producer we will user private IProducer<T> producer; @@ -50,86 +52,137 @@ public class SolutionModifierTest<T extends SolutionModifierClause<?>> extends } @ContractTest - public void testAddOrderBy() { - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + public void testAddOrderByString() { + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo"); assertContainsRegex(ORDER_BY + var("foo"), builder.buildString()); builder = solutionModifier.addOrderBy("bar"); - assertContainsRegex(ORDER_BY + var("foo") + SPACE + var("bar"), + assertContainsRegex(ORDER_BY + var("foo") + SPACE + var("bar"), builder.buildString()); + } + + @ContractTest + public void testAddOrderByStringAscending() { + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo", Order.ASCENDING); + assertContainsRegex(ORDER_BY + "ASC" + OPEN_PAREN + var("foo") + CLOSE_PAREN, builder.buildString()); + + builder = solutionModifier.addOrderBy("bar"); + assertContainsRegex(ORDER_BY + "ASC" + OPEN_PAREN + var("foo") + CLOSE_PAREN + SPACE + var("bar"), + builder.buildString()); + } + + @ContractTest + public void testAddOrderByStringDescending() { + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo", Order.DESCENDING); + assertContainsRegex(ORDER_BY + "DESC" + OPEN_PAREN + var("foo") + CLOSE_PAREN, builder.buildString()); + + builder = solutionModifier.addOrderBy("bar"); + assertContainsRegex(ORDER_BY + "DESC" + OPEN_PAREN + var("foo") + CLOSE_PAREN + SPACE + var("bar"), + builder.buildString()); + } + + @ContractTest + public void testAddOrderByExpr() { + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); + Expr e = new E_Random(); + AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e); + assertContainsRegex(ORDER_BY + "rand" + OPEN_PAREN + CLOSE_PAREN, builder.buildString()); + + builder = solutionModifier.addOrderBy("bar"); + assertContainsRegex(ORDER_BY + "rand" + OPEN_PAREN + CLOSE_PAREN + SPACE + var("bar"), builder.buildString()); + } + + @ContractTest + public void testAddOrderByExprAscending() { + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); + Expr e = new E_Random(); + AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e, Order.ASCENDING); + assertContainsRegex(ORDER_BY + "ASC" + OPEN_PAREN + "rand" + OPEN_PAREN + CLOSE_PAREN + CLOSE_PAREN, + builder.buildString()); + + builder = solutionModifier.addOrderBy("bar"); + assertContainsRegex( + ORDER_BY + "ASC" + OPEN_PAREN + "rand" + OPEN_PAREN + CLOSE_PAREN + CLOSE_PAREN + SPACE + var("bar"), + builder.buildString()); + } + + @ContractTest + public void testAddOrderByExprDescending() { + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); + Expr e = new E_Random(); + AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e, Order.DESCENDING); + assertContainsRegex(ORDER_BY + "DESC" + OPEN_PAREN + "rand" + OPEN_PAREN + CLOSE_PAREN + CLOSE_PAREN, + builder.buildString()); + + builder = solutionModifier.addOrderBy("bar"); + assertContainsRegex( + ORDER_BY + "DESC" + OPEN_PAREN + "rand" + OPEN_PAREN + CLOSE_PAREN + CLOSE_PAREN + SPACE + var("bar"), builder.buildString()); } @ContractTest public void testAddGroupBy() { - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("foo"); assertContainsRegex(GROUP_BY + var("foo"), builder.buildString()); builder = solutionModifier.addGroupBy("bar"); - assertContainsRegex(GROUP_BY + var("foo") + SPACE + var("bar"), - builder.buildString()); + assertContainsRegex(GROUP_BY + var("foo") + SPACE + var("bar"), builder.buildString()); } @ContractTest public void testAddHaving() throws ParseException { - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.addHaving("?foo<10"); - assertContainsRegex(HAVING + OPEN_PAREN + var("foo") + OPT_SPACE + LT - + OPT_SPACE + "10" + CLOSE_PAREN, builder.buildString()); + assertContainsRegex(HAVING + OPEN_PAREN + var("foo") + OPT_SPACE + LT + OPT_SPACE + "10" + CLOSE_PAREN, + builder.buildString()); builder = solutionModifier.addHaving("?bar < 10"); - assertContainsRegex(HAVING + OPEN_PAREN + var("foo") + OPT_SPACE + LT - + OPT_SPACE + "10" + CLOSE_PAREN + OPT_SPACE + OPEN_PAREN - + var("bar") + OPT_SPACE + LT + OPT_SPACE + "10" + CLOSE_PAREN, + assertContainsRegex( + HAVING + OPEN_PAREN + var("foo") + OPT_SPACE + LT + OPT_SPACE + "10" + CLOSE_PAREN + OPT_SPACE + + OPEN_PAREN + var("bar") + OPT_SPACE + LT + OPT_SPACE + "10" + CLOSE_PAREN, builder.buildString()); } @ContractTest public void testSetLimit() { - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.setLimit(500); assertContainsRegex("LIMIT\\s+500", builder.buildString()); builder = solutionModifier.setLimit(200); String s = builder.buildString(); - assertContainsRegex("LIMIT\\s+200", s); - assertNotContainsRegex("LIMIT\\s+500", s); + assertContainsRegex(LIMIT + "200", s); + assertNotContainsRegex(LIMIT + "500", s); builder = solutionModifier.setLimit(0); - assertFalse("Should not contain LIMIT", - builder.buildString().contains("LIMIT")); + assertFalse("Should not contain LIMIT", builder.buildString().contains("LIMIT")); } @ContractTest public void testSetOffset() { - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.setOffset(500); - assertContainsRegex("OFFSET\\s+500", builder.buildString()); + assertContainsRegex(OFFSET + "500", builder.buildString()); builder = solutionModifier.setOffset(200); String s = builder.buildString(); - assertContainsRegex("OFFSET\\s+200", s); - assertNotContainsRegex("OFFSET\\s+500", s); + assertContainsRegex(OFFSET + "200", s); + assertNotContainsRegex(OFFSET + "500", s); builder = solutionModifier.setOffset(0); - assertFalse("Should not contain OFFSET", builder.buildString() - .contains("OFFSET")); + assertFalse("Should not contain OFFSET", builder.buildString().contains("OFFSET")); } @ContractTest public void testSetVarsGroupBy() { Var v = Var.alloc("v"); - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("?v"); String[] s = byLine(builder); @@ -143,8 +196,7 @@ public class SolutionModifierTest<T extends SolutionModifierClause<?>> extends @ContractTest public void testSetVarsHaving() throws ParseException { Var v = Var.alloc("v"); - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.addHaving("?v"); String[] s = byLine(builder); @@ -158,8 +210,7 @@ public class SolutionModifierTest<T extends SolutionModifierClause<?>> extends @ContractTest public void testSetVarsOrderBy() { Var v = Var.alloc("v"); - SolutionModifierClause<?> solutionModifier = getProducer() - .newInstance(); + SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("?v"); String[] s = byLine(builder); http://git-wip-us.apache.org/repos/asf/jena/blob/581d2892/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java index 8c6fe41..1063ab2 100644 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java @@ -47,7 +47,7 @@ public class SolutionModifierHandlerTest extends AbstractHandlerTest { public void testAddAll() throws ParseException { SolutionModifierHandler solutionModifier2 = new SolutionModifierHandler( new Query()); - solutionModifier2.addOrderBy("orderBy"); + solutionModifier2.addOrderBy( Var.alloc("orderBy")); solutionModifier2.addGroupBy("groupBy"); solutionModifier2.addHaving("?having<10"); solutionModifier2.setLimit(500); @@ -66,7 +66,7 @@ public class SolutionModifierHandlerTest extends AbstractHandlerTest { @Test public void testAll() throws ParseException { - solutionModifier.addOrderBy("orderBy"); + solutionModifier.addOrderBy(Var.alloc("orderBy")); solutionModifier.addGroupBy("groupBy"); solutionModifier.addHaving("SUM(?lprice) > 10"); solutionModifier.setLimit(500); @@ -83,13 +83,13 @@ public class SolutionModifierHandlerTest extends AbstractHandlerTest { @Test public void testAddOrderBy() { - solutionModifier.addOrderBy("orderBy"); + solutionModifier.addOrderBy(Var.alloc("orderBy")); List<SortCondition> sc = query.getOrderBy(); assertEquals("Wrong number of conditions", 1, sc.size()); assertEquals("Wrong value", sc.get(0).expression.asVar(), Var.alloc("orderBy")); - solutionModifier.addOrderBy("orderBy2"); + solutionModifier.addOrderBy(Var.alloc("orderBy2")); sc = query.getOrderBy(); assertEquals("Wrong number of conditions", 2, sc.size()); assertEquals("Wrong value", sc.get(0).expression.asVar(),
