Skip to content

Commit 1c7bfde

Browse files
committed
apply visualization refactorings of automatalib
1 parent c4c9b9c commit 1c7bfde

21 files changed

Lines changed: 50 additions & 166 deletions

File tree

algorithms/active/adt/src/main/java/de/learnlib/algorithms/adt/adt/ADTNode.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import de.learnlib.algorithms.adt.util.ADTUtil;
2222
import de.learnlib.api.oracle.SymbolQueryOracle;
2323
import net.automatalib.graphs.ads.RecursiveADSNode;
24-
import net.automatalib.graphs.dot.DefaultDOTHelper;
25-
import net.automatalib.graphs.dot.GraphDOTHelper;
24+
import net.automatalib.visualization.DefaultVisualizationHelper;
25+
import net.automatalib.visualization.VisualizationHelper;
2626
import net.automatalib.words.Word;
2727

2828
/**
@@ -66,8 +66,8 @@ default Collection<ADTNode<S, I, O>> getNodes() {
6666
}
6767

6868
@Override
69-
default GraphDOTHelper<ADTNode<S, I, O>, ADTNode<S, I, O>> getGraphDOTHelper() {
70-
return new DefaultDOTHelper<ADTNode<S, I, O>, ADTNode<S, I, O>>() {
69+
default VisualizationHelper<ADTNode<S, I, O>, ADTNode<S, I, O>> getVisualizationHelper() {
70+
return new DefaultVisualizationHelper<ADTNode<S, I, O>, ADTNode<S, I, O>>() {
7171

7272
@Override
7373
public boolean getNodeProperties(final ADTNode<S, I, O> node, final Map<String, String> properties) {

algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/AbstractDTLearner.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535
import de.learnlib.datastructure.discriminationtree.model.AbstractWordBasedDiscriminationTree;
3636
import de.learnlib.util.MQUtil;
3737
import net.automatalib.automata.concepts.SuffixOutput;
38-
import net.automatalib.graphs.dot.EmptyDOTHelper;
39-
import net.automatalib.graphs.dot.GraphDOTHelper;
4038
import net.automatalib.words.Alphabet;
4139
import net.automatalib.words.Word;
4240
import net.automatalib.words.impl.Alphabets;
@@ -215,10 +213,6 @@ public DTLearnerHypothesis<I, D, SP, TP> getHypothesisDS() {
215213
return hypothesis;
216214
}
217215

218-
public GraphDOTHelper<HState<I, D, SP, TP>, HTransition<I, D, SP, TP>> getHypothesisDOTHelper() {
219-
return new EmptyDOTHelper<>();
220-
}
221-
222216
@Override
223217
public void addAlphabetSymbol(I symbol) {
224218

algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/dfa/DTLearnerDFA.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616
package de.learnlib.algorithms.discriminationtree.dfa;
1717

18-
import java.util.Map;
19-
2018
import com.github.misberner.buildergen.annotations.GenerateBuilder;
2119
import de.learnlib.algorithms.discriminationtree.AbstractDTLearner;
2220
import de.learnlib.algorithms.discriminationtree.DTLearnerState;
@@ -30,8 +28,6 @@
3028
import de.learnlib.counterexamples.LocalSuffixFinders;
3129
import de.learnlib.datastructure.discriminationtree.BinaryDTree;
3230
import net.automatalib.automata.fsa.DFA;
33-
import net.automatalib.graphs.dot.EmptyDOTHelper;
34-
import net.automatalib.graphs.dot.GraphDOTHelper;
3531
import net.automatalib.words.Alphabet;
3632
import net.automatalib.words.Word;
3733

@@ -93,20 +89,6 @@ protected Query<I, Boolean> tpQuery(HTransition<I, Boolean, Boolean, Void> trans
9389
return null;
9490
}
9591

96-
@Override
97-
public GraphDOTHelper<HState<I, Boolean, Boolean, Void>, HTransition<I, Boolean, Boolean, Void>> getHypothesisDOTHelper() {
98-
return new EmptyDOTHelper<HState<I, Boolean, Boolean, Void>, HTransition<I, Boolean, Boolean, Void>>() {
99-
100-
@Override
101-
public boolean getNodeProperties(HState<I, Boolean, Boolean, Void> node, Map<String, String> properties) {
102-
if (node.getProperty()) {
103-
properties.put(NodeAttrs.SHAPE, NodeShapes.DOUBLECIRCLE);
104-
}
105-
return true;
106-
}
107-
};
108-
}
109-
11092
@Override
11193
public void resume(DTLearnerState<I, Boolean, Boolean, Void> state) {
11294
super.resume(state);

algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/hypothesis/DTLearnerHypothesis.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
import net.automatalib.automata.concepts.StateIDs;
2929
import net.automatalib.graphs.Graph;
3030
import net.automatalib.graphs.concepts.NodeIDs;
31-
import net.automatalib.graphs.dot.DefaultDOTHelper;
32-
import net.automatalib.graphs.dot.GraphDOTHelper;
31+
import net.automatalib.visualization.DefaultVisualizationHelper;
32+
import net.automatalib.visualization.VisualizationHelper;
3333
import net.automatalib.words.Alphabet;
3434
import net.automatalib.words.GrowingAlphabet;
3535
import net.automatalib.words.Word;
@@ -192,8 +192,8 @@ public HState<I, O, SP, TP> getNode(int id) {
192192
}
193193

194194
@Override
195-
public GraphDOTHelper<HState<I, O, SP, TP>, HTransition<I, O, SP, TP>> getGraphDOTHelper() {
196-
return new DefaultDOTHelper<HState<I, O, SP, TP>, HTransition<I, O, SP, TP>>() {
195+
public VisualizationHelper<HState<I, O, SP, TP>, HTransition<I, O, SP, TP>> getVisualizationHelper() {
196+
return new DefaultVisualizationHelper<HState<I, O, SP, TP>, HTransition<I, O, SP, TP>>() {
197197

198198
@Override
199199
protected Collection<HState<I, O, SP, TP>> initialNodes() {
@@ -219,7 +219,7 @@ public boolean getEdgeProperties(HState<I, O, SP, TP> src,
219219
}
220220
properties.put(EdgeAttrs.LABEL, String.valueOf(edge.getSymbol()));
221221
if (edge.isTree()) {
222-
properties.put(EdgeAttrs.STYLE, "bold");
222+
properties.put(EdgeAttrs.STYLE, EdgeStyles.BOLD);
223223
}
224224
return true;
225225
}

algorithms/active/discrimination-tree/src/main/java/de/learnlib/algorithms/discriminationtree/mealy/DTLearnerMealy.java

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616
package de.learnlib.algorithms.discriminationtree.mealy;
1717

18-
import java.util.Map;
19-
2018
import com.github.misberner.buildergen.annotations.GenerateBuilder;
2119
import de.learnlib.algorithms.discriminationtree.AbstractDTLearner;
2220
import de.learnlib.algorithms.discriminationtree.DTLearnerState;
@@ -29,8 +27,6 @@
2927
import de.learnlib.counterexamples.LocalSuffixFinder;
3028
import de.learnlib.datastructure.discriminationtree.MultiDTree;
3129
import net.automatalib.automata.transout.MealyMachine;
32-
import net.automatalib.graphs.dot.EmptyDOTHelper;
33-
import net.automatalib.graphs.dot.GraphDOTHelper;
3430
import net.automatalib.words.Alphabet;
3531
import net.automatalib.words.Word;
3632

@@ -88,31 +84,6 @@ public void answer(Word<O> output) {
8884
};
8985
}
9086

91-
@Override
92-
public GraphDOTHelper<HState<I, Word<O>, Void, O>, HTransition<I, Word<O>, Void, O>> getHypothesisDOTHelper() {
93-
return new EmptyDOTHelper<HState<I, Word<O>, Void, O>, HTransition<I, Word<O>, Void, O>>() {
94-
95-
@Override
96-
public boolean getEdgeProperties(HState<I, Word<O>, Void, O> src,
97-
HTransition<I, Word<O>, Void, O> edge,
98-
HState<I, Word<O>, Void, O> tgt,
99-
Map<String, String> properties) {
100-
if (!super.getEdgeProperties(src, edge, tgt, properties)) {
101-
return false;
102-
}
103-
final StringBuilder labelBuilder = new StringBuilder();
104-
labelBuilder.append(String.valueOf(edge.getSymbol())).append(" / ");
105-
if (edge.getProperty() != null) {
106-
labelBuilder.append(edge.getProperty());
107-
}
108-
properties.put(EdgeAttrs.LABEL, labelBuilder.toString());
109-
110-
return true;
111-
}
112-
113-
};
114-
}
115-
11687
@Override
11788
public void resume(final DTLearnerState<I, Word<O>, Void, O> state) {
11889
super.resume(state);

algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/base/AbstractTTTHypothesis.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
import net.automatalib.automata.GrowableAlphabetAutomaton;
2828
import net.automatalib.automata.fsa.DFA;
2929
import net.automatalib.graphs.Graph;
30-
import net.automatalib.graphs.dot.DefaultDOTHelper;
31-
import net.automatalib.graphs.dot.GraphDOTHelper;
30+
import net.automatalib.visualization.DefaultVisualizationHelper;
31+
import net.automatalib.visualization.VisualizationHelper;
3232
import net.automatalib.words.Alphabet;
3333
import net.automatalib.words.impl.Alphabets;
3434

@@ -235,8 +235,8 @@ public TTTState<I, D> getTarget(TTTEdge<I, D> edge) {
235235
}
236236

237237
@Override
238-
public GraphDOTHelper<TTTState<I, D>, TTTEdge<I, D>> getGraphDOTHelper() {
239-
return new DefaultDOTHelper<TTTState<I, D>, TTTEdge<I, D>>() {
238+
public VisualizationHelper<TTTState<I, D>, TTTEdge<I, D>> getVisualizationHelper() {
239+
return new DefaultVisualizationHelper<TTTState<I, D>, TTTEdge<I, D>>() {
240240

241241
@Override
242242
public boolean getEdgeProperties(TTTState<I, D> src,
@@ -245,9 +245,9 @@ public boolean getEdgeProperties(TTTState<I, D> src,
245245
Map<String, String> properties) {
246246
properties.put(EdgeAttrs.LABEL, String.valueOf(edge.transition.getInput()));
247247
if (edge.transition.isTree()) {
248-
properties.put(EdgeAttrs.STYLE, "bold");
248+
properties.put(EdgeAttrs.STYLE, EdgeStyles.BOLD);
249249
} else if (edge.transition.getDTTarget().isInner()) {
250-
properties.put(EdgeAttrs.STYLE, "dotted");
250+
properties.put(EdgeAttrs.STYLE, EdgeStyles.DOTTED);
251251
}
252252
return true;
253253
}

algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/base/AbstractTTTLearner.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import com.google.common.collect.Iterators;
3434
import de.learnlib.acex.AcexAnalyzer;
3535
import de.learnlib.acex.analyzers.AcexAnalyzers;
36-
import de.learnlib.algorithms.ttt.base.AbstractTTTHypothesis.TTTEdge;
3736
import de.learnlib.api.AccessSequenceProvider;
3837
import de.learnlib.api.algorithm.LearningAlgorithm;
3938
import de.learnlib.api.algorithm.feature.ResumableLearner;
@@ -45,8 +44,6 @@
4544
import net.automatalib.automata.fsa.DFA;
4645
import net.automatalib.commons.smartcollections.ElementReference;
4746
import net.automatalib.commons.smartcollections.UnorderedCollection;
48-
import net.automatalib.graphs.dot.EmptyDOTHelper;
49-
import net.automatalib.graphs.dot.GraphDOTHelper;
5047
import net.automatalib.words.Alphabet;
5148
import net.automatalib.words.Word;
5249
import net.automatalib.words.impl.Alphabets;
@@ -767,10 +764,6 @@ private void createNewState(AbstractBaseDTNode<I, D> newNode) {
767764
return hypothesis;
768765
}
769766

770-
public GraphDOTHelper<TTTState<I, D>, TTTEdge<I, D>> getHypothesisDOTHelper() {
771-
return new EmptyDOTHelper<>();
772-
}
773-
774767
protected void closeTransitions() {
775768
TTTTransition<I, D> next;
776769
UnorderedCollection<AbstractBaseDTNode<I, D>> newStateNodes = new UnorderedCollection<>();

algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/base/BaseTTTDiscriminationTree.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
package de.learnlib.algorithms.ttt.base;
1717

1818
import java.util.Map;
19+
import java.util.Map.Entry;
1920
import java.util.function.Supplier;
2021

2122
import de.learnlib.api.AccessSequenceProvider;
2223
import de.learnlib.api.oracle.MembershipOracle;
2324
import de.learnlib.datastructure.discriminationtree.model.AbstractDiscriminationTree;
24-
import net.automatalib.graphs.dot.DefaultDOTHelper;
25-
import net.automatalib.graphs.dot.GraphDOTHelper;
25+
import net.automatalib.visualization.VisualizationHelper;
2626
import net.automatalib.words.Word;
2727

2828
/**
@@ -95,8 +95,8 @@ public AbstractBaseDTNode<I, D> sift(AbstractBaseDTNode<I, D> start, Word<I> pre
9595
}
9696

9797
@Override
98-
public GraphDOTHelper<AbstractBaseDTNode<I, D>, Map.Entry<D, AbstractBaseDTNode<I, D>>> getGraphDOTHelper() {
99-
return new DefaultDOTHelper<AbstractBaseDTNode<I, D>, Map.Entry<D, AbstractBaseDTNode<I, D>>>() {
98+
public VisualizationHelper<AbstractBaseDTNode<I, D>, Entry<D, AbstractBaseDTNode<I, D>>> getVisualizationHelper() {
99+
return new VisualizationHelper<AbstractBaseDTNode<I, D>, Entry<D, AbstractBaseDTNode<I, D>>>() {
100100

101101
@Override
102102
public boolean getNodeProperties(AbstractBaseDTNode<I, D> node, Map<String, String> properties) {

algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/dfa/TTTLearnerDFA.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,11 @@
1515
*/
1616
package de.learnlib.algorithms.ttt.dfa;
1717

18-
import java.util.Map;
1918
import java.util.function.Supplier;
2019

2120
import com.github.misberner.buildergen.annotations.GenerateBuilder;
2221
import de.learnlib.acex.AcexAnalyzer;
2322
import de.learnlib.algorithms.ttt.base.AbstractBaseDTNode;
24-
import de.learnlib.algorithms.ttt.base.AbstractTTTHypothesis.TTTEdge;
2523
import de.learnlib.algorithms.ttt.base.AbstractTTTLearner;
2624
import de.learnlib.algorithms.ttt.base.BaseTTTDiscriminationTree;
2725
import de.learnlib.algorithms.ttt.base.OutputInconsistency;
@@ -31,8 +29,6 @@
3129
import de.learnlib.api.oracle.MembershipOracle;
3230
import de.learnlib.counterexamples.acex.OutInconsPrefixTransformAcex;
3331
import net.automatalib.automata.fsa.DFA;
34-
import net.automatalib.graphs.dot.EmptyDOTHelper;
35-
import net.automatalib.graphs.dot.GraphDOTHelper;
3632
import net.automatalib.words.Alphabet;
3733
import net.automatalib.words.Word;
3834

@@ -100,24 +96,6 @@ public TTTHypothesisDFA<I> getHypothesisDS() {
10096
return (TTTHypothesisDFA<I>) hypothesis;
10197
}
10298

103-
@Override
104-
public GraphDOTHelper<TTTState<I, Boolean>, TTTEdge<I, Boolean>> getHypothesisDOTHelper() {
105-
return new EmptyDOTHelper<TTTState<I, Boolean>, TTTEdge<I, Boolean>>() {
106-
107-
@Override
108-
public boolean getNodeProperties(TTTState<I, Boolean> node, Map<String, String> properties) {
109-
if (!(node instanceof TTTStateDFA)) {
110-
throw new IllegalArgumentException("node is not an expected DFA node, but " + node);
111-
}
112-
TTTStateDFA<I> dfaState = (TTTStateDFA<I>) node;
113-
if (dfaState.isAccepting()) {
114-
properties.put(NodeAttrs.SHAPE, NodeShapes.DOUBLECIRCLE);
115-
}
116-
return true;
117-
}
118-
};
119-
}
120-
12199
@Override
122100
protected AbstractBaseDTNode<I, Boolean> createNewNode(AbstractBaseDTNode<I, Boolean> parent,
123101
Boolean parentOutput) {

algorithms/active/ttt/src/main/java/de/learnlib/algorithms/ttt/mealy/TTTLearnerMealy.java

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,9 @@
1515
*/
1616
package de.learnlib.algorithms.ttt.mealy;
1717

18-
import java.util.Map;
19-
2018
import com.github.misberner.buildergen.annotations.GenerateBuilder;
2119
import de.learnlib.acex.AcexAnalyzer;
2220
import de.learnlib.algorithms.ttt.base.AbstractBaseDTNode;
23-
import de.learnlib.algorithms.ttt.base.AbstractTTTHypothesis.TTTEdge;
2421
import de.learnlib.algorithms.ttt.base.AbstractTTTLearner;
2522
import de.learnlib.algorithms.ttt.base.BaseTTTDiscriminationTree;
2623
import de.learnlib.algorithms.ttt.base.OutputInconsistency;
@@ -33,8 +30,6 @@
3330
import de.learnlib.counterexamples.acex.OutInconsPrefixTransformAcex;
3431
import de.learnlib.util.mealy.MealyUtil;
3532
import net.automatalib.automata.transout.MealyMachine;
36-
import net.automatalib.graphs.dot.EmptyDOTHelper;
37-
import net.automatalib.graphs.dot.GraphDOTHelper;
3833
import net.automatalib.words.Alphabet;
3934
import net.automatalib.words.Word;
4035
import net.automatalib.words.WordBuilder;
@@ -141,30 +136,6 @@ protected Word<O> computeHypothesisOutput(TTTState<I, Word<O>> state, Word<I> su
141136
return wb.toWord();
142137
}
143138

144-
@Override
145-
public GraphDOTHelper<TTTState<I, Word<O>>, TTTEdge<I, Word<O>>> getHypothesisDOTHelper() {
146-
return new EmptyDOTHelper<TTTState<I, Word<O>>, TTTEdge<I, Word<O>>>() {
147-
148-
@Override
149-
public boolean getEdgeProperties(TTTState<I, Word<O>> src,
150-
TTTEdge<I, Word<O>> edge,
151-
TTTState<I, Word<O>> tgt,
152-
Map<String, String> properties) {
153-
if (!super.getEdgeProperties(src, edge, tgt, properties)) {
154-
return false;
155-
}
156-
final StringBuilder labelBuilder = new StringBuilder();
157-
labelBuilder.append(String.valueOf(edge.transition.getInput())).append(" / ");
158-
TTTTransitionMealy<I, O> trans = (TTTTransitionMealy<I, O>) edge.transition;
159-
if (trans.output != null) {
160-
labelBuilder.append(trans.output);
161-
}
162-
properties.put(EdgeAttrs.LABEL, labelBuilder.toString());
163-
return true;
164-
}
165-
};
166-
}
167-
168139
@Override
169140
protected AbstractBaseDTNode<I, Word<O>> createNewNode(AbstractBaseDTNode<I, Word<O>> parent,
170141
Word<O> parentOutput) {

0 commit comments

Comments
 (0)