Add mixin interface for matchable predicates
Only change predicates need to have a match method, because for historic reasons changes may be loaded from multiple sources. Predicates for other indices do not need to implement a match method because the data is always loaded from the index. An exception are the predicates that check visibility for which a match method is always required. Change-Id: I3492bc83b6faf6708ab0102a49463aa0d4a3d10b Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -633,7 +633,7 @@ defintion which creates a `MyPredicate`:
|
||||
@Singleton
|
||||
public class SampleOperator
|
||||
implements ChangeQueryBuilder.ChangeOperatorFactory {
|
||||
public static class MyPredicate extends OperatorPredicate<ChangeData> {
|
||||
public static class MyPredicate extends OperatorChangePredicate<ChangeData> {
|
||||
...
|
||||
}
|
||||
|
||||
|
@@ -14,10 +14,8 @@
|
||||
|
||||
package com.google.gerrit.server.index;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.gerrit.server.query.DataSource;
|
||||
import com.google.gerrit.server.query.Paginated;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
@@ -26,10 +24,7 @@ import com.google.gwtorm.server.OrmException;
|
||||
import com.google.gwtorm.server.ResultSet;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Wrapper combining an {@link IndexPredicate} together with a
|
||||
@@ -48,8 +43,7 @@ public class IndexedQuery<I, T> extends Predicate<T>
|
||||
|
||||
private QueryOptions opts;
|
||||
private final Predicate<T> pred;
|
||||
private DataSource<T> source;
|
||||
private final Map<T, DataSource<T>> fromSource;
|
||||
protected DataSource<T> source;
|
||||
|
||||
public IndexedQuery(Index<I, T> index, Predicate<T> pred,
|
||||
QueryOptions opts) throws QueryParseException {
|
||||
@@ -57,7 +51,6 @@ public class IndexedQuery<I, T> extends Predicate<T>
|
||||
this.opts = opts;
|
||||
this.pred = pred;
|
||||
this.source = index.getSource(pred, this.opts);
|
||||
this.fromSource = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -90,38 +83,7 @@ public class IndexedQuery<I, T> extends Predicate<T>
|
||||
|
||||
@Override
|
||||
public ResultSet<T> read() throws OrmException {
|
||||
final DataSource<T> currSource = source;
|
||||
final ResultSet<T> rs = currSource.read();
|
||||
|
||||
return new ResultSet<T>() {
|
||||
@Override
|
||||
public Iterator<T> iterator() {
|
||||
return Iterables.transform(
|
||||
rs,
|
||||
new Function<T, T>() {
|
||||
@Override
|
||||
public
|
||||
T apply(T t) {
|
||||
fromSource.put(t, currSource);
|
||||
return t;
|
||||
}
|
||||
}).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> toList() {
|
||||
List<T> r = rs.toList();
|
||||
for (T t : r) {
|
||||
fromSource.put(t, currSource);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
rs.close();
|
||||
}
|
||||
};
|
||||
return source.read();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -145,19 +107,6 @@ public class IndexedQuery<I, T> extends Predicate<T>
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(T t) throws OrmException {
|
||||
return (source != null && fromSource.get(t) == source) || pred.match(t);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
// Index queries are assumed to be cheaper than any other type of query, so
|
||||
// so try to make sure they get picked. Note that pred's cost may be higher
|
||||
// because it doesn't know whether it's being used in an index query or not.
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return pred.hashCode();
|
||||
|
@@ -33,7 +33,6 @@ public abstract class IntegerRangePredicate<T> extends IndexPredicate<T> {
|
||||
|
||||
protected abstract int getValueInt(T object) throws OrmException;
|
||||
|
||||
@Override
|
||||
public boolean match(T object) throws OrmException {
|
||||
int valueInt = getValueInt(object);
|
||||
return valueInt >= range.min && valueInt <= range.max;
|
||||
@@ -48,9 +47,4 @@ public abstract class IntegerRangePredicate<T> extends IndexPredicate<T> {
|
||||
public int getMaximumValue() {
|
||||
return range.max;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@@ -38,9 +38,4 @@ public abstract class TimestampRangePredicate<I> extends IndexPredicate<I> {
|
||||
|
||||
public abstract Date getMinTimestamp();
|
||||
public abstract Date getMaxTimestamp();
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@@ -14,22 +14,33 @@
|
||||
|
||||
package com.google.gerrit.server.index.change;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.CHANGE;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.PROJECT;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexConfig;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.IndexedQuery;
|
||||
import com.google.gerrit.server.index.QueryOptions;
|
||||
import com.google.gerrit.server.query.DataSource;
|
||||
import com.google.gerrit.server.query.Matchable;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gerrit.server.query.change.ChangeDataSource;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.gwtorm.server.ResultSet;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -41,7 +52,7 @@ import java.util.Set;
|
||||
* {@link ChangeDataSource} to be chosen by the query processor.
|
||||
*/
|
||||
public class IndexedChangeQuery extends IndexedQuery<Change.Id, ChangeData>
|
||||
implements ChangeDataSource {
|
||||
implements ChangeDataSource, Matchable<ChangeData> {
|
||||
public static QueryOptions oneResult() {
|
||||
return createOptions(IndexConfig.createDefault(), 0, 1,
|
||||
ImmutableSet.<String> of());
|
||||
@@ -65,9 +76,68 @@ public class IndexedChangeQuery extends IndexedQuery<Change.Id, ChangeData>
|
||||
opts.limit(), opts.fields());
|
||||
}
|
||||
|
||||
private final Map<ChangeData, DataSource<ChangeData>> fromSource;
|
||||
|
||||
public IndexedChangeQuery(ChangeIndex index, Predicate<ChangeData> pred,
|
||||
QueryOptions opts) throws QueryParseException {
|
||||
super(index, pred, convertOptions(opts));
|
||||
this.fromSource = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet<ChangeData> read() throws OrmException {
|
||||
final DataSource<ChangeData> currSource = source;
|
||||
final ResultSet<ChangeData> rs = currSource.read();
|
||||
|
||||
return new ResultSet<ChangeData>() {
|
||||
@Override
|
||||
public Iterator<ChangeData> iterator() {
|
||||
return Iterables.transform(
|
||||
rs,
|
||||
new Function<ChangeData, ChangeData>() {
|
||||
@Override
|
||||
public ChangeData apply(ChangeData cd) {
|
||||
fromSource.put(cd, currSource);
|
||||
return cd;
|
||||
}
|
||||
}).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ChangeData> toList() {
|
||||
List<ChangeData> r = rs.toList();
|
||||
for (ChangeData cd : r) {
|
||||
fromSource.put(cd, currSource);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
rs.close();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(ChangeData cd) throws OrmException {
|
||||
if (source != null && fromSource.get(cd) == source) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Predicate<ChangeData> pred = getChild(0);
|
||||
checkState(pred.isMatchable(),
|
||||
"match invoked, but child predicate %s " + "doesn't implement %s", pred,
|
||||
Matchable.class.getName());
|
||||
return pred.asMatchable().match(cd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
// Index queries are assumed to be cheaper than any other type of query, so
|
||||
// so try to make sure they get picked. Note that pred's cost may be higher
|
||||
// because it doesn't know whether it's being used in an index query or not.
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -211,6 +211,6 @@ public class ProjectWatch {
|
||||
p = Predicate.and(filterPredicate, p);
|
||||
}
|
||||
}
|
||||
return p == null || p.match(changeData);
|
||||
return p == null || p.asMatchable().match(changeData);
|
||||
}
|
||||
}
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
package com.google.gerrit.server.query;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -23,7 +25,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/** Requires all predicates to be true. */
|
||||
public class AndPredicate<T> extends Predicate<T> {
|
||||
public class AndPredicate<T> extends Predicate<T> implements Matchable<T> {
|
||||
private final List<Predicate<T>> children;
|
||||
private final int cost;
|
||||
|
||||
@@ -39,11 +41,11 @@ public class AndPredicate<T> extends Predicate<T> {
|
||||
if (getClass() == p.getClass()) {
|
||||
for (Predicate<T> gp : p.getChildren()) {
|
||||
t.add(gp);
|
||||
c += gp.getCost();
|
||||
c += gp.estimateCost();
|
||||
}
|
||||
} else {
|
||||
t.add(p);
|
||||
c += p.getCost();
|
||||
c += p.estimateCost();
|
||||
}
|
||||
}
|
||||
children = t;
|
||||
@@ -70,10 +72,22 @@ public class AndPredicate<T> extends Predicate<T> {
|
||||
return new AndPredicate<>(children);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMatchable() {
|
||||
for (Predicate<T> c : children) {
|
||||
if (!c.isMatchable()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(final T object) throws OrmException {
|
||||
for (final Predicate<T> c : children) {
|
||||
if (!c.match(object)) {
|
||||
for (Predicate<T> c : children) {
|
||||
checkState(c.isMatchable(), "match invoked, but child predicate %s "
|
||||
+ "doesn't implement %s", c, Matchable.class.getName());
|
||||
if (!c.asMatchable().match(object)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@@ -36,17 +36,29 @@ public class AndSource<T> extends AndPredicate<T>
|
||||
implements DataSource<T>, Comparator<Predicate<T>> {
|
||||
protected final DataSource<T> source;
|
||||
|
||||
private final IsVisibleToPredicate<T> isVisibleToPredicate;
|
||||
private final int start;
|
||||
private final int cardinality;
|
||||
|
||||
|
||||
public AndSource(Collection<? extends Predicate<T>> that) {
|
||||
this(that, 0);
|
||||
this(that, null, 0);
|
||||
}
|
||||
|
||||
public AndSource(Collection<? extends Predicate<T>> that, int start) {
|
||||
public AndSource(Predicate<T> that,
|
||||
IsVisibleToPredicate<T> isVisibleToPredicate) {
|
||||
this(that, isVisibleToPredicate, 0);
|
||||
}
|
||||
|
||||
public AndSource(Predicate<T> that,
|
||||
IsVisibleToPredicate<T> isVisibleToPredicate, int start) {
|
||||
this(ImmutableList.of(that), isVisibleToPredicate, start);
|
||||
}
|
||||
|
||||
public AndSource(Collection<? extends Predicate<T>> that,
|
||||
IsVisibleToPredicate<T> isVisibleToPredicate, int start) {
|
||||
super(that);
|
||||
checkArgument(start >= 0, "negative start: %s", start);
|
||||
this.isVisibleToPredicate = isVisibleToPredicate;
|
||||
this.start = start;
|
||||
|
||||
int c = Integer.MAX_VALUE;
|
||||
@@ -56,9 +68,10 @@ public class AndSource<T> extends AndPredicate<T>
|
||||
if (p instanceof DataSource) {
|
||||
c = Math.min(c, ((DataSource<?>) p).getCardinality());
|
||||
|
||||
if (p.getCost() < minCost) {
|
||||
int cost = p.estimateCost();
|
||||
if (cost < minCost) {
|
||||
s = toDataSource(p);
|
||||
minCost = p.getCost();
|
||||
minCost = cost;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,7 +98,7 @@ public class AndSource<T> extends AndPredicate<T>
|
||||
int nextStart = 0;
|
||||
boolean skipped = false;
|
||||
for (T data : buffer(source.read())) {
|
||||
if (match(data)) {
|
||||
if (!isMatchable() || match(data)) {
|
||||
r.add(data);
|
||||
} else {
|
||||
skipped = true;
|
||||
@@ -124,6 +137,24 @@ public class AndSource<T> extends AndPredicate<T>
|
||||
return new ListResultSet<>(r);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMatchable() {
|
||||
return isVisibleToPredicate != null || super.isMatchable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(T object) throws OrmException {
|
||||
if (isVisibleToPredicate != null && !isVisibleToPredicate.match(object)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (super.isMatchable() && !super.match(object)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private Iterable<T> buffer(ResultSet<T> scanner) {
|
||||
return FluentIterable.from(Iterables.partition(scanner, 50))
|
||||
.transformAndConcat(new Function<List<T>, List<T>>() {
|
||||
@@ -156,7 +187,7 @@ public class AndSource<T> extends AndPredicate<T>
|
||||
int cmp = ai - bi;
|
||||
|
||||
if (cmp == 0) {
|
||||
cmp = a.getCost() - b.getCost();
|
||||
cmp = a.estimateCost() - b.estimateCost();
|
||||
}
|
||||
|
||||
if (cmp == 0
|
||||
|
@@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2016 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query;
|
||||
|
||||
public abstract class IsVisibleToPredicate<T> extends OperatorPredicate<T>
|
||||
implements Matchable<T> {
|
||||
public IsVisibleToPredicate(String name, String value) {
|
||||
super(name, value);
|
||||
}
|
||||
}
|
@@ -14,7 +14,7 @@
|
||||
|
||||
package com.google.gerrit.server.query;
|
||||
|
||||
public class LimitPredicate<T> extends IntPredicate<T> {
|
||||
public class LimitPredicate<T> extends IntPredicate<T> implements Matchable<T> {
|
||||
@SuppressWarnings("unchecked")
|
||||
public static Integer getLimit(String fieldName, Predicate<?> p) {
|
||||
IntPredicate<?> ip = QueryBuilder.find(p, IntPredicate.class, fieldName);
|
||||
|
@@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2016 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query;
|
||||
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public interface Matchable<T> {
|
||||
/**
|
||||
* Does this predicate match this object?
|
||||
*
|
||||
* @throws OrmException
|
||||
*/
|
||||
boolean match(T object) throws OrmException;
|
||||
|
||||
/** @return a cost estimate to run this predicate, higher figures cost more. */
|
||||
int getCost();
|
||||
}
|
@@ -14,6 +14,8 @@
|
||||
|
||||
package com.google.gerrit.server.query;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -21,7 +23,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/** Negates the result of another predicate. */
|
||||
public class NotPredicate<T> extends Predicate<T> {
|
||||
public class NotPredicate<T> extends Predicate<T> implements Matchable<T> {
|
||||
private final Predicate<T> that;
|
||||
|
||||
protected NotPredicate(final Predicate<T> that) {
|
||||
@@ -57,14 +59,21 @@ public class NotPredicate<T> extends Predicate<T> {
|
||||
return new NotPredicate<>(children.iterator().next());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMatchable() {
|
||||
return that.isMatchable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(final T object) throws OrmException {
|
||||
return !that.match(object);
|
||||
checkState(that.isMatchable(), "match invoked, but child predicate %s "
|
||||
+ "doesn't implement %s", that, Matchable.class.getName());
|
||||
return !that.asMatchable().match(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return that.getCost();
|
||||
return that.estimateCost();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
package com.google.gerrit.server.query;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -23,7 +25,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/** Requires one predicate to be true. */
|
||||
public class OrPredicate<T> extends Predicate<T> {
|
||||
public class OrPredicate<T> extends Predicate<T> implements Matchable<T> {
|
||||
private final List<Predicate<T>> children;
|
||||
private final int cost;
|
||||
|
||||
@@ -39,11 +41,11 @@ public class OrPredicate<T> extends Predicate<T> {
|
||||
if (getClass() == p.getClass()) {
|
||||
for (Predicate<T> gp : p.getChildren()) {
|
||||
t.add(gp);
|
||||
c += gp.getCost();
|
||||
c += gp.estimateCost();
|
||||
}
|
||||
} else {
|
||||
t.add(p);
|
||||
c += p.getCost();
|
||||
c += p.estimateCost();
|
||||
}
|
||||
}
|
||||
children = t;
|
||||
@@ -70,10 +72,22 @@ public class OrPredicate<T> extends Predicate<T> {
|
||||
return new OrPredicate<>(children);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMatchable() {
|
||||
for (Predicate<T> c : children) {
|
||||
if (!c.isMatchable()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(final T object) throws OrmException {
|
||||
for (final Predicate<T> c : children) {
|
||||
if (c.match(object)) {
|
||||
checkState(c.isMatchable(), "match invoked, but child predicate %s "
|
||||
+ "doesn't implement %s", c, Matchable.class.getName());
|
||||
if (c.asMatchable().match(object)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@@ -14,8 +14,9 @@
|
||||
|
||||
package com.google.gerrit.server.query;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -113,15 +114,23 @@ public abstract class Predicate<T> {
|
||||
/** Create a copy of this predicate, with new children. */
|
||||
public abstract Predicate<T> copy(Collection<? extends Predicate<T>> children);
|
||||
|
||||
/**
|
||||
* Does this predicate match this object?
|
||||
*
|
||||
* @throws OrmException
|
||||
*/
|
||||
public abstract boolean match(T object) throws OrmException;
|
||||
public boolean isMatchable() {
|
||||
return this instanceof Matchable;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Matchable<T> asMatchable() {
|
||||
checkState(isMatchable(), "not matchable");
|
||||
return (Matchable<T>) this;
|
||||
}
|
||||
|
||||
/** @return a cost estimate to run this predicate, higher figures cost more. */
|
||||
public abstract int getCost();
|
||||
public int estimateCost() {
|
||||
if (!isMatchable()) {
|
||||
return 1;
|
||||
}
|
||||
return asMatchable().getCost();
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract int hashCode();
|
||||
@@ -129,7 +138,7 @@ public abstract class Predicate<T> {
|
||||
@Override
|
||||
public abstract boolean equals(Object other);
|
||||
|
||||
private static class Any<T> extends Predicate<T> {
|
||||
private static class Any<T> extends Predicate<T> implements Matchable<T> {
|
||||
private static final Any<Object> INSTANCE = new Any<>();
|
||||
|
||||
private Any() {
|
||||
|
@@ -18,25 +18,10 @@ import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.account.AccountState;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.account.AccountField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class AccountIdPredicate extends IndexPredicate<AccountState> {
|
||||
private final Account.Id accountId;
|
||||
|
||||
public AccountIdPredicate(Account.Id accountId) {
|
||||
super(AccountField.ID, AccountQueryBuilder.FIELD_ACCOUNT,
|
||||
accountId.toString());
|
||||
this.accountId = accountId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(AccountState accountState) throws OrmException {
|
||||
return accountId.equals(accountState.getAccount().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -17,11 +17,12 @@ package com.google.gerrit.server.query.account;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.account.AccountControl;
|
||||
import com.google.gerrit.server.account.AccountState;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gerrit.server.query.IsVisibleToPredicate;
|
||||
import com.google.gerrit.server.query.change.SingleGroupUser;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class IsVisibleToPredicate extends OperatorPredicate<AccountState> {
|
||||
public class AccountIsVisibleToPredicate
|
||||
extends IsVisibleToPredicate<AccountState> {
|
||||
private static String describe(CurrentUser user) {
|
||||
if (user.isIdentifiedUser()) {
|
||||
return user.getAccountId().toString();
|
||||
@@ -35,7 +36,7 @@ public class IsVisibleToPredicate extends OperatorPredicate<AccountState> {
|
||||
|
||||
private final AccountControl accountControl;
|
||||
|
||||
IsVisibleToPredicate(AccountControl accountControl) {
|
||||
AccountIsVisibleToPredicate(AccountControl accountControl) {
|
||||
super(AccountQueryBuilder.FIELD_VISIBLETO,
|
||||
describe(accountControl.getUser()));
|
||||
this.accountControl = accountControl;
|
@@ -17,7 +17,6 @@ package com.google.gerrit.server.query.account;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.gerrit.server.query.account.AccountQueryBuilder.FIELD_LIMIT;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.account.AccountControl;
|
||||
import com.google.gerrit.server.account.AccountState;
|
||||
@@ -38,7 +37,7 @@ public class AccountQueryProcessor extends QueryProcessor<AccountState> {
|
||||
static {
|
||||
// It is assumed that basic rewrites do not touch visibleto predicates.
|
||||
checkState(
|
||||
!IsVisibleToPredicate.class.isAssignableFrom(IndexPredicate.class),
|
||||
!AccountIsVisibleToPredicate.class.isAssignableFrom(IndexPredicate.class),
|
||||
"AccountQueryProcessor assumes visibleto is not used by the index rewriter.");
|
||||
}
|
||||
|
||||
@@ -57,7 +56,7 @@ public class AccountQueryProcessor extends QueryProcessor<AccountState> {
|
||||
@Override
|
||||
protected Predicate<AccountState> enforceVisibility(
|
||||
Predicate<AccountState> pred) {
|
||||
return new AndSource<>(ImmutableList.of(pred,
|
||||
new IsVisibleToPredicate(accountControlFactory.get())));
|
||||
return new AndSource<>(pred,
|
||||
new AccountIsVisibleToPredicate(accountControlFactory.get()));
|
||||
}
|
||||
}
|
||||
|
@@ -14,12 +14,11 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.IntegerRangePredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class AddedPredicate extends IntegerRangePredicate<ChangeData> {
|
||||
public class AddedPredicate extends IntegerRangeChangePredicate {
|
||||
AddedPredicate(String value) throws QueryParseException {
|
||||
super(ChangeField.ADDED, value);
|
||||
}
|
||||
|
@@ -14,14 +14,13 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.TimestampRangePredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class AfterPredicate extends TimestampRangePredicate<ChangeData> {
|
||||
public class AfterPredicate extends TimestampRangeChangePredicate {
|
||||
private final Date cut;
|
||||
|
||||
AfterPredicate(String value) throws QueryParseException {
|
||||
|
@@ -20,13 +20,12 @@ import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.config.ConfigUtil;
|
||||
import com.google.gerrit.server.index.TimestampRangePredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
|
||||
public class AgePredicate extends TimestampRangePredicate<ChangeData> {
|
||||
public class AgePredicate extends TimestampRangeChangePredicate {
|
||||
private final long cut;
|
||||
|
||||
AgePredicate(String value) {
|
||||
|
@@ -15,6 +15,7 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.query.AndSource;
|
||||
import com.google.gerrit.server.query.IsVisibleToPredicate;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.gwtorm.server.OrmRuntimeException;
|
||||
@@ -25,13 +26,13 @@ import java.util.List;
|
||||
public class AndChangeSource extends AndSource<ChangeData>
|
||||
implements ChangeDataSource {
|
||||
|
||||
public AndChangeSource(Collection<? extends Predicate<ChangeData>> that) {
|
||||
super(that, 0);
|
||||
public AndChangeSource(Collection<Predicate<ChangeData>> that) {
|
||||
super(that);
|
||||
}
|
||||
|
||||
public AndChangeSource(Collection<? extends Predicate<ChangeData>> that,
|
||||
int start) {
|
||||
super(that, start);
|
||||
public AndChangeSource(Predicate<ChangeData> that,
|
||||
IsVisibleToPredicate<ChangeData> isVisibleToPredicate, int start) {
|
||||
super(that, isVisibleToPredicate, start);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -17,11 +17,10 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.AUTHOR;
|
||||
import static com.google.gerrit.server.query.change.ChangeQueryBuilder.FIELD_AUTHOR;
|
||||
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class AuthorPredicate extends IndexPredicate<ChangeData> {
|
||||
public class AuthorPredicate extends ChangeIndexPredicate {
|
||||
AuthorPredicate(String value) {
|
||||
super(AUTHOR, FIELD_AUTHOR, value.toLowerCase());
|
||||
}
|
||||
|
@@ -14,14 +14,13 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.TimestampRangePredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class BeforePredicate extends TimestampRangePredicate<ChangeData> {
|
||||
public class BeforePredicate extends TimestampRangeChangePredicate {
|
||||
private final Date cut;
|
||||
|
||||
BeforePredicate(String value) throws QueryParseException {
|
||||
|
@@ -15,12 +15,11 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
/** Predicate over Change-Id strings (aka Change.Key). */
|
||||
class ChangeIdPredicate extends IndexPredicate<ChangeData> {
|
||||
class ChangeIdPredicate extends ChangeIndexPredicate {
|
||||
ChangeIdPredicate(String id) {
|
||||
super(ChangeField.ID, ChangeQueryBuilder.FIELD_CHANGE, id);
|
||||
}
|
||||
|
@@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2016 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.FieldDef;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.query.Matchable;
|
||||
|
||||
public abstract class ChangeIndexPredicate extends IndexPredicate<ChangeData>
|
||||
implements Matchable<ChangeData> {
|
||||
protected ChangeIndexPredicate(FieldDef<ChangeData, ?> def, String value) {
|
||||
super(def, value);
|
||||
}
|
||||
|
||||
protected ChangeIndexPredicate(FieldDef<ChangeData, ?> def, String name,
|
||||
String value) {
|
||||
super(def, name, value);
|
||||
}
|
||||
}
|
@@ -20,11 +20,11 @@ import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.project.NoSuchChangeException;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gerrit.server.query.IsVisibleToPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
class IsVisibleToPredicate extends OperatorPredicate<ChangeData> {
|
||||
class ChangeIsVisibleToPredicate extends IsVisibleToPredicate<ChangeData> {
|
||||
private static String describe(CurrentUser user) {
|
||||
if (user.isIdentifiedUser()) {
|
||||
return user.getAccountId().toString();
|
||||
@@ -41,7 +41,8 @@ class IsVisibleToPredicate extends OperatorPredicate<ChangeData> {
|
||||
private final ChangeControl.GenericFactory changeControl;
|
||||
private final CurrentUser user;
|
||||
|
||||
IsVisibleToPredicate(Provider<ReviewDb> db, ChangeNotes.Factory notesFactory,
|
||||
ChangeIsVisibleToPredicate(Provider<ReviewDb> db,
|
||||
ChangeNotes.Factory notesFactory,
|
||||
ChangeControl.GenericFactory changeControlFactory, CurrentUser user) {
|
||||
super(ChangeQueryBuilder.FIELD_VISIBLETO, describe(user));
|
||||
this.db = db;
|
@@ -0,0 +1,26 @@
|
||||
// Copyright (C) 2016 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.query.Matchable;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
|
||||
public abstract class ChangeOperatorPredicate extends
|
||||
OperatorPredicate<ChangeData> implements Matchable<ChangeData> {
|
||||
|
||||
protected ChangeOperatorPredicate(String name, String value) {
|
||||
super(name, value);
|
||||
}
|
||||
}
|
@@ -768,7 +768,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
|
||||
}
|
||||
|
||||
public Predicate<ChangeData> visibleto(CurrentUser user) {
|
||||
return new IsVisibleToPredicate(args.db, args.notesFactory,
|
||||
return new ChangeIsVisibleToPredicate(args.db, args.notesFactory,
|
||||
args.changeControlGenericFactory, user);
|
||||
}
|
||||
|
||||
|
@@ -17,7 +17,6 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.gerrit.server.query.change.ChangeQueryBuilder.FIELD_LIMIT;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.index.IndexConfig;
|
||||
@@ -44,7 +43,7 @@ public class ChangeQueryProcessor extends QueryProcessor<ChangeData> {
|
||||
static {
|
||||
// It is assumed that basic rewrites do not touch visibleto predicates.
|
||||
checkState(
|
||||
!IsVisibleToPredicate.class.isAssignableFrom(IndexPredicate.class),
|
||||
!ChangeIsVisibleToPredicate.class.isAssignableFrom(IndexPredicate.class),
|
||||
"ChangeQueryProcessor assumes visibleto is not used by the index rewriter.");
|
||||
}
|
||||
|
||||
@@ -80,7 +79,7 @@ public class ChangeQueryProcessor extends QueryProcessor<ChangeData> {
|
||||
@Override
|
||||
protected Predicate<ChangeData> enforceVisibility(
|
||||
Predicate<ChangeData> pred) {
|
||||
return new AndChangeSource(ImmutableList.of(pred, new IsVisibleToPredicate(db,
|
||||
notesFactory, changeControlFactory, userProvider.get())), start);
|
||||
return new AndChangeSource(pred, new ChangeIsVisibleToPredicate(db,
|
||||
notesFactory, changeControlFactory, userProvider.get()), start);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,31 @@
|
||||
// Copyright (C) 2016 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.FieldDef;
|
||||
import com.google.gerrit.server.index.RegexPredicate;
|
||||
import com.google.gerrit.server.query.Matchable;
|
||||
|
||||
public abstract class ChangeRegexPredicate extends RegexPredicate<ChangeData>
|
||||
implements Matchable<ChangeData> {
|
||||
protected ChangeRegexPredicate(FieldDef<ChangeData, ?> def, String value) {
|
||||
super(def, value);
|
||||
}
|
||||
|
||||
protected ChangeRegexPredicate(FieldDef<ChangeData, ?> def, String name,
|
||||
String value) {
|
||||
super(def, name, value);
|
||||
}
|
||||
}
|
@@ -16,7 +16,6 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Change.Status;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
@@ -36,7 +35,7 @@ import java.util.TreeMap;
|
||||
* <p>
|
||||
* Status names are looked up by prefix case-insensitively.
|
||||
*/
|
||||
public final class ChangeStatusPredicate extends IndexPredicate<ChangeData> {
|
||||
public final class ChangeStatusPredicate extends ChangeIndexPredicate {
|
||||
private static final TreeMap<String, Predicate<ChangeData>> PREDICATES;
|
||||
private static final Predicate<ChangeData> CLOSED;
|
||||
private static final Predicate<ChangeData> OPEN;
|
||||
|
@@ -17,13 +17,12 @@ package com.google.gerrit.server.query.change;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
||||
import com.google.gerrit.reviewdb.client.PatchLineComment;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
class CommentByPredicate extends IndexPredicate<ChangeData> {
|
||||
class CommentByPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id id;
|
||||
|
||||
CommentByPredicate(Account.Id id) {
|
||||
|
@@ -14,7 +14,6 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.index.change.ChangeIndex;
|
||||
import com.google.gerrit.server.index.change.IndexedChangeQuery;
|
||||
@@ -22,7 +21,7 @@ import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class CommentPredicate extends IndexPredicate<ChangeData> {
|
||||
class CommentPredicate extends ChangeIndexPredicate {
|
||||
private final ChangeIndex index;
|
||||
|
||||
CommentPredicate(ChangeIndex index, String value) {
|
||||
|
@@ -20,10 +20,9 @@ import static org.eclipse.jgit.lib.Constants.OBJECT_ID_STRING_LENGTH;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.server.index.FieldDef;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class CommitPredicate extends IndexPredicate<ChangeData> {
|
||||
class CommitPredicate extends ChangeIndexPredicate {
|
||||
static FieldDef<ChangeData, ?> commitField(String id) {
|
||||
if (id.length() == OBJECT_ID_STRING_LENGTH) {
|
||||
return EXACT_COMMIT;
|
||||
|
@@ -17,11 +17,10 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.COMMITTER;
|
||||
import static com.google.gerrit.server.query.change.ChangeQueryBuilder.FIELD_COMMITTER;
|
||||
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class CommitterPredicate extends IndexPredicate<ChangeData> {
|
||||
public class CommitterPredicate extends ChangeIndexPredicate {
|
||||
CommitterPredicate(String value) {
|
||||
super(COMMITTER, FIELD_COMMITTER, value.toLowerCase());
|
||||
}
|
||||
|
@@ -25,7 +25,6 @@ import com.google.gerrit.server.git.strategy.SubmitDryRun;
|
||||
import com.google.gerrit.server.project.NoSuchProjectException;
|
||||
import com.google.gerrit.server.project.ProjectCache;
|
||||
import com.google.gerrit.server.project.ProjectState;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gerrit.server.query.OrPredicate;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryBuilder.Arguments;
|
||||
@@ -84,7 +83,7 @@ class ConflictsPredicate extends OrPredicate<ChangeData> {
|
||||
predicatesForOneChange.add(or(or(filePredicates),
|
||||
new IsMergePredicate(args, value)));
|
||||
|
||||
predicatesForOneChange.add(new OperatorPredicate<ChangeData>(
|
||||
predicatesForOneChange.add(new ChangeOperatorPredicate(
|
||||
ChangeQueryBuilder.FIELD_CONFLICTS, value) {
|
||||
|
||||
@Override
|
||||
|
@@ -14,12 +14,11 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.IntegerRangePredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class DeletedPredicate extends IntegerRangePredicate<ChangeData> {
|
||||
public class DeletedPredicate extends IntegerRangeChangePredicate {
|
||||
DeletedPredicate(String value) throws QueryParseException {
|
||||
super(ChangeField.DELETED, value);
|
||||
}
|
||||
|
@@ -14,13 +14,12 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.IntegerRangePredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gerrit.server.query.change.ChangeData.ChangedLines;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class DeltaPredicate extends IntegerRangePredicate<ChangeData> {
|
||||
public class DeltaPredicate extends IntegerRangeChangePredicate {
|
||||
DeltaPredicate(String value) throws QueryParseException {
|
||||
super(ChangeField.DELTA, value);
|
||||
}
|
||||
|
@@ -16,12 +16,11 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Branch;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
class DestinationPredicate extends OperatorPredicate<ChangeData> {
|
||||
class DestinationPredicate extends ChangeOperatorPredicate {
|
||||
Set<Branch.NameKey> destinations;
|
||||
|
||||
DestinationPredicate(Set<Branch.NameKey> destinations, String value) {
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class EditByPredicate extends IndexPredicate<ChangeData> {
|
||||
class EditByPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id id;
|
||||
|
||||
EditByPredicate(Account.Id id) {
|
||||
|
@@ -14,13 +14,12 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryBuilder.Arguments;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class EqualsFilePredicate extends IndexPredicate<ChangeData> {
|
||||
class EqualsFilePredicate extends ChangeIndexPredicate {
|
||||
static Predicate<ChangeData> create(Arguments args, String value) {
|
||||
Predicate<ChangeData> eqPath =
|
||||
new EqualsPathPredicate(ChangeQueryBuilder.FIELD_FILE, value);
|
||||
|
@@ -23,7 +23,6 @@ import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchSetApproval;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.project.NoSuchChangeException;
|
||||
@@ -32,7 +31,7 @@ import com.google.gerrit.server.project.ProjectState;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
class EqualsLabelPredicate extends IndexPredicate<ChangeData> {
|
||||
class EqualsLabelPredicate extends ChangeIndexPredicate {
|
||||
private final ProjectCache projectCache;
|
||||
private final ChangeControl.GenericFactory ccFactory;
|
||||
private final IdentifiedUser.GenericFactory userFactory;
|
||||
|
@@ -14,14 +14,13 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
class EqualsPathPredicate extends IndexPredicate<ChangeData> {
|
||||
class EqualsPathPredicate extends ChangeIndexPredicate {
|
||||
private final String value;
|
||||
|
||||
EqualsPathPredicate(String fieldName, String value) {
|
||||
|
@@ -17,10 +17,9 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.EXACT_TOPIC;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class ExactTopicPredicate extends IndexPredicate<ChangeData> {
|
||||
class ExactTopicPredicate extends ChangeIndexPredicate {
|
||||
ExactTopicPredicate(String topic) {
|
||||
super(EXACT_TOPIC, topic);
|
||||
}
|
||||
|
@@ -18,14 +18,13 @@ import static com.google.gerrit.server.index.change.ChangeField.FUZZY_TOPIC;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeIndex;
|
||||
import com.google.gerrit.server.index.change.IndexedChangeQuery;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class FuzzyTopicPredicate extends IndexPredicate<ChangeData> {
|
||||
class FuzzyTopicPredicate extends ChangeIndexPredicate {
|
||||
private final ChangeIndex index;
|
||||
|
||||
FuzzyTopicPredicate(String topic, ChangeIndex index) {
|
||||
|
@@ -15,13 +15,12 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
class GroupPredicate extends IndexPredicate<ChangeData> {
|
||||
class GroupPredicate extends ChangeIndexPredicate {
|
||||
GroupPredicate(String group) {
|
||||
super(ChangeField.GROUP, group);
|
||||
}
|
||||
|
@@ -17,7 +17,6 @@ package com.google.gerrit.server.query.change;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchLineComment;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryBuilder.Arguments;
|
||||
import com.google.gwtorm.server.ListResultSet;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
@@ -29,8 +28,8 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Deprecated
|
||||
class HasDraftByLegacyPredicate extends OperatorPredicate<ChangeData> implements
|
||||
ChangeDataSource {
|
||||
class HasDraftByLegacyPredicate extends ChangeOperatorPredicate
|
||||
implements ChangeDataSource {
|
||||
private final Arguments args;
|
||||
private final Account.Id accountId;
|
||||
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class HasDraftByPredicate extends IndexPredicate<ChangeData> {
|
||||
class HasDraftByPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id accountId;
|
||||
|
||||
HasDraftByPredicate(Account.Id accountId) {
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class HasStarsPredicate extends IndexPredicate<ChangeData> {
|
||||
public class HasStarsPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id accountId;
|
||||
|
||||
HasStarsPredicate(Account.Id accountId) {
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.change.HashtagsUtil;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class HashtagPredicate extends IndexPredicate<ChangeData> {
|
||||
class HashtagPredicate extends ChangeIndexPredicate {
|
||||
HashtagPredicate(String hashtag) {
|
||||
super(ChangeField.HASHTAG, HashtagsUtil.cleanupHashtag(hashtag));
|
||||
}
|
||||
|
@@ -0,0 +1,34 @@
|
||||
// Copyright (C) 2016 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.FieldDef;
|
||||
import com.google.gerrit.server.index.IntegerRangePredicate;
|
||||
import com.google.gerrit.server.query.Matchable;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
|
||||
public abstract class IntegerRangeChangePredicate
|
||||
extends IntegerRangePredicate<ChangeData> implements Matchable<ChangeData> {
|
||||
|
||||
protected IntegerRangeChangePredicate(FieldDef<ChangeData, Integer> type,
|
||||
String value) throws QueryParseException {
|
||||
super(type, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return 1;
|
||||
}
|
||||
}
|
@@ -15,7 +15,6 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.git.CodeReviewCommit;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryBuilder.Arguments;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
@@ -26,7 +25,7 @@ import org.eclipse.jgit.revwalk.RevWalk;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class IsMergePredicate extends OperatorPredicate<ChangeData> {
|
||||
public class IsMergePredicate extends ChangeOperatorPredicate {
|
||||
private final Arguments args;
|
||||
|
||||
public IsMergePredicate(Arguments args, String value) {
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.FieldDef.FillArgs;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class IsMergeablePredicate extends IndexPredicate<ChangeData> {
|
||||
class IsMergeablePredicate extends ChangeIndexPredicate {
|
||||
private final FillArgs args;
|
||||
|
||||
IsMergeablePredicate(FillArgs args) {
|
||||
|
@@ -17,7 +17,6 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.REVIEWEDBY;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
@@ -27,7 +26,7 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
class IsReviewedPredicate extends IndexPredicate<ChangeData> {
|
||||
class IsReviewedPredicate extends ChangeIndexPredicate {
|
||||
private static final Account.Id NOT_REVIEWED =
|
||||
new Account.Id(ChangeField.NOT_REVIEWED);
|
||||
|
||||
|
@@ -15,12 +15,11 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
@Deprecated
|
||||
class IsStarredByPredicate extends IndexPredicate<ChangeData> {
|
||||
class IsStarredByPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id accountId;
|
||||
|
||||
IsStarredByPredicate(Account.Id accountId) {
|
||||
|
@@ -17,10 +17,9 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.LEGACY_ID;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
|
||||
/** Predicate over change number (aka legacy ID or Change.Id). */
|
||||
public class LegacyChangeIdPredicate extends IndexPredicate<ChangeData> {
|
||||
public class LegacyChangeIdPredicate extends ChangeIndexPredicate {
|
||||
private final Change.Id id;
|
||||
|
||||
LegacyChangeIdPredicate(Change.Id id) {
|
||||
|
@@ -15,12 +15,11 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
@Deprecated
|
||||
class LegacyReviewerPredicate extends IndexPredicate<ChangeData> {
|
||||
class LegacyReviewerPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id id;
|
||||
|
||||
LegacyReviewerPredicate(Account.Id id) {
|
||||
|
@@ -14,7 +14,6 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.index.change.ChangeIndex;
|
||||
import com.google.gerrit.server.index.change.IndexedChangeQuery;
|
||||
@@ -26,7 +25,7 @@ import com.google.gwtorm.server.OrmException;
|
||||
* Predicate to match changes that contains specified text in commit messages
|
||||
* body.
|
||||
*/
|
||||
class MessagePredicate extends IndexPredicate<ChangeData> {
|
||||
class MessagePredicate extends ChangeIndexPredicate {
|
||||
private final ChangeIndex index;
|
||||
|
||||
MessagePredicate(ChangeIndex index, String value) {
|
||||
|
@@ -16,11 +16,10 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class OwnerPredicate extends IndexPredicate<ChangeData> {
|
||||
class OwnerPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id id;
|
||||
|
||||
OwnerPredicate(Account.Id id) {
|
||||
|
@@ -17,10 +17,9 @@ package com.google.gerrit.server.query.change;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class OwnerinPredicate extends OperatorPredicate<ChangeData> {
|
||||
class OwnerinPredicate extends ChangeOperatorPredicate {
|
||||
private final IdentifiedUser.GenericFactory userFactory;
|
||||
private final AccountGroup.UUID uuid;
|
||||
|
||||
|
@@ -16,11 +16,10 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class ProjectPredicate extends IndexPredicate<ChangeData> {
|
||||
class ProjectPredicate extends ChangeIndexPredicate {
|
||||
ProjectPredicate(String id) {
|
||||
super(ChangeField.PROJECT, id);
|
||||
}
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class ProjectPrefixPredicate extends IndexPredicate<ChangeData> {
|
||||
class ProjectPrefixPredicate extends ChangeIndexPredicate {
|
||||
ProjectPrefixPredicate(String prefix) {
|
||||
super(ChangeField.PROJECTS, prefix);
|
||||
}
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class RefPredicate extends IndexPredicate<ChangeData> {
|
||||
class RefPredicate extends ChangeIndexPredicate {
|
||||
RefPredicate(String ref) {
|
||||
super(ChangeField.REF, ref);
|
||||
}
|
||||
|
@@ -14,14 +14,13 @@
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.RegexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.util.RegexListSearcher;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
class RegexPathPredicate extends RegexPredicate<ChangeData> {
|
||||
class RegexPathPredicate extends ChangeRegexPredicate {
|
||||
RegexPathPredicate(String re) {
|
||||
super(ChangeField.PATH, re);
|
||||
}
|
||||
|
@@ -16,14 +16,13 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.server.index.RegexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import dk.brics.automaton.RegExp;
|
||||
import dk.brics.automaton.RunAutomaton;
|
||||
|
||||
class RegexProjectPredicate extends RegexPredicate<ChangeData> {
|
||||
class RegexProjectPredicate extends ChangeRegexPredicate {
|
||||
private final RunAutomaton pattern;
|
||||
|
||||
RegexProjectPredicate(String re) {
|
||||
|
@@ -15,14 +15,13 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.RegexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import dk.brics.automaton.RegExp;
|
||||
import dk.brics.automaton.RunAutomaton;
|
||||
|
||||
class RegexRefPredicate extends RegexPredicate<ChangeData> {
|
||||
class RegexRefPredicate extends ChangeRegexPredicate {
|
||||
private final RunAutomaton pattern;
|
||||
|
||||
RegexRefPredicate(String re) {
|
||||
|
@@ -17,13 +17,12 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.gerrit.server.index.change.ChangeField.FUZZY_TOPIC;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.RegexPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import dk.brics.automaton.RegExp;
|
||||
import dk.brics.automaton.RunAutomaton;
|
||||
|
||||
class RegexTopicPredicate extends RegexPredicate<ChangeData> {
|
||||
class RegexTopicPredicate extends ChangeRegexPredicate {
|
||||
private final RunAutomaton pattern;
|
||||
|
||||
RegexTopicPredicate(String re) {
|
||||
|
@@ -16,7 +16,6 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gerrit.server.notedb.ReviewerStateInternal;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
@@ -26,7 +25,7 @@ import com.google.gwtorm.server.OrmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
class ReviewerPredicate extends IndexPredicate<ChangeData> {
|
||||
class ReviewerPredicate extends ChangeIndexPredicate {
|
||||
@SuppressWarnings("deprecation")
|
||||
static Predicate<ChangeData> create(Arguments args, Account.Id id) {
|
||||
List<Predicate<ChangeData>> and = new ArrayList<>(2);
|
||||
|
@@ -17,10 +17,9 @@ package com.google.gerrit.server.query.change;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class ReviewerinPredicate extends OperatorPredicate<ChangeData> {
|
||||
class ReviewerinPredicate extends ChangeOperatorPredicate {
|
||||
private final IdentifiedUser.GenericFactory userFactory;
|
||||
private final AccountGroup.UUID uuid;
|
||||
|
||||
|
@@ -16,11 +16,10 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.StarredChangesUtil;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class StarPredicate extends IndexPredicate<ChangeData> {
|
||||
public class StarPredicate extends ChangeIndexPredicate {
|
||||
private final Account.Id accountId;
|
||||
private final String label;
|
||||
|
||||
|
@@ -15,11 +15,10 @@
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class SubmissionIdPredicate extends IndexPredicate<ChangeData> {
|
||||
class SubmissionIdPredicate extends ChangeIndexPredicate {
|
||||
|
||||
SubmissionIdPredicate(String changeSet) {
|
||||
super(ChangeField.SUBMISSIONID, changeSet);
|
||||
|
@@ -0,0 +1,34 @@
|
||||
// Copyright (C) 2016 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.index.FieldDef;
|
||||
import com.google.gerrit.server.index.TimestampRangePredicate;
|
||||
import com.google.gerrit.server.query.Matchable;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
|
||||
public abstract class TimestampRangeChangePredicate extends
|
||||
TimestampRangePredicate<ChangeData> implements Matchable<ChangeData> {
|
||||
protected TimestampRangeChangePredicate(FieldDef<ChangeData, Timestamp> def,
|
||||
String name, String value) {
|
||||
super(def, name, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return 1;
|
||||
}
|
||||
}
|
@@ -16,7 +16,6 @@ package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.config.TrackingFooters;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.change.ChangeField;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
@@ -27,7 +26,7 @@ import org.slf4j.LoggerFactory;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
class TrackingIdPredicate extends IndexPredicate<ChangeData> {
|
||||
class TrackingIdPredicate extends ChangeIndexPredicate {
|
||||
private static final Logger log = LoggerFactory.getLogger(TrackingIdPredicate.class);
|
||||
|
||||
private final TrackingFooters trackingFooters;
|
||||
|
@@ -18,7 +18,6 @@ import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryBuilder;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import org.junit.Ignore;
|
||||
|
||||
@@ -44,16 +43,6 @@ public class FakeQueryBuilder extends ChangeQueryBuilder {
|
||||
}
|
||||
|
||||
private Predicate<ChangeData> predicate(String name, String value) {
|
||||
return new OperatorPredicate<ChangeData>(name, value) {
|
||||
@Override
|
||||
public boolean match(ChangeData object) throws OrmException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
return new OperatorPredicate<ChangeData>(name, value) {};
|
||||
}
|
||||
}
|
||||
|
@@ -24,16 +24,6 @@ public abstract class PredicateTest extends GerritBaseTests {
|
||||
protected TestPredicate(String name, String value) {
|
||||
super(name, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(String object) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCost() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected static TestPredicate f(String name, String value) {
|
||||
|
Submodule plugins/cookbook-plugin updated: 6eecd42fd6...2d40ee25a0
Reference in New Issue
Block a user