Move change status parsing into ChangeStatusPredicate

Change-Id: I9ad4156bc24644f9b249f8a87b19b189c6a15f2e
This commit is contained in:
Dave Borowitz
2014-09-07 17:42:00 -07:00
parent ad44b54982
commit 459fa57adb
2 changed files with 14 additions and 15 deletions

View File

@@ -276,17 +276,10 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
@Operator
public Predicate<ChangeData> status(String statusName) {
if ("open".equals(statusName) || "pending".equals(statusName)) {
return status_open();
} else if ("closed".equals(statusName)) {
return ChangeStatusPredicate.closed();
} else if ("reviewed".equalsIgnoreCase(statusName)) {
if ("reviewed".equalsIgnoreCase(statusName)) {
return new IsReviewedPredicate();
} else {
return new ChangeStatusPredicate(statusName);
return ChangeStatusPredicate.parse(statusName);
}
}

View File

@@ -46,6 +46,18 @@ public final class ChangeStatusPredicate extends IndexPredicate<ChangeData> {
VALUES = values.build();
}
public static Predicate<ChangeData> parse(String value) {
if ("open".equals(value) || "pending".equals(value)) {
return open();
} else if ("closed".equals(value)) {
return closed();
} else {
Change.Status status = VALUES.inverse().get(value);
checkArgument(status != null, "invalid change status: %s", value);
return new ChangeStatusPredicate(status);
}
}
public static Predicate<ChangeData> open() {
List<Predicate<ChangeData>> r = new ArrayList<>(4);
for (final Change.Status e : Change.Status.values()) {
@@ -68,12 +80,6 @@ public final class ChangeStatusPredicate extends IndexPredicate<ChangeData> {
private final Change.Status status;
ChangeStatusPredicate(String value) {
super(ChangeField.STATUS, value);
status = VALUES.inverse().get(value);
checkArgument(status != null, "invalid change status: %s", value);
}
ChangeStatusPredicate(Change.Status status) {
super(ChangeField.STATUS, VALUES.get(status));
this.status = status;