aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store/src/main/java/tools/refinery/store/statecoding/internal/StateCoderBuilderImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store/src/main/java/tools/refinery/store/statecoding/internal/StateCoderBuilderImpl.java')
-rw-r--r--subprojects/store/src/main/java/tools/refinery/store/statecoding/internal/StateCoderBuilderImpl.java42
1 files changed, 21 insertions, 21 deletions
diff --git a/subprojects/store/src/main/java/tools/refinery/store/statecoding/internal/StateCoderBuilderImpl.java b/subprojects/store/src/main/java/tools/refinery/store/statecoding/internal/StateCoderBuilderImpl.java
index 05b47c52..eed591e7 100644
--- a/subprojects/store/src/main/java/tools/refinery/store/statecoding/internal/StateCoderBuilderImpl.java
+++ b/subprojects/store/src/main/java/tools/refinery/store/statecoding/internal/StateCoderBuilderImpl.java
@@ -5,61 +5,61 @@
5 */ 5 */
6package tools.refinery.store.statecoding.internal; 6package tools.refinery.store.statecoding.internal;
7 7
8import org.eclipse.collections.impl.set.mutable.primitive.IntHashSet; 8import org.eclipse.collections.api.factory.primitive.IntSets;
9import org.eclipse.collections.api.set.primitive.MutableIntSet;
10import tools.refinery.store.adapter.AbstractModelAdapterBuilder;
9import tools.refinery.store.model.ModelStore; 11import tools.refinery.store.model.ModelStore;
10import tools.refinery.store.model.ModelStoreBuilder;
11import tools.refinery.store.representation.AnySymbol; 12import tools.refinery.store.representation.AnySymbol;
12import tools.refinery.store.representation.Symbol; 13import tools.refinery.store.representation.Symbol;
13import tools.refinery.store.statecoding.*; 14import tools.refinery.store.statecoding.StateCodeCalculatorFactory;
15import tools.refinery.store.statecoding.StateCoderBuilder;
16import tools.refinery.store.statecoding.StateCoderStoreAdapter;
17import tools.refinery.store.statecoding.StateEquivalenceChecker;
14import tools.refinery.store.statecoding.neighbourhood.NeighbourhoodCalculator; 18import tools.refinery.store.statecoding.neighbourhood.NeighbourhoodCalculator;
15import tools.refinery.store.statecoding.stateequivalence.StateEquivalenceCheckerImpl; 19import tools.refinery.store.statecoding.stateequivalence.StateEquivalenceCheckerImpl;
16import tools.refinery.store.tuple.Tuple1; 20import tools.refinery.store.tuple.Tuple1;
17 21
18import java.util.*; 22import java.util.HashSet;
23import java.util.LinkedHashSet;
24import java.util.Set;
19 25
20public class StateCoderBuilderImpl implements StateCoderBuilder { 26public class StateCoderBuilderImpl extends AbstractModelAdapterBuilder<StateCoderStoreAdapter>
21 Set<AnySymbol> excluded = new HashSet<>(); 27 implements StateCoderBuilder {
22 IntHashSet individuals = new IntHashSet(); 28 private final Set<AnySymbol> excluded = new HashSet<>();
23 29 private final MutableIntSet individuals = IntSets.mutable.empty();
24 StateCodeCalculatorFactory calculator = NeighbourhoodCalculator::new; 30 private StateCodeCalculatorFactory calculator = NeighbourhoodCalculator::new;
25 StateEquivalenceChecker checker = new StateEquivalenceCheckerImpl(); 31 private StateEquivalenceChecker checker = new StateEquivalenceCheckerImpl();
26 32
27 @Override 33 @Override
28 public StateCoderBuilder exclude(AnySymbol symbol) { 34 public StateCoderBuilder exclude(AnySymbol symbol) {
35 checkNotConfigured();
29 excluded.add(symbol); 36 excluded.add(symbol);
30 return this; 37 return this;
31 } 38 }
32 39
33 @Override 40 @Override
34 public StateCoderBuilder individual(Tuple1 tuple) { 41 public StateCoderBuilder individual(Tuple1 tuple) {
42 checkNotConfigured();
35 individuals.add(tuple.get(0)); 43 individuals.add(tuple.get(0));
36 return this; 44 return this;
37 } 45 }
38 46
39 @Override 47 @Override
40 public StateCoderBuilder stateEquivalenceChecker(StateEquivalenceChecker stateEquivalenceChecker) { 48 public StateCoderBuilder stateEquivalenceChecker(StateEquivalenceChecker stateEquivalenceChecker) {
49 checkNotConfigured();
41 this.checker = stateEquivalenceChecker; 50 this.checker = stateEquivalenceChecker;
42 return this; 51 return this;
43 } 52 }
44 53
45 @Override 54 @Override
46 public StateCoderBuilder stateCodeCalculatorFactory(StateCodeCalculatorFactory codeCalculatorFactory) { 55 public StateCoderBuilder stateCodeCalculatorFactory(StateCodeCalculatorFactory codeCalculatorFactory) {
56 checkNotConfigured();
47 this.calculator = codeCalculatorFactory; 57 this.calculator = codeCalculatorFactory;
48 return this; 58 return this;
49 } 59 }
50 60
51 @Override 61 @Override
52 public boolean isConfigured() { 62 protected StateCoderStoreAdapter doBuild(ModelStore store) {
53 return true;
54 }
55
56 @Override
57 public void configure(ModelStoreBuilder storeBuilder) {
58 // It does not modify the build process
59 }
60
61 @Override
62 public StateCoderStoreAdapter build(ModelStore store) {
63 Set<Symbol<?>> symbols = new LinkedHashSet<>(); 63 Set<Symbol<?>> symbols = new LinkedHashSet<>();
64 for (AnySymbol symbol : store.getSymbols()) { 64 for (AnySymbol symbol : store.getSymbols()) {
65 if (!excluded.contains(symbol) && (symbol instanceof Symbol<?> typed)) { 65 if (!excluded.contains(symbol) && (symbol instanceof Symbol<?> typed)) {