Implementovaný parser na šablony e-mailů. Rozchozeny unit testy.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package info.bukova.isspst.mail;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.beanutils.BeanUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class EntityMessageBuilder implements MessageBuilder {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(EntityMessageBuilder.class);
|
||||
|
||||
@Override
|
||||
public MailMessage buildMessage(MailMessage template, Object data) {
|
||||
MailMessage msg = new MailMessage(template);
|
||||
msg.setSubject(replacaProperties(msg.getSubject(), data));
|
||||
msg.setText(replacaProperties(msg.getText(), data));
|
||||
return msg;
|
||||
}
|
||||
|
||||
private String replacaProperties(String src, Object data) {
|
||||
int current = 0;
|
||||
List<String> properties = new ArrayList<String>();
|
||||
boolean found = false;
|
||||
String ret = src;
|
||||
|
||||
do {
|
||||
int openIndex = src.indexOf("[", current);
|
||||
int closeIndex = src.indexOf("]", current);
|
||||
if (openIndex != -1) {
|
||||
String property = src.substring(openIndex + 1, closeIndex);
|
||||
if (!properties.contains(property)) {
|
||||
properties.add(property);
|
||||
}
|
||||
found = true;
|
||||
} else {
|
||||
found = false;
|
||||
}
|
||||
current = closeIndex + 1;
|
||||
} while (found);
|
||||
|
||||
for (String p : properties) {
|
||||
try {
|
||||
ret = ret.replaceAll("\\[" + p + "\\]", BeanUtils.getProperty(data, p));
|
||||
} catch (IllegalAccessException e) {
|
||||
logger.error(e.getMessage());
|
||||
} catch (InvocationTargetException e) {
|
||||
logger.error(e.getMessage());
|
||||
} catch (NoSuchMethodException e) {
|
||||
logger.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,6 +14,18 @@ public class MailMessage extends SimpleMailMessage {
|
||||
private byte[] attachementData;
|
||||
private String contentType;
|
||||
|
||||
public MailMessage() {
|
||||
super();
|
||||
}
|
||||
|
||||
public MailMessage(MailMessage message) {
|
||||
super(message);
|
||||
this.html = message.isHtml();
|
||||
this.attachementName = message.getAttachementName();
|
||||
this.attachementData = message.getAttachementData();
|
||||
this.contentType = message.getContentType();
|
||||
}
|
||||
|
||||
public boolean isHtml() {
|
||||
return html;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package info.bukova.isspst.mail;
|
||||
|
||||
|
||||
public interface MessageBuilder {
|
||||
|
||||
MailMessage buildMessage(MailMessage template, Object data);
|
||||
|
||||
}
|
||||
@@ -54,7 +54,7 @@ public class GlobalSettingsVM {
|
||||
@Command
|
||||
@NotifyChange("settings")
|
||||
public void insertField(@BindingParam("field") String field, @BindingParam("message") MailMessage message) {
|
||||
message.setText(message.getText() + ":" + field + ":");
|
||||
message.setText(message.getText() + "[" + field + "]");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
<property name="from" value="${mail.from}"/>
|
||||
</bean>
|
||||
|
||||
<bean id="messageBuilder" class="info.bukova.isspst.mail.EntityMessageBuilder"/>
|
||||
|
||||
<!-- <bean id="mailer" class="info.bukova.rsfaktura.services.mail.ThreadMailer"> -->
|
||||
<!-- <constructor-arg ref="attachementMailer"/> -->
|
||||
<!-- </bean> -->
|
||||
|
||||
Reference in New Issue
Block a user