123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package ui.controller;
- import java.util.AbstractMap.SimpleEntry;
- import model.AbstractCanvasObject;
- import model.GroupNode;
- import model.HolonElement;
- import model.HolonObject;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Optional;
- import ui.model.Model;
- /**
- * Controller for Objects.
- *
- * @author Gruppe14
- */
- public class ObjectController {
- private Model model;
- private MultiPurposeController mpC;
- /**
- * Constructor.
- *
- * @param model Model
- * @param mp MultiPurposeController
- */
- public ObjectController(Model model, MultiPurposeController mp) {
- this.model = model;
- this.mpC = mp;
- initHolonElements();
- }
- /**
- * init default Power supply of the Power Plant.
- */
- public void initHolonElements() {
- addNewElementIntoCategoryObject("Energy", "Power Plant", "Power", 10000);
- addNewElementIntoCategoryObject("Building", "House", "TV", -250);
- addNewElementIntoCategoryObject("Building", "House", "TV", -250);
- addNewElementIntoCategoryObject("Building", "House", "Fridge", -500);
- addNewElementIntoCategoryObject("Building", "House", "Radio", -100);
- addNewElementIntoCategoryObject("Building", "House", "PC", -250);
- addNewElementIntoCategoryObject("Building", "House", "PC", -250);
- addNewElementIntoCategoryObject("Building", "House", "PC", -250);
- addNewElementIntoCategoryObject("Building", "House", "Light", -50);
- addNewElementIntoCategoryObject("Building", "House", "Light", -50);
- addNewElementIntoCategoryObject("Building", "House", "Light", -50);
- addNewElementIntoCategoryObject("Building", "House", "Light", -50);
- addNewElementIntoCategoryObject("Building", "House", "Light", -50);
- addNewElementIntoCategoryObject("Building", "House", "Solar Panels", 300);
- }
- /**
- * Adds Element into a Object on the Canvas.
- *
- * @param object the Object
- * @param element the Element
- */
- public void addElementIntoCanvasObject(HolonObject object, HolonElement element) {
- element.setSaving(null);
- object.addElement(element);
- }
- /**
- * Add a new Element into a Object on the Canvas.
- *
- * @param objectId the Object ID
- * @param element the Name of the Element
- * @param amount the Amount
- * @param energy the Energy
- * @param elementId the Element ID
- */
- public void addNewElementIntoCanvasObject(int objectId, String element, float energy, int elementId) {
- HolonObject hObject = (HolonObject) mpC.searchByID(objectId);
- if (hObject == null) {
- hObject = (HolonObject) model.getSelectedObjects().stream().findFirst().get();
- }
- HolonElement ele = new HolonElement(hObject, element, energy, elementId);
- addElementIntoCanvasObject(hObject, ele);
- }
- /**
- * Add Element into a Object in Category.
- *
- * @param category the Category
- * @param object the Object
- * @param element the Element
- */
- public void addElementIntoCategoryObject(String category, String objectName, HolonElement element) {
- element.setSaving(new SimpleEntry<>(category, objectName));
- Optional<AbstractCanvasObject> object = mpC.searchCatObj(mpC.searchCat(category), objectName);
- object.ifPresent(obj -> ((HolonObject) obj).addElement(element));
- if(object.isEmpty()) {
- System.out.println(String.format("Category %s ObjectName %s element %s", category, objectName, element.getName()));
- //throw new UnsupportedOperationException();
- }
- }
- /**
- * Add a new Element into a Object in Category.
- *
- * @param category the Category
- * @param objectName the Object
- * @param element the Element Name
- * @param energy the Energy
- */
- public void addNewElementIntoCategoryObject(String category, String objectName, String element, float energy) {
- HolonElement ele = new HolonElement(null, element, energy);
- addElementIntoCategoryObject(category, objectName, ele);
- }
- /**
- * deletes a Element from a given Object.
- *
- * @param obj the Oject
- * @param ele the Element
- */
- public void deleteElement(HolonObject obj, HolonElement ele) {
- obj.getElements().remove(ele);
- }
- /**
- * deletes a selectedObject.
- *
- * @param obj Cpsobject
- */
- public void removeObjectFromSelection(AbstractCanvasObject obj) {
- model.getSelectedObjects().remove(obj);
- }
- /**
- * add an Object to selectedObject.
- *
- * @param obj AbstractCpsobject
- */
- public void addSelectedObject(AbstractCanvasObject obj) {
- model.getSelectedObjects().add(obj);
- }
- /**
- * add an Object to selectedObject.
- *
- * @param obj AbstractCpsobject
- */
- public void addSelectedObjects(Collection<AbstractCanvasObject> objects) {
- model.getSelectedObjects().addAll(objects);
- }
- /**
- * Get the number of HolonObjects in the given List
- *
- * @param list
- */
- public int getNumberHolonObjects(ArrayList<AbstractCanvasObject> list) {
- int val = 0;
- for (AbstractCanvasObject obj : list) {
- if (obj instanceof HolonObject) {
- val++;
- } else if (obj instanceof GroupNode) {
- val += getNumberHolonObjects(((GroupNode) obj).getNodes());
- }
- }
- return val;
- }
- }
|