Project

General

Profile

« Previous | Next » 

Revision 42298

fix

View differences:

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