package ui.controller; import java.util.HashMap; import java.util.Map.Entry; import classes.Category; import classes.CpsEdge; import classes.AbstractCpsObject; 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 searchCat(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 AbstractCpsObject searchCatObj(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 AbstractCpsObject 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 searchEle(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); } public HolonElement searchEleById(HolonObject object, int idEle) { return object.searchElementById(idEle); } public CpsEdge searchEdge(int a, int b) { AbstractCpsObject A = searchByID(a); AbstractCpsObject B = searchByID(b); for (CpsEdge edge : MODEL.getEdgesOnCanvas()) { // if (edge.getA().getObjName().equals(A.getObjName()) && // (edge.getB().getObjName().equals(B.getObjName())) // || edge.getB().getObjName().equals(A.getObjName()) // && (edge.getA().getObjName().equals(B.getObjName()))) if ((edge.getA().equals(A) && edge.getB().equals(B)) || (edge.getB().equals(A)) && edge.getA().equals(B)) return edge; } return null; } /** * Decrement the Indices if a Key as been removed * * @param key * @param map */ public void decIdx(T key, HashMap map) { for (Entry 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 HashMap copyHashMap(HashMap map) { HashMap newMap = new HashMap<>(); for (Entry i : map.entrySet()) { newMap.put(i.getKey(), i.getValue()); } return newMap; } }