package org.activityinfo.server.digest; /* * #%L * ActivityInfo Server * %% * Copyright (C) 2009 - 2013 UNICEF * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import com.google.common.base.Preconditions; import net.lightoze.gwt.i18n.server.LocaleProxy; import net.lightoze.gwt.i18n.server.ThreadLocalLocaleProvider; import org.activityinfo.i18n.shared.I18N; import org.activityinfo.server.mail.Message; import org.activityinfo.server.util.html.HtmlTag; import org.activityinfo.server.util.html.HtmlWriter; import javax.mail.MessagingException; import java.io.IOException; import java.util.logging.Logger; public class DigestMessageBuilder { private static final Logger LOGGER = Logger.getLogger(DigestMessageBuilder.class.getName()); private final DigestModelBuilder digestModelBuilder; private final DigestRenderer digestRenderer; private UserDigest userDigest; public DigestMessageBuilder(DigestModelBuilder digestModelBuilder, DigestRenderer digestRenderer) { this.digestModelBuilder = digestModelBuilder; this.digestRenderer = digestRenderer; } public DigestMessageBuilder setUserDigest(UserDigest userDigest) { this.userDigest = userDigest; return this; } public Message build() throws IOException, MessagingException { Preconditions.checkNotNull(userDigest); Preconditions.checkNotNull(userDigest.getUser()); // set the locale of the messages ThreadLocalLocaleProvider.pushLocale(userDigest.getUser().getLocaleObject()); try { DigestModel model = digestModelBuilder.createModel(userDigest); if (!model.hasData()) { return null; } // create message, set recipient & bcc Message message = new Message(); message.to(userDigest.getUser().getEmail(), userDigest.getUser().getName()); String subject = I18N.MESSAGES.digestSubject(userDigest.getDate()); message.subject(subject); // create the html body HtmlWriter htmlWriter = new HtmlWriter(); htmlWriter.startDocument(); htmlWriter.startDocumentHeader(); htmlWriter.documentTitle(subject); htmlWriter.open(new HtmlTag("style")) .at("type", "text/css") .text("body { font-family:Helvetica; } a {color: black; text-decoration:none;} ") .close(); htmlWriter.endDocumentHeader(); htmlWriter.startDocumentBody(); htmlWriter.paragraph(I18N.MESSAGES.digestGreeting(userDigest.getUser().getName())); // the digest content htmlWriter.paragraph(digestRenderer.renderHtml(model)); String signature = I18N.MESSAGES.digestSignature(); htmlWriter.paragraph(signature); htmlWriter.endDocumentBody(); htmlWriter.endDocument(); LOGGER.finest("digest:\n" + htmlWriter.toString()); message.htmlBody(htmlWriter.toString()); return message; } finally { ThreadLocalLocaleProvider.popLocale(); } } }