Search tr/bug operators using ChangeIndex

Change-Id: Ie08fe8f4038dd7d79fbdfa7de51090fd24eb6d92
This commit is contained in:
Shawn Pearce
2013-06-26 08:46:04 -06:00
parent 704699a89e
commit e4aa07a8fb
2 changed files with 21 additions and 4 deletions

View File

@@ -19,6 +19,7 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.TrackingId;
import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.query.change.ChangeData; import com.google.gerrit.server.query.change.ChangeData;
import com.google.gerrit.server.query.change.ChangeQueryBuilder; import com.google.gerrit.server.query.change.ChangeQueryBuilder;
@@ -44,7 +45,7 @@ import java.util.Set;
*/ */
public class ChangeField { public class ChangeField {
/** Increment whenever making schema changes. */ /** Increment whenever making schema changes. */
public static final int SCHEMA_VERSION = 8; public static final int SCHEMA_VERSION = 9;
/** Legacy change ID. */ /** Legacy change ID. */
public static final FieldDef<ChangeData, Integer> LEGACY_ID = public static final FieldDef<ChangeData, Integer> LEGACY_ID =
@@ -187,6 +188,21 @@ public class ChangeField {
} }
}; };
/** Tracking id extracted from a footer. */
public static final FieldDef<ChangeData, Iterable<String>> TR =
new FieldDef.Repeatable<ChangeData, String>(
ChangeQueryBuilder.FIELD_TR, FieldType.EXACT, false) {
@Override
public Iterable<String> get(ChangeData input, FillArgs args)
throws OrmException {
Set<String> r = Sets.newHashSet();
for (TrackingId id : input.trackingIds(args.db)) {
r.add(id.getTrackingId());
}
return r;
}
};
public static final ImmutableMap<String, FieldDef<ChangeData, ?>> ALL; public static final ImmutableMap<String, FieldDef<ChangeData, ?>> ALL;
static { static {

View File

@@ -17,7 +17,8 @@ package com.google.gerrit.server.query.change;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.TrackingId; import com.google.gerrit.reviewdb.client.TrackingId;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.query.OperatorPredicate; import com.google.gerrit.server.index.ChangeField;
import com.google.gerrit.server.index.IndexPredicate;
import com.google.gwtorm.server.ListResultSet; import com.google.gwtorm.server.ListResultSet;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.ResultSet; import com.google.gwtorm.server.ResultSet;
@@ -26,12 +27,12 @@ import com.google.inject.Provider;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
class TrackingIdPredicate extends OperatorPredicate<ChangeData> implements class TrackingIdPredicate extends IndexPredicate<ChangeData> implements
ChangeDataSource { ChangeDataSource {
private final Provider<ReviewDb> db; private final Provider<ReviewDb> db;
TrackingIdPredicate(Provider<ReviewDb> db, String trackingId) { TrackingIdPredicate(Provider<ReviewDb> db, String trackingId) {
super(ChangeQueryBuilder.FIELD_TR, trackingId); super(ChangeField.TR, trackingId);
this.db = db; this.db = db;
} }