Revision 42298
Added by Michele Artini about 8 years ago
EmailDispatcher.java | ||
---|---|---|
19 | 19 |
import javax.mail.internet.MimeMessage; |
20 | 20 |
|
21 | 21 |
import org.antlr.stringtemplate.StringTemplate; |
22 |
import org.apache.commons.lang3.StringUtils; |
|
22 | 23 |
import org.apache.commons.logging.Log; |
23 | 24 |
import org.apache.commons.logging.LogFactory; |
24 | 25 |
import org.dom4j.Document; |
... | ... | |
110 | 111 |
final Map<String, Document> emailProfiles = new HashMap<>(); |
111 | 112 |
|
112 | 113 |
try { |
114 |
|
|
113 | 115 |
this.serviceLocator |
114 | 116 |
.getService(ISLookUpService.class) |
115 |
.quickSearchProfile("collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')/*[.//RESOURCE_IDENTIFIER/@value='"
|
|
116 |
+ proc.getProfileId()
|
|
117 |
+ "']//NOTIFICATIONS/EMAIL/concat(@condition , ' @@@ ', @messageProfileId, ' @@@ ', @address)")
|
|
117 |
.quickSearchProfile("for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType') " +
|
|
118 |
"where $x//RESOURCE_IDENTIFIER/@value='" + proc.getProfileId() + "' " +
|
|
119 |
"return $x//NOTIFICATIONS/EMAIL/concat(@condition , ' @@@ ', @messageProfileId, ' @@@ ', @address)")
|
|
118 | 120 |
.forEach(s -> { |
119 | 121 |
final String[] arr = s.split("@@@"); |
122 |
if (StringUtils.isNoneBlank(arr[0].trim())) { |
|
123 |
final NotificationCondition condition = NotificationCondition.valueOf(arr[0].trim()); |
|
124 |
final String emailProfileId = arr[1].trim(); |
|
125 |
final String to = arr[2].trim(); |
|
120 | 126 |
|
121 |
final NotificationCondition condition = NotificationCondition.valueOf(arr[0].trim()); |
|
122 |
final String emailProfileId = arr[1].trim(); |
|
123 |
final String to = arr[2].trim(); |
|
127 |
if (condition == NotificationCondition.ALWAYS || |
|
128 |
(condition == NotificationCondition.ONLY_FAILED && proc.getStatus() == Status.FAILURE) || |
|
129 |
(condition == NotificationCondition.ONLY_SUCCESS && proc.getStatus() == Status.SUCCESS)) { |
|
130 |
try { |
|
131 |
if (!emailProfiles.containsKey(emailProfileId)) { |
|
132 |
final String profile = this.serviceLocator.getService(ISLookUpService.class).getResourceProfile(emailProfileId); |
|
133 |
final Document doc = reader.read(new StringReader(profile)); |
|
134 |
emailProfiles.put(emailProfileId, doc); |
|
135 |
} |
|
136 |
final String subject = applyTemplate(emailProfiles.get(emailProfileId).valueOf("//SUBJECT_TEMPLATE").trim(), proc); |
|
137 |
final String message = applyTemplate(emailProfiles.get(emailProfileId).valueOf("//EMAIL_TEMPLATE").trim(), proc); |
|
124 | 138 |
|
125 |
if (condition == NotificationCondition.ALWAYS || |
|
126 |
(condition == NotificationCondition.ONLY_FAILED && proc.getStatus() == Status.FAILURE) || |
|
127 |
(condition == NotificationCondition.ONLY_SUCCESS && proc.getStatus() == Status.SUCCESS)) { |
|
128 |
try { |
|
129 |
if (!emailProfiles.containsKey(emailProfileId)) { |
|
130 |
final String profile = this.serviceLocator.getService(ISLookUpService.class).getResourceProfile(emailProfileId); |
|
131 |
final Document doc = reader.read(new StringReader(profile)); |
|
132 |
emailProfiles.put(emailProfileId, doc); |
|
139 |
sendMail(to, subject, message); |
|
140 |
|
|
141 |
} catch (final Exception e) { |
|
142 |
log.error("Error sending mail to " + to, e); |
|
133 | 143 |
} |
134 |
final String subject = applyTemplate(emailProfiles.get(emailProfileId).valueOf("//SUBJECT_TEMPLATE").trim(), proc); |
|
135 |
final String message = applyTemplate(emailProfiles.get(emailProfileId).valueOf("//EMAIL_TEMPLATE").trim(), proc); |
|
136 |
|
|
137 |
sendMail(to, subject, message); |
|
138 |
|
|
139 |
} catch (final Exception e) { |
|
140 |
log.error("Error sending mail to " + to, e); |
|
141 | 144 |
} |
142 | 145 |
} |
143 | 146 |
}); |
Also available in: Unified diff
fix