summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/mail/MergedSender.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/mail/MergedSender.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/mail/MergedSender.java96
1 files changed, 38 insertions, 58 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/MergedSender.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/MergedSender.java
index 70b2d7fa2b..37d800df3b 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/MergedSender.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/MergedSender.java
@@ -14,36 +14,32 @@
package com.google.gerrit.server.mail;
-import com.google.gerrit.common.data.ApprovalType;
-import com.google.gerrit.common.data.ApprovalTypes;
+import com.google.common.collect.HashBasedTable;
+import com.google.common.collect.Table;
+import com.google.gerrit.common.data.LabelType;
+import com.google.gerrit.common.data.LabelTypes;
+import com.google.gerrit.common.data.LabelValue;
+import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.Account;
-import com.google.gerrit.reviewdb.client.ApprovalCategory;
-import com.google.gerrit.reviewdb.client.ApprovalCategoryValue;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
-import com.google.gerrit.server.config.AnonymousCowardName;
+import com.google.gerrit.reviewdb.client.PatchSetApproval;
+import com.google.gerrit.server.project.ChangeControl;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
-import java.util.HashMap;
-import java.util.Map;
-
/** Send notice about a change successfully merged. */
public class MergedSender extends ReplyToChangeSender {
public static interface Factory {
- public MergedSender create(Change change);
+ public MergedSender create(ChangeControl change);
}
- private final ApprovalTypes approvalTypes;
+ private final LabelTypes labelTypes;
@Inject
- public MergedSender(EmailArguments ea,
- @AnonymousCowardName String anonymousCowardName, ApprovalTypes at,
- @Assisted Change c) {
- super(ea, anonymousCowardName, c, "merged");
- approvalTypes = at;
+ public MergedSender(EmailArguments ea, @Assisted ChangeControl c) {
+ super(ea, c.getChange(), "merged");
+ labelTypes = c.getLabelTypes();
}
@Override
@@ -52,8 +48,8 @@ public class MergedSender extends ReplyToChangeSender {
ccAllApprovals();
bccStarredBy();
- bccWatches(NotifyType.ALL_COMMENTS);
- bccWatches(NotifyType.SUBMITTED_CHANGES);
+ includeWatchers(NotifyType.ALL_COMMENTS);
+ includeWatchers(NotifyType.SUBMITTED_CHANGES);
}
@Override
@@ -63,18 +59,18 @@ public class MergedSender extends ReplyToChangeSender {
public String getApprovals() {
try {
- final Map<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>> pos =
- new HashMap<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>>();
-
- final Map<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>> neg =
- new HashMap<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>>();
-
+ Table<Account.Id, String, PatchSetApproval> pos = HashBasedTable.create();
+ Table<Account.Id, String, PatchSetApproval> neg = HashBasedTable.create();
for (PatchSetApproval ca : args.db.get().patchSetApprovals()
.byPatchSet(patchSet.getId())) {
+ LabelType lt = labelTypes.byLabel(ca.getLabelId());
+ if (lt == null) {
+ continue;
+ }
if (ca.getValue() > 0) {
- insert(pos, ca);
+ pos.put(ca.getAccountId(), lt.getName(), ca);
} else if (ca.getValue() < 0) {
- insert(neg, ca);
+ neg.put(ca.getAccountId(), lt.getName(), ca);
}
}
@@ -85,22 +81,20 @@ public class MergedSender extends ReplyToChangeSender {
return "";
}
- private String format(final String type,
- final Map<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>> list) {
+ private String format(String type,
+ Table<Account.Id, String, PatchSetApproval> approvals) {
StringBuilder txt = new StringBuilder();
- if (list.isEmpty()) {
+ if (approvals.isEmpty()) {
return "";
}
- txt.append(type + ":\n");
- for (final Map.Entry<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>> ent : list
- .entrySet()) {
- final Map<ApprovalCategory.Id, PatchSetApproval> l = ent.getValue();
+ txt.append(type).append(":\n");
+ for (Account.Id id : approvals.rowKeySet()) {
txt.append(" ");
- txt.append(getNameFor(ent.getKey()));
+ txt.append(getNameFor(id));
txt.append(": ");
boolean first = true;
- for (ApprovalType at : approvalTypes.getApprovalTypes()) {
- final PatchSetApproval ca = l.get(at.getCategory().getId());
+ for (LabelType lt : labelTypes.getLabelTypes()) {
+ PatchSetApproval ca = approvals.get(id, lt.getName());
if (ca == null) {
continue;
}
@@ -111,32 +105,18 @@ public class MergedSender extends ReplyToChangeSender {
txt.append("; ");
}
- final ApprovalCategoryValue v = at.getValue(ca);
+ LabelValue v = lt.getValue(ca);
if (v != null) {
- txt.append(v.getName());
+ txt.append(v.getText());
} else {
- txt.append(at.getCategory().getName());
- txt.append("=");
- if (ca.getValue() > 0) {
- txt.append("+");
- }
- txt.append("" + ca.getValue());
+ txt.append(lt.getName());
+ txt.append('=');
+ txt.append(LabelValue.formatValue(ca.getValue()));
}
}
- txt.append("\n");
+ txt.append('\n');
}
- txt.append("\n");
+ txt.append('\n');
return txt.toString();
}
-
- private void insert(
- final Map<Account.Id, Map<ApprovalCategory.Id, PatchSetApproval>> list,
- final PatchSetApproval ca) {
- Map<ApprovalCategory.Id, PatchSetApproval> m = list.get(ca.getAccountId());
- if (m == null) {
- m = new HashMap<ApprovalCategory.Id, PatchSetApproval>();
- list.put(ca.getAccountId(), m);
- }
- m.put(ca.getCategoryId(), ca);
- }
}