package org.akaza.openclinica.domain.rule.action;
import org.akaza.openclinica.dao.hibernate.RuleActionRunLogDao;
import org.akaza.openclinica.domain.rule.RuleSetBean;
import org.akaza.openclinica.domain.rule.RuleSetRuleBean;
import org.akaza.openclinica.exception.OpenClinicaSystemException;
import org.akaza.openclinica.service.crfdata.DynamicsMetadataService;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import javax.sql.DataSource;
public class ActionProcessorFacade {
public static ActionProcessor getActionProcessor(ActionType actionType, DataSource ds, JavaMailSenderImpl mailSender,
DynamicsMetadataService itemMetadataService, RuleSetBean ruleSet, RuleActionRunLogDao ruleActionRunLogDao, RuleSetRuleBean ruleSetRule)
throws OpenClinicaSystemException {
switch (actionType) {
case FILE_DISCREPANCY_NOTE:
return new DiscrepancyNoteActionProcessor(ds, ruleActionRunLogDao, ruleSetRule);
case EMAIL:
return new EmailActionProcessor(ds, mailSender, ruleActionRunLogDao, ruleSetRule);
case NOTIFICATION:
return new NotificationActionProcessor(ds, mailSender, ruleSetRule);
case SHOW:
return new ShowActionProcessor(ds, itemMetadataService, ruleSet);
case HIDE:
return new HideActionProcessor(ds, itemMetadataService, ruleSet);
case INSERT:
return new InsertActionProcessor(ds, itemMetadataService, ruleActionRunLogDao, ruleSet, ruleSetRule);
case RANDOMIZE:
return new RandomizeActionProcessor(ds, itemMetadataService, ruleActionRunLogDao, ruleSet, ruleSetRule);
default:
throw new OpenClinicaSystemException("actionType", "Unrecognized action type!");
}
}
}