package org.akaza.openclinica.logic.rulerunner; import org.akaza.openclinica.domain.rule.action.PropertyBean; import org.akaza.openclinica.domain.rule.action.RuleActionBean; import org.akaza.openclinica.domain.rule.action.ShowActionBean; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MessageContainer { TheContainer container; HashMap<String, ArrayList<TheContainer>> groupOrdinalPLusItemOid2 = new HashMap<String, ArrayList<TheContainer>>(); public void add(String groupOrdinalPLusItemOid, RuleActionBean ruleActionBean) { // addInternal(groupOrdinalPLusItemOid, ruleActionBean.getSummary(), MessageType.ERROR); // System.out.println("just added error : " + ruleActionBean.getSummary()); if (ruleActionBean instanceof ShowActionBean) { String groupOidOrdinal = groupOrdinalPLusItemOid; List<PropertyBean> properties = ((ShowActionBean) ruleActionBean).getProperties(); for (PropertyBean propertyBean : properties) { String propertyOid = propertyBean.getOid(); addInternal(propertyOid.contains(".")? propertyOid : groupOidOrdinal+"."+propertyOid, ruleActionBean.getSummary(), MessageType.WARNING); //addInternal(propertyBean.getOid(), ruleActionBean.getSummary(), MessageType.WARNING); //System.out.println("just added warning : " + ruleActionBean.getSummary()); } } else { addInternal(groupOrdinalPLusItemOid, ruleActionBean.getSummary(), MessageType.ERROR); //System.out.println("just added error : " + ruleActionBean.getSummary()); } } public void addInternal(String groupOrdinalPLusItemOid, String summary, MessageType messageType) { if (groupOrdinalPLusItemOid2.containsKey(groupOrdinalPLusItemOid)) { groupOrdinalPLusItemOid2.get(groupOrdinalPLusItemOid).add(new TheContainer(summary, messageType)); } else { ArrayList<TheContainer> temp = new ArrayList<TheContainer>(); temp.add(new TheContainer(summary, messageType)); groupOrdinalPLusItemOid2.put(groupOrdinalPLusItemOid, temp); } } public HashMap<String, ArrayList<String>> getByMessageType(MessageType messageType) { HashMap<String, ArrayList<String>> h = new HashMap<String, ArrayList<String>>(); for (String key : groupOrdinalPLusItemOid2.keySet()) { ArrayList<TheContainer> container = groupOrdinalPLusItemOid2.get(key); for (TheContainer theContainer : container) { if (theContainer.getType().equals(messageType)) { if (h.get(key) != null) { h.get(key).add(theContainer.getMessage()); } else { ArrayList<String> a = new ArrayList<String>(); a.add(theContainer.getMessage()); h.put(key, a); } } } } return h; } public enum MessageType { ERROR, WARNING } private class TheContainer { String message; MessageType type; public TheContainer(String message, MessageType type) { this.message = message; this.type = type; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public MessageType getType() { return type; } public void setType(MessageType type) { this.type = type; } } }