package org.akaza.openclinica.domain.rule.action; import org.akaza.openclinica.bean.login.UserAccountBean; import org.akaza.openclinica.bean.managestudy.StudyBean; import org.akaza.openclinica.bean.submit.ItemDataBean; import org.akaza.openclinica.domain.rule.RuleSetBean; import org.akaza.openclinica.logic.rulerunner.ExecutionMode; import org.akaza.openclinica.logic.rulerunner.RuleRunner.RuleRunnerMode; import org.akaza.openclinica.service.crfdata.DynamicsMetadataService; import javax.sql.DataSource; public class HideActionProcessor implements ActionProcessor { DataSource ds; DynamicsMetadataService dynamicsMetadataService; RuleSetBean ruleSet; public HideActionProcessor(DataSource ds, DynamicsMetadataService dynamicsMetadataService, RuleSetBean ruleSet) { this.dynamicsMetadataService = dynamicsMetadataService; this.ds = ds; this.ruleSet = ruleSet; } public RuleActionBean execute(RuleRunnerMode ruleRunnerMode, ExecutionMode executionMode, RuleActionBean ruleAction, ItemDataBean itemDataBean, String itemData, StudyBean currentStudy, UserAccountBean ub, Object... arguments) { switch (executionMode) { case DRY_RUN: { if (ruleRunnerMode == RuleRunnerMode.DATA_ENTRY || ruleRunnerMode == RuleRunnerMode.RUN_ON_SCHEDULE) { return null; } else { dryRun(ruleAction, itemDataBean, itemData, currentStudy, ub); } } case SAVE: { if (ruleRunnerMode == RuleRunnerMode.DATA_ENTRY) { return saveAndReturnMessage(ruleAction, itemDataBean, itemData, currentStudy, ub); }else if (ruleRunnerMode == RuleRunnerMode.RUN_ON_SCHEDULE) { return null; } else { return save(ruleAction, itemDataBean, itemData, currentStudy, ub); } } default: return null; } } private RuleActionBean save(RuleActionBean ruleAction, ItemDataBean itemDataBean, String itemData, StudyBean currentStudy, UserAccountBean ub) { getDynamicsMetadataService().hideNew(itemDataBean.getId(), ((HideActionBean) ruleAction).getProperties(), ub, ruleSet); return ruleAction; } private RuleActionBean saveAndReturnMessage(RuleActionBean ruleAction, ItemDataBean itemDataBean, String itemData, StudyBean currentStudy, UserAccountBean ub) { getDynamicsMetadataService().hideNew(itemDataBean.getId(), ((HideActionBean) ruleAction).getProperties(), ub, ruleSet); return ruleAction; } private RuleActionBean dryRun(RuleActionBean ruleAction, ItemDataBean itemDataBean, String itemData, StudyBean currentStudy, UserAccountBean ub) { return ruleAction; } private DynamicsMetadataService getDynamicsMetadataService() { return dynamicsMetadataService; } }