diff options
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.java | 45 |
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); |