diff --git a/src/main/java/CarSimulation.java b/src/main/java/CarSimulation.java index 108cc9377571a818a18cfa2858519ce9b829d5ec..c3627e6abecc2bde003b95a6e7d69cb51049c7eb 100644 --- a/src/main/java/CarSimulation.java +++ b/src/main/java/CarSimulation.java @@ -29,10 +29,10 @@ public class CarSimulation { dir.mkdirs(); configureLogger(); - Routes routes = new Routes(); - routes.generateRoutes(); - if (showUI) { + Routes routes = new Routes(); + routes.generateRoutes(); + Simulation simulation = new Simulation("visualized", routes, 1000, 3600, 14400, true); Visualizer visualizer = showUI ? new Visualizer(simulation, routes) : null; Thread simulationThread = new Thread(simulation); @@ -47,7 +47,10 @@ public class CarSimulation { else { for (int carCount = MIN_CAR_COUNT; carCount <= MAX_CAR_COUNT; carCount += CAR_COUNT_CHANGE) { for (int i = 0; i < REPEAT_COUNT; i++) { - simulations.add(new Simulation(String.format("r%d-%d", i, carCount), routes.clone(), carCount, 3600, 14400, false)); + Routes routes = new Routes(); + routes.generateRoutes(); + + simulations.add(new Simulation(String.format("r%d-%d", i, carCount), routes, carCount, 3600, 14400, false)); } } diff --git a/src/main/java/simulation/ChargingStation.java b/src/main/java/simulation/ChargingStation.java index 39d68e8881672aaeec9e0f94a41996a34acdcd60..c10abe5f0b8226b0ee235df4f7d798509d309b1e 100644 --- a/src/main/java/simulation/ChargingStation.java +++ b/src/main/java/simulation/ChargingStation.java @@ -2,8 +2,9 @@ package simulation; import java.util.ArrayList; import java.util.Collections; +import java.util.List; -public class ChargingStation implements Cloneable { +public class ChargingStation { public enum ChargerType { Type2, @@ -14,7 +15,7 @@ public class ChargingStation implements Cloneable { Tyomaapistoke } - public class Charger implements Comparable, Cloneable { + public class Charger implements Comparable { private final int power; private boolean inUse; private ChargerType type; @@ -158,19 +159,9 @@ public class ChargingStation implements Cloneable { return s.toString(); } - @Override - public ChargingStation clone() { - ChargingStation clone = new ChargingStation( - name, - distance, - distanceFromHighway, - new boolean[]{hasShop, hasFood, customerExclusive} - ); - - for (Charger charger : chargers) { - clone.addCharger(charger.getPower(), charger.getType()); - } - - return clone; + public ChargingStation createNew() { + ChargingStation chargingStation = new ChargingStation(name, distance, distanceFromHighway, new boolean[] {hasShop, hasFood, customerExclusive}); + chargers.forEach(charger -> chargingStation.addCharger(charger.getPower(), charger.getType())); + return chargingStation; } } diff --git a/src/main/java/simulation/Route.java b/src/main/java/simulation/Route.java index 96b7ed971608320d1998bc57d3b2cf1d4140ed8e..a90d5e69ada3a070414514d12d21bae25c02b8ee 100644 --- a/src/main/java/simulation/Route.java +++ b/src/main/java/simulation/Route.java @@ -97,7 +97,10 @@ public class Route { public Route getFlippedRoute(Routes routes) { Route route = this; - ArrayList<ChargingStation> newChargingStations = (ArrayList<ChargingStation>) route.chargingStations.clone(); + ArrayList<ChargingStation> newChargingStations = route.chargingStations.stream() + .map(ChargingStation::createNew) + .collect(Collectors.toCollection(ArrayList::new)); + ArrayList<Route> newRootRoutes = route.getRootRoutes(); Collections.reverse(newChargingStations); if (newRootRoutes != null) @@ -166,19 +169,4 @@ public class Route { } return s.toString(); } - - public Route clone(Routes newRoutes) { - ArrayList<ChargingStation> newChargingStations = new ArrayList<>(); - for (ChargingStation station : chargingStations) { - newChargingStations.add(station.clone()); - } - return new Route( - newRoutes, - name, - length, - newChargingStations, - startPoint, - endPoint - ); - } } diff --git a/src/main/java/simulation/Routes.java b/src/main/java/simulation/Routes.java index 1173d9dd9f8068be9d0cca28e02690ce76244fc5..dcfe2feaecec103dcfb744a4fc4b58ab4c12487a 100644 --- a/src/main/java/simulation/Routes.java +++ b/src/main/java/simulation/Routes.java @@ -10,7 +10,7 @@ import java.util.List; import java.util.logging.Logger; import java.util.stream.Collectors; -public class Routes implements Cloneable { +public class Routes { private final Logger logger = Logger.getGlobal(); public HashMap<String, Route> routes = new HashMap<>(); @@ -378,18 +378,4 @@ public class Routes implements Cloneable { return new Route(this, rootRoutes, startingPoint); } - - @Override - public Routes clone() { - try { - Routes clone = (Routes) super.clone(); - clone.routes = new HashMap<>(); - for (String key : routes.keySet()) { - clone.routes.put(key, routes.get(key).clone(clone)); - } - return clone; - } catch (CloneNotSupportedException e) { - throw new AssertionError(); - } - } }