summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java
index ad22330fea..53c9dc41ee 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/ChangeMessageEvent.java
@@ -15,9 +15,11 @@
package com.google.gerrit.server.notedb.rebuild;
import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.ChangeMessage;
+import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gwtorm.server.OrmException;
import java.sql.Timestamp;
@@ -35,11 +37,17 @@ class ChangeMessageEvent extends Event {
"^Change has been successfully (merged|cherry-picked|rebased|pushed).*$"),
Change.Status.NEW, Pattern.compile("^Restored(\n.*)*$"));
+ private static final Pattern PRIVATE_SET_REGEXP = Pattern.compile("^Set private$");
+ private static final Pattern PRIVATE_UNSET_REGEXP = Pattern.compile("^Unset private$");
+
private static final Pattern TOPIC_SET_REGEXP = Pattern.compile("^Topic set to (.+)$");
private static final Pattern TOPIC_CHANGED_REGEXP =
Pattern.compile("^Topic changed from (.+) to (.+)$");
private static final Pattern TOPIC_REMOVED_REGEXP = Pattern.compile("^Topic (.+) removed$");
+ private static final Pattern WIP_SET_REGEXP = Pattern.compile("^Set Work In Progress$");
+ private static final Pattern WIP_UNSET_REGEXP = Pattern.compile("^Set Ready For Review$");
+
private final Change change;
private final Change noteDbChange;
private final Optional<Change.Status> status;
@@ -80,7 +88,9 @@ class ChangeMessageEvent extends Event {
void apply(ChangeUpdate update) throws OrmException {
checkUpdate(update);
update.setChangeMessage(message.getMessage());
+ setPrivate(update);
setTopic(update);
+ setWorkInProgress(update);
if (status.isPresent()) {
Change.Status s = status.get();
@@ -106,6 +116,25 @@ class ChangeMessageEvent extends Event {
return Optional.empty();
}
+ private void setPrivate(ChangeUpdate update) {
+ String msg = message.getMessage();
+ if (msg == null) {
+ return;
+ }
+ Matcher m = PRIVATE_SET_REGEXP.matcher(msg);
+ if (m.matches()) {
+ update.setPrivate(true);
+ noteDbChange.setPrivate(true);
+ return;
+ }
+
+ m = PRIVATE_UNSET_REGEXP.matcher(msg);
+ if (m.matches()) {
+ update.setPrivate(false);
+ noteDbChange.setPrivate(false);
+ }
+ }
+
private void setTopic(ChangeUpdate update) {
String msg = message.getMessage();
if (msg == null) {
@@ -133,6 +162,22 @@ class ChangeMessageEvent extends Event {
}
}
+ private void setWorkInProgress(ChangeUpdate update) {
+ String msg = Strings.nullToEmpty(message.getMessage());
+ String tag = message.getTag();
+ if (ChangeMessagesUtil.TAG_SET_WIP.equals(tag)
+ || ChangeMessagesUtil.TAG_UPLOADED_WIP_PATCH_SET.equals(tag)
+ || WIP_SET_REGEXP.matcher(msg).matches()) {
+ update.setWorkInProgress(true);
+ noteDbChange.setWorkInProgress(true);
+ } else if (ChangeMessagesUtil.TAG_SET_READY.equals(tag)
+ || ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET.equals(tag)
+ || WIP_UNSET_REGEXP.matcher(msg).matches()) {
+ update.setWorkInProgress(false);
+ noteDbChange.setWorkInProgress(false);
+ }
+ }
+
@Override
protected void addToString(ToStringHelper helper) {
helper.add("message", message);