package psoAlgoCode; import java.util.ArrayList; import java.util.Collections; import classes.AbstractCpsObject; import classes.CpsEdge; import classes.CpsUpperNode; import classes.HolonBattery; import classes.HolonObject; import classes.HolonSwitch; import classes.SubNet; import classes.comparator.EnergyMinToMaxComparator; import classes.comparator.MinEnergyComparator; import classes.comparator.WeakestBattery; import ui.model.Model; import ui.controller.Control; import ui.controller.SimulationManager; public class HelpFunctions { private ArrayList objectsToHandle; static SimulateSimulator sim; public static void runRepairConnections(Model model) { repairAllEdgesOnMainCanvas(model); } /** * Just a helper to avoid problems with destroyed edges etc.. * @param model */ private static void repairAllEdgesOnMainCanvas(Model model) { for (AbstractCpsObject obj : model.getObjectsOnCanvas()) { if (obj instanceof CpsUpperNode) { repairAllEdgesInUpperNode((CpsUpperNode) obj); } for (CpsEdge e : obj.getConnections()) { e.setWorkingState(true); } } } /** * Repair function for Groupnodes.... Should all be handled in a single function if necessary. * @param uNode */ private static void repairAllEdgesInUpperNode(CpsUpperNode uNode) { for (AbstractCpsObject obj : uNode.getNodes()) { if (obj instanceof CpsUpperNode) { repairAllEdgesInUpperNode((CpsUpperNode) obj); } for (CpsEdge e : obj.getConnections()) { e.setWorkingState(true); } } } public static void calculateStateForTimeStepPSO(Model model, Control control) { //Was not in an if-clause in the students work... dont know why he generated a new simulator everytime the state for a timestep was calculated... maybe causes bugs? if(sim == null) { sim = new SimulateSimulator(model); } sim.calculateStateForTimeStep(model.getCurIteration()); } /** * Another anoying helperfunction which should be part of the general HOLEG functionalities * @return */ public static ArrayList getCurrentSubnets(){ return sim.getSubNets(); } }