package de.flower.rmt.model.dto; import org.hibernate.validator.constraints.NotBlank; import org.hibernate.validator.constraints.NotEmpty; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.InputStreamSource; import javax.mail.internet.InternetAddress; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; /** * @author flowerrrr */ public class Notification implements Serializable { @NotEmpty private List<InternetAddress> recipients = new ArrayList<InternetAddress>(); @NotBlank private String subject; @NotBlank private String body; private boolean bccMySelf; private Attachment attachment; public List<InternetAddress> getRecipients() { return recipients; } public void setRecipients(final List<InternetAddress> recipients) { this.recipients = recipients; } public String getSubject() { return subject; } public void setSubject(final String subject) { this.subject = subject; } public String getBody() { return body; } public void setBody(final String body) { this.body = body; } public boolean isBccMySelf() { return bccMySelf; } public void setBccMySelf(final boolean bccMySelf) { this.bccMySelf = bccMySelf; } public void addRecipient(final String address, final String personal) { InternetAddress iAddress; try { iAddress = new InternetAddress(address, personal); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } recipients.add(iAddress); } /** * Returns email addresses (only address part) as string list. */ public List<String> getAddressList() { List<String> list = new ArrayList<String>(); for (InternetAddress iAddress : recipients) { list.add(iAddress.getAddress()); } return list; } public Attachment getAttachment() { return attachment; } public void setAttachment(final Attachment attachment) { this.attachment = attachment; } public static class Attachment implements Serializable { public String name; public String contentType; public byte[] data; public String getName() { return name; } public void setName(final String name) { this.name = name; } public String getContentType() { return contentType; } public void setContentType(final String contentType) { this.contentType = contentType; } public InputStreamSource getInputStreamSource() { return new ByteArrayResource(data); } @Override public String toString() { return "Attachment{" + "name='" + name + '\'' + ", contentType='" + contentType + '\'' + ", data=" + (data == null ? "" : new String(data)) + '}'; } } }