package ui.controller; import java.util.HashMap; import java.util.Map.Entry; import classes.Category; import classes.CpsObject; import classes.HolonElement; import classes.HolonObject; import ui.model.Model; public class MultiPurposeController { private Model MODEL; public MultiPurposeController(Model model) { this.MODEL = model; } /** * search for category * * @param name * @return */ public Category searchCategory(String category) { Integer idx; if ((idx = MODEL.getCgIdx().get(category)) == null || MODEL.getCgIdx().size() < 1 ) return null; else return MODEL.getCategories().get(idx); } /** * Search for Object * * @param object * @param list * @return */ public CpsObject searchCategoryObject(Category category, String object) { Integer idx; if ((idx = category.getObjIdx().get(object)) == null || category.getObjIdx().size() < 1) return null; else return category.getObjects().get(idx); } /** * Search for Object by ID * * @param ID * @param list * @return */ public CpsObject searchByID(int ID) { Integer idx; if ((idx = MODEL.getCvsObjIdx().get(ID)) == null || MODEL.getCvsObjIdx().size() < 1) return null; else return MODEL.getObjectsOnCanvas().get(idx); } /** * Search for Element * * @param object * @param element * @return */ public HolonElement searchHolonElement(HolonObject object, String element) { Integer idx; if ((idx = object.getEleIdx().get(element)) == null || object.getEleIdx().size() < 1) return null; else return object.getElements().get(idx); } /** * Decrement the Indices if a Key as been removed * * @param key * @param map */ public <T> void decIdx(T key, HashMap<T, Integer> map) { for (Entry<T, Integer> i : map.entrySet()) { if (i.getValue() > map.get(key)) i.setValue(i.getValue() - 1); } } /** * Copies a HashMap into a new One * * @param map * @return */ public static <T, Integer> HashMap<T, Integer> copyHashMap(HashMap<T, Integer> map) { HashMap<T, Integer> newMap = new HashMap<>(); for (Entry<T, Integer> i : map.entrySet()) { newMap.put(i.getKey(), i.getValue()); } return newMap; } }