diff options
Diffstat (limited to 'store/src/main/java/org/eclipse/viatra/solver/data/model/ModelStoreImpl.java')
-rw-r--r-- | store/src/main/java/org/eclipse/viatra/solver/data/model/ModelStoreImpl.java | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/store/src/main/java/org/eclipse/viatra/solver/data/model/ModelStoreImpl.java b/store/src/main/java/org/eclipse/viatra/solver/data/model/ModelStoreImpl.java index f5e3b141..a97fb27a 100644 --- a/store/src/main/java/org/eclipse/viatra/solver/data/model/ModelStoreImpl.java +++ b/store/src/main/java/org/eclipse/viatra/solver/data/model/ModelStoreImpl.java | |||
@@ -1,7 +1,6 @@ | |||
1 | package org.eclipse.viatra.solver.data.model; | 1 | package org.eclipse.viatra.solver.data.model; |
2 | 2 | ||
3 | import java.util.HashMap; | 3 | import java.util.HashMap; |
4 | import java.util.HashSet; | ||
5 | import java.util.LinkedList; | 4 | import java.util.LinkedList; |
6 | import java.util.List; | 5 | import java.util.List; |
7 | import java.util.Map; | 6 | import java.util.Map; |
@@ -34,8 +33,7 @@ public class ModelStoreImpl implements ModelStore { | |||
34 | Map<SimilarRelationEquivalenceClass, List<Relation<?>>> symbolRepresentationsPerHashPerArity = new HashMap<>(); | 33 | Map<SimilarRelationEquivalenceClass, List<Relation<?>>> symbolRepresentationsPerHashPerArity = new HashMap<>(); |
35 | 34 | ||
36 | for (DataRepresentation<?, ?> dataRepresentation : dataRepresentations) { | 35 | for (DataRepresentation<?, ?> dataRepresentation : dataRepresentations) { |
37 | if (dataRepresentation instanceof Relation<?>) { | 36 | if (dataRepresentation instanceof Relation<?> symbolRepresentation) { |
38 | Relation<?> symbolRepresentation = (Relation<?>) dataRepresentation; | ||
39 | addOrCreate(symbolRepresentationsPerHashPerArity, | 37 | addOrCreate(symbolRepresentationsPerHashPerArity, |
40 | new SimilarRelationEquivalenceClass(symbolRepresentation), symbolRepresentation); | 38 | new SimilarRelationEquivalenceClass(symbolRepresentation), symbolRepresentation); |
41 | } else if (dataRepresentation instanceof AuxilaryData<?, ?>) { | 39 | } else if (dataRepresentation instanceof AuxilaryData<?, ?>) { |
@@ -58,10 +56,10 @@ public class ModelStoreImpl implements ModelStore { | |||
58 | List<Relation<?>> symbolGroup) { | 56 | List<Relation<?>> symbolGroup) { |
59 | final ContinousHashProvider<Tuple> hashProvider = symbolGroup.get(0).getHashProvider(); | 57 | final ContinousHashProvider<Tuple> hashProvider = symbolGroup.get(0).getHashProvider(); |
60 | final Object defaultValue = symbolGroup.get(0).getDefaultValue(); | 58 | final Object defaultValue = symbolGroup.get(0).getDefaultValue(); |
61 | 59 | ||
62 | List<VersionedMapStore<Tuple, Object>> maps = VersionedMapStoreImpl | 60 | List<VersionedMapStore<Tuple, Object>> maps = VersionedMapStoreImpl |
63 | .createSharedVersionedMapStores(symbolGroup.size(), hashProvider, defaultValue); | 61 | .createSharedVersionedMapStores(symbolGroup.size(), hashProvider, defaultValue); |
64 | 62 | ||
65 | for (int i = 0; i < symbolGroup.size(); i++) { | 63 | for (int i = 0; i < symbolGroup.size(); i++) { |
66 | result.put(symbolGroup.get(i), maps.get(i)); | 64 | result.put(symbolGroup.get(i), maps.get(i)); |
67 | } | 65 | } |
@@ -100,24 +98,20 @@ public class ModelStoreImpl implements ModelStore { | |||
100 | } | 98 | } |
101 | return new ModelImpl(this, maps); | 99 | return new ModelImpl(this, maps); |
102 | } | 100 | } |
103 | 101 | ||
104 | @Override | 102 | @Override |
105 | @SuppressWarnings("squid:S1751") | ||
106 | public synchronized Set<Long> getStates() { | 103 | public synchronized Set<Long> getStates() { |
107 | // if not empty, return first | 104 | var iterator = stores.values().iterator(); |
108 | for(VersionedMapStore<?, ?> store : stores.values()) { | 105 | if (iterator.hasNext()) { |
109 | return new HashSet<>(store.getStates()); | 106 | return Set.copyOf(iterator.next().getStates()); |
110 | } | 107 | } |
111 | // if empty | 108 | return Set.of(0l); |
112 | Set<Long> result = new HashSet<>(); | ||
113 | result.add(0l); | ||
114 | return result; | ||
115 | } | 109 | } |
116 | 110 | ||
117 | @Override | 111 | @Override |
118 | public synchronized ModelDiffCursor getDiffCursor(long from, long to) { | 112 | public synchronized ModelDiffCursor getDiffCursor(long from, long to) { |
119 | Map<DataRepresentation<?, ?>,DiffCursor<?,?>> diffcursors = new HashMap<>(); | 113 | Map<DataRepresentation<?, ?>, DiffCursor<?, ?>> diffcursors = new HashMap<>(); |
120 | for(Entry<DataRepresentation<?, ?>, VersionedMapStore<?, ?>> entry : stores.entrySet()) { | 114 | for (Entry<DataRepresentation<?, ?>, VersionedMapStore<?, ?>> entry : stores.entrySet()) { |
121 | DataRepresentation<?, ?> representation = entry.getKey(); | 115 | DataRepresentation<?, ?> representation = entry.getKey(); |
122 | DiffCursor<?, ?> diffCursor = entry.getValue().getDiffCursor(from, to); | 116 | DiffCursor<?, ?> diffCursor = entry.getValue().getDiffCursor(from, to); |
123 | diffcursors.put(representation, diffCursor); | 117 | diffcursors.put(representation, diffCursor); |