summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
diff options
context:
space:
mode:
authorIsmo Haataja <ismo.haataja@digia.com>2013-04-30 15:14:54 +0300
committerIsmo Haataja <ismo.haataja@digia.com>2013-08-22 07:42:01 +0200
commit8a29078540e2d9afb8fe1ff381424df5979d8d81 (patch)
treeaee61f2446422712ebf4e54f368fd4a2be384ec4 /gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
parent42d1d7d1aabd0dcfd0a0439c57c4427e5790136e (diff)
Add new change state "deferred".v2.2.1-based
Support for new change state "deferred" to be able to discern "really dead" from "postponed" changes. This is equal to "abandoned" for all practical purposes except presentation and filtering. State transitions are possible between "review in progress", "abandoned" and "deferred". And menu bar has new "All/deferred" and "My/Deferred Changes" default filters. Task-number: QTQAINFRA-598 Change-Id: I57b4f716fb826c5f246d02463b1ed9c75c4d04ae Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
index c9652fef87..ce9023df04 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
@@ -166,9 +166,25 @@ public class ChangeControl {
&& (change.getStatus() != Change.Status.INTEGRATING);
}
+ /** Can this user defer this change? */
+ public boolean canDefer() {
+ if (change.getTopicId() != null) return false;
+ boolean userCan = isOwner() // owner (aka creator) of the change can defer
+ || getRefControl().isOwner() // branch owner can defer
+ || getProjectControl().isOwner() // project owner can defer
+ || getCurrentUser().isAdministrator() // site administers are god
+ ;
+
+ // Cannot defer changes that are already processed by the continuous
+ // integration system.
+ return userCan
+ && (change.getStatus() != Change.Status.INTEGRATING);
+ }
+
/** Can this user restore this change? */
public boolean canRestore() {
- return canAbandon(); // Anyone who can abandon the change can restore it back
+ // Anyone who can abandon or defer the change can restore it back
+ return canAbandon() || canDefer();
}
/** All value ranges of any allowed label permission. */