diff --git a/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java b/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java index bd2006eee22b4c7f75646ab0b5847b2e29ac5faf..54c809f397677b967e3b1a519e81259fef2fd3a0 100644 --- a/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java +++ b/VadereGui/src/org/vadere/gui/postvisualization/model/PostvisualizationModel.java @@ -300,7 +300,7 @@ public class PostvisualizationModel extends SimulationModel(); this.targetControllers = new LinkedList<>(); diff --git a/VadereSimulator/src/org/vadere/simulator/entrypoints/ScenarioBuilder.java b/VadereSimulator/src/org/vadere/simulator/entrypoints/ScenarioBuilder.java index 3495bbc11fa9479d473bcfb47db9b895b17d6dda..07715cc6c1072efc7198931cb963693463b9647f 100644 --- a/VadereSimulator/src/org/vadere/simulator/entrypoints/ScenarioBuilder.java +++ b/VadereSimulator/src/org/vadere/simulator/entrypoints/ScenarioBuilder.java @@ -61,9 +61,9 @@ public class ScenarioBuilder { // TODO: duplicated code if(AttributesSimulation.class == clazz){ - builder = new AttributesBuilder<>((E)store.attributesSimulation); + builder = new AttributesBuilder<>((E)store.getAttributesSimulation()); builder.setField(fieldName, value); - store.attributesSimulation = (AttributesSimulation) builder.build(); + store.setAttributesSimulation((AttributesSimulation) builder.build()); } else if(AttributesAgent.class == clazz){ builder = new AttributesBuilder<>((E)store.getTopography().getAttributesPedestrian()); @@ -84,8 +84,8 @@ public class ScenarioBuilder { else { builder = new AttributesBuilder<>(store.getAttributes(clazz)); builder.setField(fieldName, value); - store.attributesList.removeIf(attributes -> attributes.getClass() == clazz); - store.attributesList.add(builder.build()); + store.removeAttributesIf(attributes -> attributes.getClass() == clazz); + store.addAttributes(builder.build()); } } diff --git a/VadereSimulator/src/org/vadere/simulator/models/MainModelBuilder.java b/VadereSimulator/src/org/vadere/simulator/models/MainModelBuilder.java index 98e4af9e3633fb4da6bc9108c8108bd915d2171b..d46da315638a6537560469583114f1749b39c816 100644 --- a/VadereSimulator/src/org/vadere/simulator/models/MainModelBuilder.java +++ b/VadereSimulator/src/org/vadere/simulator/models/MainModelBuilder.java @@ -25,7 +25,7 @@ public class MainModelBuilder { public void createModelAndRandom() throws ClassNotFoundException, InstantiationException, IllegalAccessException { - final AttributesSimulation attributesSimulation = scenarioStore.attributesSimulation; + final AttributesSimulation attributesSimulation = scenarioStore.getAttributesSimulation(); if (attributesSimulation.isUseRandomSeed()) { random = new Random(attributesSimulation.getRandomSeed()); } else { @@ -45,10 +45,10 @@ public class MainModelBuilder { } private MainModel instantiateMainModel(Random random) { - String mainModelName = scenarioStore.mainModel; + String mainModelName = scenarioStore.getMainModel(); DynamicClassInstantiator instantiator = new DynamicClassInstantiator<>(); MainModel mainModel = instantiator.createObject(mainModelName); - mainModel.initialize(scenarioStore.attributesList, scenarioStore.getTopography(), + mainModel.initialize(scenarioStore.getAttributesList(), scenarioStore.getTopography(), scenarioStore.getTopography().getAttributesPedestrian(), random); return mainModel; } diff --git a/VadereSimulator/src/org/vadere/simulator/projects/Scenario.java b/VadereSimulator/src/org/vadere/simulator/projects/Scenario.java index c6a35fd6d34b148e8ac0fe8d3e316fe27c29a114..8041abd526032b573aa42549f5b8409aabffc24e 100644 --- a/VadereSimulator/src/org/vadere/simulator/projects/Scenario.java +++ b/VadereSimulator/src/org/vadere/simulator/projects/Scenario.java @@ -11,6 +11,7 @@ import java.util.List; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; +import org.jetbrains.annotations.NotNull; import org.vadere.simulator.projects.dataprocessing.DataProcessingJsonManager; import org.vadere.simulator.projects.io.JsonConverter; import org.vadere.state.attributes.Attributes; @@ -32,24 +33,17 @@ import difflib.DiffUtils; public class Scenario { private static Logger logger = LogManager.getLogger(Scenario.class); - private ScenarioStore scenarioStore; - private DataProcessingJsonManager dataProcessingJsonManager; - private String savedStateSerialized; private String currentStateSerialized; public Scenario(final String name) { - this(name, new ScenarioStore(name)); - } - - public Scenario(final ScenarioStore store) { - this(store.name, store); + this(new ScenarioStore(name)); } - public Scenario(final String name, final ScenarioStore store) { + public Scenario(@NotNull final ScenarioStore store) { this.scenarioStore = store; this.dataProcessingJsonManager = new DataProcessingJsonManager(); @@ -88,7 +82,7 @@ public class Scenario { } public String getName() { - return scenarioStore.name; + return scenarioStore.getName(); } public ScenarioStore getScenarioStore() { @@ -96,7 +90,7 @@ public class Scenario { } public List getModelAttributes() { - return scenarioStore.attributesList; + return scenarioStore.getAttributesList(); } public AttributesAgent getAttributesPedestrian() { @@ -104,26 +98,26 @@ public class Scenario { } public AttributesSimulation getAttributesSimulation() { - return scenarioStore.attributesSimulation; + return scenarioStore.getAttributesSimulation(); } public Topography getTopography() { return scenarioStore.getTopography(); } - public void setName(String name) { - this.scenarioStore.name = name; + public void setName(@NotNull final String name) { + this.scenarioStore.setName(name); } - public void setAttributesModel(List attributesList) { - scenarioStore.attributesList = attributesList; + public void setAttributesModel(@NotNull final List attributesList) { + scenarioStore.setAttributesList(attributesList); } - public void setAttributesSimulation(AttributesSimulation attributesSimulation) { - this.scenarioStore.attributesSimulation = attributesSimulation; + public void setAttributesSimulation(@NotNull final AttributesSimulation attributesSimulation) { + this.scenarioStore.setAttributesSimulation(attributesSimulation); } - public void setTopography(final Topography topography) { + public void setTopography(@NotNull final Topography topography) { scenarioStore.setTopography(topography); } @@ -142,7 +136,7 @@ public class Scenario { } public String getDisplayName() { - return scenarioStore.name + (hasUnsavedChanges() ? "*" : ""); + return scenarioStore.getName() + (hasUnsavedChanges() ? "*" : ""); } public void discardChanges() { @@ -157,16 +151,16 @@ public class Scenario { } public String getDescription() { - return scenarioStore.description; + return scenarioStore.getDescription(); } public void setDescription(String description) { - scenarioStore.description = description; + scenarioStore.setDescription(description); } public String readyToRunResponse() { // TODO [priority=medium] [task=check] add more conditions - if (scenarioStore.mainModel == null) { - return scenarioStore.name + ": no mainModel is set"; + if (scenarioStore.getMainModel() == null) { + return scenarioStore.getName() + ": no mainModel is set"; } return null; } @@ -175,11 +169,11 @@ public class Scenario { return dataProcessingJsonManager; } - public void setDataProcessingJsonManager(final DataProcessingJsonManager manager) { + public void setDataProcessingJsonManager(@NotNull final DataProcessingJsonManager manager) { this.dataProcessingJsonManager = manager; } - public void saveToOutputPath(final Path outputPath) { + public void saveToOutputPath(@NotNull final Path outputPath) { try (PrintWriter out = new PrintWriter(Paths.get(outputPath.toString(), getName() + IOUtils.SCENARIO_FILE_EXTENSION).toString())) { out.println(JsonConverter.serializeScenarioRunManager(this, true)); } catch (IOException e) { diff --git a/VadereSimulator/src/org/vadere/simulator/projects/ScenarioRun.java b/VadereSimulator/src/org/vadere/simulator/projects/ScenarioRun.java index d0b185de45636fca32b7707f258c9147a45181e5..17ed776d649373e03b618c50e3769bc58e799b7e 100644 --- a/VadereSimulator/src/org/vadere/simulator/projects/ScenarioRun.java +++ b/VadereSimulator/src/org/vadere/simulator/projects/ScenarioRun.java @@ -84,7 +84,7 @@ public class ScenarioRun implements Runnable { final Random random = modelBuilder.getRandom(); // prepare processors and simulation data writer - if(scenarioStore.attributesSimulation.isWriteSimulationData()) { + if(scenarioStore.getAttributesSimulation().isWriteSimulationData()) { processorManager = dataProcessingJsonManager.createProcessorManager(mainModel); } @@ -97,7 +97,7 @@ public class ScenarioRun implements Runnable { sealAllAttributes(); // Run simulation main loop from start time = 0 seconds - simulation = new Simulation(mainModel, 0, scenarioStore.name, scenarioStore, passiveCallbacks, random, processorManager); + simulation = new Simulation(mainModel, 0, scenarioStore.getName(), scenarioStore, passiveCallbacks, random, processorManager); } simulation.run(); @@ -165,8 +165,8 @@ public class ScenarioRun implements Runnable { } public String readyToRunResponse() { // TODO [priority=medium] [task=check] add more conditions - if (scenarioStore.mainModel == null) { - return scenarioStore.name + ": no mainModel is set"; + if (scenarioStore.getMainModel() == null) { + return scenarioStore.getName() + ": no mainModel is set"; } return null; } diff --git a/VadereSimulator/src/org/vadere/simulator/projects/ScenarioStore.java b/VadereSimulator/src/org/vadere/simulator/projects/ScenarioStore.java index 55bb5ea207b079f49582dc2bf5c706fe50605e6d..a01232a703af53c374404760dea3052db43bae31 100644 --- a/VadereSimulator/src/org/vadere/simulator/projects/ScenarioStore.java +++ b/VadereSimulator/src/org/vadere/simulator/projects/ScenarioStore.java @@ -3,6 +3,7 @@ package org.vadere.simulator.projects; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.function.Predicate; import org.apache.commons.codec.digest.DigestUtils; import org.apache.log4j.LogManager; @@ -28,11 +29,11 @@ import com.fasterxml.jackson.core.JsonProcessingException; public class ScenarioStore { private static Logger logger = LogManager.getLogger(ScenarioStore.class); - public String name; - public String description; - public String mainModel; - public List attributesList; - public AttributesSimulation attributesSimulation; + private String name; + private String description; + private String mainModel; + private List attributesList; + private AttributesSimulation attributesSimulation; private Topography topography; public ScenarioStore(final String name, final String description, final String mainModel, final List attributesModel, @@ -85,4 +86,52 @@ public class ScenarioStore { public T getAttributes(@NotNull final Class clazz) { return FindByClass.findSingleObjectOfClass(attributesList, clazz); } + + public void setAttributesList(final List attributesList) { + this.attributesList = attributesList; + } + + public void setAttributesSimulation(final AttributesSimulation attributesSimulation) { + this.attributesSimulation = attributesSimulation; + } + + public void removeAttributesIf(@NotNull final Predicate predicate) { + attributesList.removeIf(predicate); + } + + public void addAttributes(@NotNull final Attributes attributes) { + attributesList.add(attributes); + } + + public void setDescription(final String description) { + this.description = description; + } + + public void setMainModel(final String mainModel) { + this.mainModel = mainModel; + } + + public void setName(final String name) { + this.name = name; + } + + public AttributesSimulation getAttributesSimulation() { + return attributesSimulation; + } + + public List getAttributesList() { + return attributesList; + } + + public String getDescription() { + return description; + } + + public String getMainModel() { + return mainModel; + } + + public String getName() { + return name; + } } diff --git a/VadereSimulator/src/org/vadere/simulator/projects/io/JsonConverter.java b/VadereSimulator/src/org/vadere/simulator/projects/io/JsonConverter.java index 2a0262396e74fda47b925c8e9fe56989c3a9dcb6..154b9b716e6ff51f6fcd9feb8a857914c69c5b92 100644 --- a/VadereSimulator/src/org/vadere/simulator/projects/io/JsonConverter.java +++ b/VadereSimulator/src/org/vadere/simulator/projects/io/JsonConverter.java @@ -87,8 +87,8 @@ public class JsonConverter { } private static void serializeMeta(ObjectNode node, boolean commitHashIncluded, ScenarioStore scenarioStore) { - node.put("name", scenarioStore.name); - node.put("description", scenarioStore.description); + node.put("name", scenarioStore.getName()); + node.put("description", scenarioStore.getDescription()); node.put("release", HashGenerator.releaseNumber()); if (commitHashIncluded) node.put("commithash", HashGenerator.commitHash()); @@ -97,14 +97,14 @@ public class JsonConverter { private static ObjectNode serializeVadereNode(ScenarioStore scenarioStore) { ObjectNode vadereNode = StateJsonConverter.createObjectNode(); - vadereNode.put(StateJsonConverter.MAIN_MODEL_KEY, scenarioStore.mainModel); + vadereNode.put(StateJsonConverter.MAIN_MODEL_KEY, scenarioStore.getMainModel()); // vadere > attributesModel - ObjectNode attributesModelNode = StateJsonConverter.serializeAttributesModelToNode(scenarioStore.attributesList); + ObjectNode attributesModelNode = StateJsonConverter.serializeAttributesModelToNode(scenarioStore.getAttributesList()); vadereNode.set("attributesModel", attributesModelNode); // vadere > attributesSimulation - vadereNode.set("attributesSimulation", StateJsonConverter.convertValue(scenarioStore.attributesSimulation, JsonNode.class)); + vadereNode.set("attributesSimulation", StateJsonConverter.convertValue(scenarioStore.getAttributesSimulation(), JsonNode.class)); // vadere > topography ObjectNode topographyNode = StateJsonConverter.serializeTopographyToNode(scenarioStore.getTopography()); @@ -119,10 +119,10 @@ public class JsonConverter { } public static ScenarioStore cloneScenarioStore(ScenarioStore scenarioStore) throws IOException { - JsonNode attributesSimulationNode = StateJsonConverter.convertValue(scenarioStore.attributesSimulation, JsonNode.class); - ObjectNode attributesModelNode = StateJsonConverter.serializeAttributesModelToNode(scenarioStore.attributesList); + JsonNode attributesSimulationNode = StateJsonConverter.convertValue(scenarioStore.getAttributesSimulation(), JsonNode.class); + ObjectNode attributesModelNode = StateJsonConverter.serializeAttributesModelToNode(scenarioStore.getAttributesList()); ObjectNode topographyNode = StateJsonConverter.serializeTopographyToNode(scenarioStore.getTopography()); - return new ScenarioStore(scenarioStore.name, scenarioStore.description, scenarioStore.mainModel, + return new ScenarioStore(scenarioStore.getName(), scenarioStore.getDescription(), scenarioStore.getMainModel(), StateJsonConverter.deserializeAttributesListFromNode(attributesModelNode), StateJsonConverter.deserializeAttributesSimulationFromNode(attributesSimulationNode), StateJsonConverter.deserializeTopographyFromNode(topographyNode));