package org.akaza.openclinica.bean.rule.action;
import org.akaza.openclinica.bean.login.UserAccountBean;
import org.akaza.openclinica.bean.managestudy.StudyBean;
import org.akaza.openclinica.core.EmailEngine;
import org.akaza.openclinica.exception.OpenClinicaSystemException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import javax.mail.MessagingException;
import javax.sql.DataSource;
public class EmailActionProcessor implements ActionProcessor {
protected final Logger logger = LoggerFactory.getLogger(getClass().getName());
DataSource ds;
EmailEngine emailEngine;
public EmailActionProcessor(DataSource ds) {
this.ds = ds;
}
public void execute(RuleActionBean ruleAction, int itemDataBeanId, String itemData, StudyBean currentStudy, UserAccountBean ub, Object... arguments) {
HashMap<String, String> arg0 = (HashMap<String, String>) arguments[0];
sendEmail(ruleAction, ub, arg0.get("body"), arg0.get("subject"));
}
private void sendEmail(RuleActionBean ruleAction, UserAccountBean ub, String body, String subject) throws OpenClinicaSystemException {
logger.info("Sending email...");
try {
getEmailEngine().process(((EmailActionBean) ruleAction).getTo().trim(), EmailEngine.getAdminEmail(), subject, body);
logger.info("Sending email done..");
} catch (MessagingException me) {
logger.error("Email could not be sent");
throw new OpenClinicaSystemException(me.getMessage());
}
}
private EmailEngine getEmailEngine() {
emailEngine = emailEngine != null ? emailEngine : new EmailEngine(EmailEngine.getSMTPHost(), "5");
return emailEngine;
}
}