protected SetQuery setQuery( QueryCommand leftQuery, Operation operation, QueryCommand rightQuery, boolean all ) { return new SetQuery(leftQuery, operation, rightQuery, all); }
protected SetQuery setQuery( QueryCommand leftQuery, Operation operation, QueryCommand rightQuery, boolean all ) { return new SetQuery(leftQuery, operation, rightQuery, all); }
public SetQuery adding( Ordering... orderings ) { List<Ordering> newOrderings = null; if (this.orderings() != null) { newOrderings = new ArrayList<Ordering>(orderings()); for (Ordering ordering : orderings) { newOrderings.add(ordering); } } else { newOrderings = Arrays.asList(orderings); } return new SetQuery(left, operation, right, all, newOrderings, getLimits()); } }
public SetQuery adding( Ordering... orderings ) { List<Ordering> newOrderings = null; if (this.orderings() != null) { newOrderings = new ArrayList<Ordering>(orderings()); for (Ordering ordering : orderings) { newOrderings.add(ordering); } } else { newOrderings = Arrays.asList(orderings); } return new SetQuery(left, operation, right, all, newOrderings, getLimits()); } }
/** * Return a {@link QueryCommand} representing the currently-built query. * * @return the resulting query command; never null * @see #clear() */ public QueryCommand query() { QueryCommand result = new Query(source, constraint, orderings, columns, limit, distinct); if (this.firstQuery != null) { // EXCEPT has a higher precedence than INTERSECT or UNION, so if the first query is // an INTERSECT or UNION SetQuery, the result should be applied to the RHS of the previous set ... if (firstQuery instanceof SetQuery && firstQuerySetOperation == Operation.EXCEPT) { SetQuery setQuery = (SetQuery)firstQuery; QueryCommand left = setQuery.getLeft(); QueryCommand right = setQuery.getRight(); SetQuery exceptQuery = new SetQuery(right, Operation.EXCEPT, result, firstQueryAll); result = new SetQuery(left, setQuery.operation(), exceptQuery, setQuery.isAll()); } else { result = new SetQuery(this.firstQuery, this.firstQuerySetOperation, result, this.firstQueryAll); } } return result; }
@Test( expected = IllegalArgumentException.class ) public void shouldNotCreateWithNullLeftQueryCommand() { left = null; right = mock(QueryCommand.class); operation = SetQuery.Operation.UNION; new SetQuery(left, operation, right, all); }
@Test( expected = IllegalArgumentException.class ) public void shouldNotCreateWithNullOperation() { left = mock(QueryCommand.class); right = mock(QueryCommand.class); operation = null; new SetQuery(left, operation, right, all); }
@Test( expected = IllegalArgumentException.class ) public void shouldNotCreateWithNullRightQueryCommand() { left = mock(QueryCommand.class); right = null; operation = SetQuery.Operation.UNION; new SetQuery(left, operation, right, all); }
public SetQuery setQuery( org.modeshape.jcr.api.query.qom.QueryCommand left, SetQuery.Operation operation, org.modeshape.jcr.api.query.qom.QueryCommand right, javax.jcr.query.qom.Ordering[] orderings, org.modeshape.jcr.api.query.qom.Limit limit, boolean all ) { QueryCommand jcrLeft = CheckArg.getInstanceOf(left, QueryCommand.class, "left"); QueryCommand jcrRight = CheckArg.getInstanceOf(left, QueryCommand.class, "left"); List<Ordering> jcrOrderings = new ArrayList<Ordering>(); for (int i = 0; i != orderings.length; ++i) { jcrOrderings.add(CheckArg.getInstanceOf(orderings[i], Ordering.class, "orderings[" + i + "]")); } Limit jcrLimit = limit == null ? Limit.NONE : new Limit(limit.getRowLimit(), limit.getOffset()); return new SetQuery(jcrLeft, operation, jcrRight, all, jcrOrderings, jcrLimit); }
public SetQuery setQuery( org.modeshape.jcr.api.query.qom.QueryCommand left, SetQuery.Operation operation, org.modeshape.jcr.api.query.qom.QueryCommand right, javax.jcr.query.qom.Ordering[] orderings, org.modeshape.jcr.api.query.qom.Limit limit, boolean all ) { QueryCommand jcrLeft = CheckArg.getInstanceOf(left, QueryCommand.class, "left"); QueryCommand jcrRight = CheckArg.getInstanceOf(left, QueryCommand.class, "left"); List<Ordering> jcrOrderings = new ArrayList<Ordering>(); for (int i = 0; i != orderings.length; ++i) { jcrOrderings.add(CheckArg.getInstanceOf(orderings[i], Ordering.class, "orderings[" + i + "]")); } Limit jcrLimit = limit == null ? Limit.NONE : new Limit(limit.getRowLimit(), limit.getOffset()); return new SetQuery(jcrLeft, operation, jcrRight, all, jcrOrderings, jcrLimit); }
@Override public SetQuery withOffset( int offset ) { if (getLimits().getOffset() == offset) return this; // nothing to change return new SetQuery(left, operation, right, all, orderings(), getLimits().withOffset(offset)); }
@Override public SetQuery withLimit( int rowLimit ) { if (getLimits().getRowLimit() == rowLimit) return this; // nothing to change return new SetQuery(left, operation, right, all, orderings(), getLimits().withRowLimit(rowLimit)); }
@Override public SetQuery withLimit( int rowLimit ) { if (getLimits().getRowLimit() == rowLimit) return this; // nothing to change return new SetQuery(left, operation, right, all, orderings(), getLimits().withRowLimit(rowLimit)); }
@Override public SetQuery withOffset( int offset ) { if (getLimits().getOffset() == offset) return this; // nothing to change return new SetQuery(left, operation, right, all, orderings(), getLimits().withOffset(offset)); }
@Test public void shouldCreateWithNonNullQueryCommandsAndIntersectAllOperation() { left = new Query(new NamedSelector(selector("A"))); right = new Query(new NamedSelector(selector("B"))); operation = SetQuery.Operation.INTERSECT; all = true; query = new SetQuery(left, operation, right, all); assertThat(Visitors.readable(query), is("SELECT * FROM A INTERSECT ALL SELECT * FROM B")); }
@Test public void shouldCreateWithNonNullQueryCommandsAndUnionOperation() { left = new Query(new NamedSelector(selector("A"))); right = new Query(new NamedSelector(selector("B"))); operation = SetQuery.Operation.UNION; query = new SetQuery(left, operation, right, all); assertThat(Visitors.readable(query), is("SELECT * FROM A UNION SELECT * FROM B")); }
@Test public void shouldCreateWithNonNullQueryCommandsAndExceptOperation() { left = new Query(new NamedSelector(selector("A"))); right = new Query(new NamedSelector(selector("B"))); operation = SetQuery.Operation.EXCEPT; query = new SetQuery(left, operation, right, all); assertThat(Visitors.readable(query), is("SELECT * FROM A EXCEPT SELECT * FROM B")); }
@Test public void shouldCreateWithNonNullQueryCommandsAndExceptAllOperation() { left = new Query(new NamedSelector(selector("A"))); right = new Query(new NamedSelector(selector("B"))); operation = SetQuery.Operation.EXCEPT; all = true; query = new SetQuery(left, operation, right, all); assertThat(Visitors.readable(query), is("SELECT * FROM A EXCEPT ALL SELECT * FROM B")); } }
@Test public void shouldCreateWithNonNullQueryCommandsAndUnionAllOperation() { left = new Query(new NamedSelector(selector("A"))); right = new Query(new NamedSelector(selector("B"))); operation = SetQuery.Operation.UNION; all = true; query = new SetQuery(left, operation, right, all); assertThat(Visitors.readable(query), is("SELECT * FROM A UNION ALL SELECT * FROM B")); }
@Test public void shouldCreateWithNonNullQueryCommandsAndIntersectOperation() { left = new Query(new NamedSelector(selector("A"))); right = new Query(new NamedSelector(selector("B"))); operation = SetQuery.Operation.INTERSECT; query = new SetQuery(left, operation, right, all); assertThat(Visitors.readable(query), is("SELECT * FROM A INTERSECT SELECT * FROM B")); }