/* * See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.xwiki.contrib.mail; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.mail.Message; import javax.mail.internet.MimeBodyPart; import org.apache.commons.lang3.StringUtils; import org.xwiki.contrib.mail.internal.MailAttachment; import org.xwiki.text.XWikiToStringBuilder; /** * Email content. TODO javadoc * * @version $Id$ */ public class MailContent { private StringBuilder text = new StringBuilder(); private StringBuilder html = new StringBuilder(); /** * Extracted attachments as a map, key being content-ID. */ private ArrayList<MimeBodyPart> rawAttachments = new ArrayList<MimeBodyPart>(); /** * relates a Content-ID to an attachment filename as it would/should be added to a wiki page. In fact if several * joined files in a mail have the same filenames, renaming occurs in order to have only unique names. This map * provides the new name to be used instead of original attachment name. */ private HashMap<String, MailAttachment> wikiAttachments = new HashMap<String, MailAttachment>(); private List<Message> attachedMails = new ArrayList<Message>(); private boolean encrypted = false; private boolean signed = false; public boolean isEncrypted() { return encrypted; } public void setEncrypted(boolean encrypted) { this.encrypted = encrypted; } public boolean isSigned() { return signed; } public void setSigned(boolean signed) { this.signed = signed; } public String getText() { return text.toString(); } public void setText(String text) { this.text = new StringBuilder(text); } public void appendText(String text) { this.text.append(text); } public String getHtml() { return html.toString(); } public void setHtml(String html) { this.html = new StringBuilder(html); } public void appendHtml(String html) { this.html.append(html); } public ArrayList<MimeBodyPart> getAttachments() { return rawAttachments; } public void setAttachments(ArrayList<MimeBodyPart> attachments) { this.rawAttachments = attachments; } public void addAttachment(MimeBodyPart attachment) { if (this.rawAttachments == null) { this.rawAttachments = new ArrayList<MimeBodyPart>(); } this.rawAttachments.add(attachment); } public HashMap<String, MailAttachment> getWikiAttachments() { return wikiAttachments; } public void setWikiAttachments(HashMap<String, MailAttachment> wikiAttachments) { this.wikiAttachments = wikiAttachments; } public void addWikiAttachment(String contentId, MailAttachment attachment) { if (this.wikiAttachments == null) { this.wikiAttachments = new HashMap<String, MailAttachment>(); } this.wikiAttachments.put(contentId, attachment); } public void append(MailContent mailContent) { appendText(mailContent.getText()); appendHtml(mailContent.getHtml()); this.rawAttachments.addAll(mailContent.getAttachments()); this.wikiAttachments.putAll(mailContent.getWikiAttachments()); } public List<Message> getAttachedMails() { return attachedMails; } public void setAttachedMails(List<Message> attachedMails) { this.attachedMails = attachedMails; } public void addAttachedMail(Message message) { if (this.attachedMails == null) { this.attachedMails = new ArrayList<Message>(); } this.attachedMails.add(message); } /** * {@inheritDoc} * * @see java.lang.Object#toString() */ @Override public String toString() { XWikiToStringBuilder builder = new XWikiToStringBuilder(this); builder.append("text", StringUtils.abbreviate(text.toString(), 10)); builder.append("html", StringUtils.abbreviate(html.toString(), 10)); builder.append("encrypted", encrypted); builder.append("signed", signed); builder.append("rawAttachments", rawAttachments != null ? rawAttachments.size() : "0"); builder.append("wikiAttachments", wikiAttachments != null ? wikiAttachments.size() : "0"); builder.append("attachedMails", attachedMails != null ? attachedMails.size() : "0"); return builder.toString(); } }