org.eurekastreams.server.action.execution.notification.email.SendNotificationEmailExecution.java Source code

Java tutorial

Introduction

Here is the source code for org.eurekastreams.server.action.execution.notification.email.SendNotificationEmailExecution.java

Source

/*
 * Copyright (c) 2011-2012 Lockheed Martin Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.eurekastreams.server.action.execution.notification.email;

import java.io.Serializable;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.apache.commons.lang.StringUtils;
import org.eurekastreams.commons.actions.ExecutionStrategy;
import org.eurekastreams.commons.actions.context.ActionContext;
import org.eurekastreams.commons.exceptions.ExecutionException;
import org.eurekastreams.commons.logging.LogFactory;
import org.eurekastreams.server.action.execution.email.NotificationEmailDTO;
import org.eurekastreams.server.service.actions.strategies.EmailerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Action to send notification emails.
 */
public class SendNotificationEmailExecution implements ExecutionStrategy<ActionContext> {
    /** Log. */
    private static Logger log = LoggerFactory.getLogger(LogFactory.getClassName());

    /** For sending email. */
    private final EmailerFactory emailer;

    /**
     * Constructor.
     *
     * @param inEmailer
     *            For sending email.
     */
    public SendNotificationEmailExecution(final EmailerFactory inEmailer) {
        emailer = inEmailer;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Serializable execute(final ActionContext inActionContext) throws ExecutionException {
        NotificationEmailDTO request = (NotificationEmailDTO) inActionContext.getParams();
        try {
            MimeMessage message = emailer.createMessage();

            emailer.setSubject(message, request.getSubject());
            emailer.setTextBody(message, request.getTextBody());
            if (StringUtils.isNotBlank(request.getHtmlBody())) {
                emailer.setHtmlBody(message, request.getHtmlBody());
            }
            if (StringUtils.isNotBlank(request.getToRecipient())) {
                emailer.setTo(message, request.getToRecipient());
            }
            if (StringUtils.isNotBlank(request.getBccRecipients())) {
                emailer.setBcc(message, request.getBccRecipients());
            }
            if (StringUtils.isNotBlank(request.getReplyTo())) {
                emailer.setReplyTo(message, request.getReplyTo());
            }
            if (request.isHighPriority()) {
                message.addHeader("Importance", "high");
                message.addHeader("X-Priority", "1");
            }

            emailer.sendMail(message);

            log.debug("Sent email for notification {}", request.getDescription());
        } catch (MessagingException ex) {
            String msg = "Failed to send email message for notification " + request.getDescription();
            log.error(msg, ex);
            throw new ExecutionException(msg, ex);
        }

        return null;
    }
}