/* * OpenClinica is distributed under the * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * * Copyright 2003-2008 Akaza Research */ package org.akaza.openclinica.bean.rule; import org.akaza.openclinica.bean.core.AuditableEntityBean; import org.akaza.openclinica.bean.rule.action.RuleActionBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class RuleSetRuleBean extends AuditableEntityBean { protected final Logger logger = LoggerFactory.getLogger(getClass().getName()); RuleSetBean ruleSetBean; RuleBean ruleBean; List<RuleActionBean> actions; // Transient String oid; public HashMap<String, ArrayList<RuleActionBean>> getAllActionsWithEvaluatesToAsKey() { HashMap<String, ArrayList<RuleActionBean>> h = new HashMap<String, ArrayList<RuleActionBean>>(); for (RuleActionBean action : actions) { String key = action.getExpressionEvaluatesTo().toString(); if (h.containsKey(key)) { h.get(key).add(action); } else { ArrayList<RuleActionBean> a = new ArrayList<RuleActionBean>(); a.add(action); h.put(key, a); } } return h; } public HashMap<String, ArrayList<RuleActionBean>> getAllActionsWithEvaluatesToAsKey(String actionEvaluatesTo) { HashMap<String, ArrayList<RuleActionBean>> h = new HashMap<String, ArrayList<RuleActionBean>>(); for (RuleActionBean action : actions) { String key = action.getExpressionEvaluatesTo().toString(); if (actionEvaluatesTo == null || actionEvaluatesTo.equals(key)) { if (h.containsKey(key)) { h.get(key).add(action); } else { ArrayList<RuleActionBean> a = new ArrayList<RuleActionBean>(); a.add(action); h.put(key, a); } } } return h; } public HashMap<String, ArrayList<String>> getActionsAsKeyPair(String actionEvaluatesTo) { HashMap<String, ArrayList<String>> h = new HashMap<String, ArrayList<String>>(); for (RuleActionBean action : actions) { String key = action.getExpressionEvaluatesTo().toString(); if (actionEvaluatesTo.equals(key)) { if (h.containsKey(key)) { h.get(key).add(action.getSummary()); } else { ArrayList<String> a = new ArrayList<String>(); a.add(action.getSummary()); h.put(key, a); } } } return h; } /** * Run the rule and pass in the result. Will return all actions * that match the result. * @param actionEvaluatesTo * @return */ public List<RuleActionBean> getActions(String ruleEvaluatedTo) { List<RuleActionBean> ruleActions = new ArrayList<RuleActionBean>(); for (RuleActionBean action : actions) { String key = action.getExpressionEvaluatesTo().toString(); if (ruleEvaluatedTo.equals(key)) { ruleActions.add(action); } } return ruleActions; } public void addAction(RuleActionBean ruleAction) { if (actions == null) { actions = new ArrayList<RuleActionBean>(); } actions.add(ruleAction); } // getters & setters public RuleSetBean getRuleSetBean() { return ruleSetBean; } public void setRuleSetBean(RuleSetBean ruleSetBean) { this.ruleSetBean = ruleSetBean; } public RuleBean getRuleBean() { return ruleBean; } public void setRuleBean(RuleBean ruleBean) { this.ruleBean = ruleBean; } public List<RuleActionBean> getActions() { return actions; } public void setActions(List<RuleActionBean> actions) { this.actions = actions; } public String getOid() { return oid; } public void setOid(String oid) { this.oid = oid; } }