This repository has been archived by the owner on Nov 9, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 57
/
LanguageTeamPermissionChangeEmailStrategy.java
93 lines (83 loc) · 3.45 KB
/
LanguageTeamPermissionChangeEmailStrategy.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package org.zanata.email;
import java.util.List;
import javax.mail.internet.InternetAddress;
import org.zanata.events.LanguageTeamPermissionChangedEvent;
import org.zanata.i18n.Messages;
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import com.googlecode.totallylazy.collections.PersistentMap;
import lombok.RequiredArgsConstructor;
/**
* @author Patrick Huang <a
* href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
@RequiredArgsConstructor
public class LanguageTeamPermissionChangeEmailStrategy extends EmailStrategy {
private final LanguageTeamPermissionChangedEvent changedEvent;
private final Messages msgs;
@Override
public String getSubject(Messages msgs) {
return msgs.format("jsf.email.languageteam.permission.Subject",
changedEvent.getLanguage());
}
@Override
public String getBodyResourceName() {
return "org/zanata/email/templates/language_team_permission_changed.vm";
}
@Override
public Optional<InternetAddress[]> getReplyToAddress() {
return Optional.of(Addresses.getReplyTo(
changedEvent.getChangedByEmail(),
changedEvent.getChangedByName()));
}
@Override
public PersistentMap<String, Object> makeContext(
PersistentMap<String, Object> genericContext,
InternetAddress[] toAddresses) {
PersistentMap<String, Object> context = super.makeContext(
genericContext, toAddresses);
List<String> oldPermissions = Lists.newArrayList();
if (changedEvent.numOfGrantedOldPermissions() == 0) {
oldPermissions
.add(
msgs.get("jsf.email.languageteam.permission.old.notInTeam"));
} else {
transformPermissionToDescription(
changedEvent.getOldPermission(), oldPermissions);
}
List<String> newPermissions = Lists.newArrayList();
if (changedEvent.numOfGrantedNewPermissions() == 0) {
newPermissions.add(msgs
.get("jsf.email.languageteam.permission.new.notInTeam"));
} else {
transformPermissionToDescription(
changedEvent.getNewPermission(), newPermissions);
}
return context
.insert("language", changedEvent.getLanguage())
.insert("changedByName", changedEvent.getChangedByName())
.insert("changedByEmail", changedEvent.getChangedByEmail())
.insert("oldPermissions", oldPermissions)
.insert("newPermissions", newPermissions)
.insert("toName", toAddresses[0].getPersonal());
}
private void transformPermissionToDescription(
List<Boolean> permissionList, List<String> permissionDescriptions) {
if (changedEvent.translatorPermissionOf(
permissionList)) {
permissionDescriptions.add(
msgs.get("jsf.email.languageteam.permission.isTranslator"));
}
if (changedEvent.reviewerPermissionOf(
permissionList)) {
permissionDescriptions.add(
msgs.get("jsf.email.languageteam.permission.isReviewer"));
}
if (changedEvent.coordinatorPermissionOf(
permissionList)) {
permissionDescriptions
.add(
msgs.get("jsf.email.languageteam.permission.isCoordinator"));
}
}
}