123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package ui.controller;
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.ListIterator;
- import classes.AbstractCpsObject;
- import classes.CpsEdge;
- import classes.HolonObject;
- import classes.HolonSwitch;
- import ui.model.MinimumModel;
- import ui.model.MinimumNetwork;
- public class CalculataModel {
- public static ArrayList<MinimumNetwork> calculateNetworks(MinimumModel minModel, int Iteration){
- ArrayList<MinimumNetwork> listOfNetworks = new ArrayList<MinimumNetwork>();
- while(!minModel.getHolonObjectList().isEmpty()) {
- //lookAt the first holonObject and find his neighbors
- HolonObject lookAtObject = minModel.getHolonObjectList().get(0);
- //delete out of list
- minModel.getHolonObjectList().remove(0);
- //create a new Network
- MinimumNetwork actualNetwork = new MinimumNetwork(new ArrayList<HolonObject>(), new ArrayList<CpsEdge>());
- actualNetwork.getHolonObjectList().add(lookAtObject);
- //create List of neighbors
- LinkedList<AbstractCpsObject> neighbors = new LinkedList<AbstractCpsObject>();
- populateListOfNeighbors(minModel, lookAtObject, actualNetwork, neighbors);
- while(!neighbors.isEmpty()) {
- AbstractCpsObject lookAtNeighbor = neighbors.getFirst();
- if(lookAtNeighbor instanceof HolonObject) {
- actualNetwork.getHolonObjectList().add((HolonObject) lookAtNeighbor);
- minModel.getHolonObjectList().remove(lookAtNeighbor);
- }
- //When HolonSwitch Check if closed
- if(!(lookAtNeighbor instanceof HolonSwitch) || ((HolonSwitch)lookAtNeighbor).getState(Iteration)) {
- populateListOfNeighbors(minModel, lookAtNeighbor, actualNetwork, neighbors);
- }
-
- neighbors.removeFirst();
- }
- listOfNetworks.add(actualNetwork);
- }
- return listOfNetworks;
- }
- private static void populateListOfNeighbors(MinimumModel minModel, AbstractCpsObject lookAtObject,
- MinimumNetwork actualNetwork, LinkedList<AbstractCpsObject> neighbors) {
- ListIterator<CpsEdge> iter = minModel.getEdgeList().listIterator();
- while(iter.hasNext())
- {
- CpsEdge lookAtEdge = iter.next();
- if(lookAtEdge.isConnectedTo(lookAtObject)) {
- iter.remove();
- actualNetwork.getEdgeList().add(lookAtEdge);
- //Add neighbar
- AbstractCpsObject edgeNeighbor;
- if(lookAtEdge.getA().equals(lookAtObject)) {
- edgeNeighbor = lookAtEdge.getB();
- }else {
- edgeNeighbor = lookAtEdge.getA();
- }
- if(!neighbors.contains(edgeNeighbor)) {
- neighbors.add(edgeNeighbor);
- }
- }
- }
- }
-
- public static void calculateDecNetworkModel(MinimumNetwork actualNetwork) {
-
- }
- }
|