From e722f8f63abdad25482efd5eda1b3626a1f85fcf Mon Sep 17 00:00:00 2001 From: Jukka Jokiniva Date: Wed, 3 Oct 2018 09:22:08 +0300 Subject: Update status values staged, integrating and deferred for java modules Change-Id: I8a3bd92229be84b075e31b3d969107e667a60afb Reviewed-by: Daniel Smith --- java/com/google/gerrit/common/PageLinks.java | 9 ++++++ java/com/google/gerrit/entities/Change.java | 28 ++++++++++++++++-- .../gerrit/extensions/client/ChangeStatus.java | 34 +++++++++++++++++++++- .../server/query/change/InternalChangeQuery.java | 4 +++ 4 files changed, 72 insertions(+), 3 deletions(-) diff --git a/java/com/google/gerrit/common/PageLinks.java b/java/com/google/gerrit/common/PageLinks.java index 38de5b15a1..98dd697374 100644 --- a/java/com/google/gerrit/common/PageLinks.java +++ b/java/com/google/gerrit/common/PageLinks.java @@ -141,6 +141,9 @@ public class PageLinks { public static String topicQuery(Status status, String topic) { switch (status) { case ABANDONED: + case DEFERRED: + case INTEGRATING: + case STAGED: return toChangeQuery(status(status) + " " + op("topic", topic)); case MERGED: case NEW: @@ -168,6 +171,12 @@ public class PageLinks { return "status:abandoned"; case MERGED: return "status:merged"; + case INTEGRATING: + return "status:integrating"; + case DEFERRED: + return "status:deferred"; + case STAGED: + return "status:staged"; case NEW: default: return "status:open"; diff --git a/java/com/google/gerrit/entities/Change.java b/java/com/google/gerrit/entities/Change.java index 845a9bb8e4..12c10d2e9b 100644 --- a/java/com/google/gerrit/entities/Change.java +++ b/java/com/google/gerrit/entities/Change.java @@ -313,9 +313,16 @@ public final class Change { private static final char MIN_OPEN = 'a'; /** Database constant for {@link Status#NEW}. */ public static final char STATUS_NEW = 'n'; + /** Maximum database status constant for an open change. */ private static final char MAX_OPEN = 'z'; + /** Database constant for {@link Status#STAGED}. */ + public static final char STATUS_STAGED = 'R'; + + /** Database constant for {@link Status#INTEGRATING}. */ + public static final char STATUS_INTEGRATING = 'I'; + /** Database constant for {@link Status#MERGED}. */ public static final char STATUS_MERGED = 'M'; @@ -349,6 +356,9 @@ public final class Change { */ NEW(STATUS_NEW, ChangeStatus.NEW), + STAGED(STATUS_STAGED, ChangeStatus.STAGED), + INTEGRATING(STATUS_INTEGRATING, ChangeStatus.INTEGRATING), + /** * Change is closed, and submitted to its destination branch. * @@ -363,7 +373,9 @@ public final class Change { * patch set, and it cannot be merged. Draft comments however may be published, permitting * reviewers to send constructive feedback. */ - ABANDONED('A', ChangeStatus.ABANDONED); + ABANDONED('A', ChangeStatus.ABANDONED), + + DEFERRED('D', ChangeStatus.DEFERRED); static { boolean ok = true; @@ -691,8 +703,20 @@ public final class Change { return getStatus().equals(Status.ABANDONED); } + public boolean isIntegrating() { + return getStatus().equals(Status.INTEGRATING); + } + + public boolean isStaged() { + return getStatus().equals(Status.STAGED); + } + + public boolean isDeferred() { + return getStatus().equals(Status.DEFERRED); + } + public boolean isClosed() { - return isAbandoned() || isMerged(); + return isAbandoned() || isMerged() || isStaged() || isIntegrating() || isDeferred(); } public String getTopic() { diff --git a/java/com/google/gerrit/extensions/client/ChangeStatus.java b/java/com/google/gerrit/extensions/client/ChangeStatus.java index 83d5bd2cc7..89cdf5d468 100644 --- a/java/com/google/gerrit/extensions/client/ChangeStatus.java +++ b/java/com/google/gerrit/extensions/client/ChangeStatus.java @@ -33,6 +33,22 @@ public enum ChangeStatus { */ NEW, + /** + * Change is staged and waiting for CI to start a build of it. + * + *

While a change is staged, it cannot be further modified by adding a replacement patch + * set. + */ + STAGED, + + /** + * Change is integrating in a build on a CI system. + * + *

While a change is integrating, it cannot be further modified by adding a replacement patch + * set. + */ + INTEGRATING, + /** * Change is closed, and submitted to its destination branch. * @@ -54,5 +70,21 @@ public enum ChangeStatus { *

  • {@link #NEW} - when the Restore action is used. * */ - ABANDONED + ABANDONED, + + /** + * Change is closed, but was not submitted to its destination branch. Deferred is similar + * to abandoned, the difference is that the change is expected to be reopened later. + * + *

    Once a change has been deferred, it cannot be further modified by adding a replacement + * patch set, and it cannot be merged. Draft comments however may be published, permitting + * reviewers to send constructive feedback. + * + *

    Changes in the DEFERRED state can be moved to: + * + *

      + *
    • {@link #NEW} - when the Reopen action is used. + *
    + */ + DEFERRED } diff --git a/java/com/google/gerrit/server/query/change/InternalChangeQuery.java b/java/com/google/gerrit/server/query/change/InternalChangeQuery.java index 1012f4a54e..a22b031e6a 100644 --- a/java/com/google/gerrit/server/query/change/InternalChangeQuery.java +++ b/java/com/google/gerrit/server/query/change/InternalChangeQuery.java @@ -152,6 +152,10 @@ public class InternalChangeQuery extends InternalQuery byBranchStatus(BranchNameKey branch, Change.Status status) { + return query(and(ref(branch), project(branch.project()), status(status))); + } + public Iterable byCommitsOnBranchNotMerged( Repository repo, BranchNameKey branch, Collection hashes) throws IOException { return byCommitsOnBranchNotMerged( -- cgit v1.2.3