aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java')
-rw-r--r--subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java
new file mode 100644
index 00000000..08a69cb4
--- /dev/null
+++ b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java
@@ -0,0 +1,51 @@
1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.visualization.statespace.internal;
7
8import tools.refinery.store.map.Version;
9import tools.refinery.visualization.statespace.VisualizationStore;
10
11import java.util.HashMap;
12import java.util.Map;
13
14public class VisualizationStoreImpl implements VisualizationStore {
15
16 private final Map<Version, Integer> states = new HashMap<>();
17 private int transitionCounter = 0;
18 private Integer numberOfStates = 0;
19 private final StringBuilder designSpaceBuilder = new StringBuilder();
20
21 @Override
22 public synchronized void addState(Version state, String label) {
23 if (states.containsKey(state)) {
24 return;
25 }
26 states.put(state, numberOfStates++);
27 designSpaceBuilder.append(states.get(state)).append(" [label = \"").append(states.get(state)).append(" (");
28 designSpaceBuilder.append(label);
29 designSpaceBuilder.append(")\"\n").append("URL=\"./").append(states.get(state)).append(".svg\"]\n");
30 }
31
32 @Override
33 public synchronized void addSolution(Version state) {
34 designSpaceBuilder.append(states.get(state)).append(" [peripheries = 2]\n");
35 }
36
37 @Override
38 public synchronized void addTransition(Version from, Version to, String label) {
39 designSpaceBuilder.append(states.get(from)).append(" -> ").append(states.get(to))
40 .append(" [label=\"").append(transitionCounter++).append(": ").append(label).append("\"]\n");
41 }
42
43 public synchronized StringBuilder getDesignSpaceStringBuilder() {
44 return designSpaceBuilder;
45 }
46
47 @Override
48 public Map<Version, Integer> getStates() {
49 return states;
50 }
51}