package org.akaza.openclinica.control.form.spreadsheet; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * For validation of SpreadSheet Loading. * */ public class SheetValidationContainer { /* * YW: created file at Aug., 2011 with OnChangeSheetValidator * cooperating with current spreadsheet loading validation style. */ /** * key: itemName; value: groupLabel */ Map<String, String> allItems = new HashMap<String, String>(); /** * list of all repeating group labels of a spreadsheet */ List<String> repeatingGroupLabels = new ArrayList<String>(); /** * key: itemName; value: sectionName */ Map<String,String> itemSectionNameMap = new HashMap<String,String>(); /** * key: itemName; value: repeating group labels */ Map<String,String> itemRepGrpNameMap = new HashMap<String,String>(); public void collectRepGrpItemNameMap(String itemName, String groupLabel) { if(this.repeatingGroupLabels.contains(groupLabel)) this.itemRepGrpNameMap.put(itemName, groupLabel); } /** * Precondition: itemSectionNameMap collecting has passed collecting itemNameA, itemNameB. <br/> * Return false if itemSectionNames is null or empty. * @param itemNameA * @param itemNameB * @param items * @return */ public boolean inSameSection(String itemNameA, String itemNameB) { if(itemSectionNameMap == null) { return false; } else { String a="", b=""; if(itemSectionNameMap.containsKey(itemNameA)) { a = itemSectionNameMap.get(itemNameA); } if(itemSectionNameMap.containsKey(itemNameB)) { b = itemSectionNameMap.get(itemNameB); } return !a.isEmpty() && !b.isEmpty() && a.equals(b); } } /** * Precondition: itemRepGrpNameMap collecting has passed collecting itemName. * Return false if itemRepGrpNameMap is null or empty. * @param itemName * @return */ public boolean inRepeatingGroup(String itemName) { return itemRepGrpNameMap != null && itemRepGrpNameMap.containsKey(itemName); } /** * Precondition: itemRepGrpNameMap collecting has passed collecting itemNameA, itemNameB.<br/> * Return false if itemRepGrpNameMap is null or empty. * @param itemNameA * @param itemNameB * @return */ public boolean inSameRepeatingGroup(String itemNameA, String itemNameB) { if(itemRepGrpNameMap == null) { return false; } else { String o = "", d = ""; if(itemRepGrpNameMap.containsKey(itemNameA)) { o = itemRepGrpNameMap.get(itemNameA); } if(itemRepGrpNameMap.containsKey(itemNameB)) { d = itemRepGrpNameMap.get(itemNameB); } return !o.isEmpty() && !d.isEmpty() && o.equals(d); } } public boolean itemNameAvailable(String itemName) { return allItems.containsKey(itemName); } public Map<String, String> getAllItems() { return allItems; } public void setAllItems(Map<String, String> allItems) { this.allItems = allItems; } public List<String> getRepeatingGroupLabels() { return repeatingGroupLabels; } public void setRepeatingGroupLabels(List<String> repeatingGroupLabels) { this.repeatingGroupLabels = repeatingGroupLabels; } public Map<String, String> getItemSectionNameMap() { return itemSectionNameMap; } public void setItemSectionNameMap(Map<String, String> itemSectionNameMap) { this.itemSectionNameMap = itemSectionNameMap; } public Map<String, String> getItemRepGrpNameMap() { return itemRepGrpNameMap; } public void setItemRepGrpNameMap(Map<String, String> itemRepGrpNameMap) { this.itemRepGrpNameMap = itemRepGrpNameMap; } }