5
5
import javax.swing.SwingWorker;
7
7
import dk.aau.cs.Messenger;
8
import dk.aau.cs.petrinet.TAPNQuery;
9
import dk.aau.cs.petrinet.TimedArcPetriNet;
8
import dk.aau.cs.TCTL.visitors.RenameAllPlacesVisitor;
9
import dk.aau.cs.model.tapn.TAPNQuery;
10
import dk.aau.cs.model.tapn.TimedArcPetriNet;
11
import dk.aau.cs.model.tapn.TimedArcPetriNetNetwork;
12
import dk.aau.cs.model.tapn.simulation.TAPNNetworkTrace;
13
import dk.aau.cs.model.tapn.simulation.TimedArcPetriNetTrace;
14
import dk.aau.cs.util.Tuple;
10
15
import dk.aau.cs.verification.ModelChecker;
16
import dk.aau.cs.verification.NameMapping;
17
import dk.aau.cs.verification.TAPNComposer;
18
import dk.aau.cs.verification.TAPNTraceDecomposer;
11
19
import dk.aau.cs.verification.VerificationOptions;
12
20
import dk.aau.cs.verification.VerificationResult;
14
public abstract class RunVerificationBase extends
15
SwingWorker<VerificationResult, Void> {
22
public abstract class RunVerificationBase extends SwingWorker<VerificationResult<TAPNNetworkTrace>, Void> {
17
24
private ModelChecker modelChecker;
18
protected VerificationOptions options;
19
private TimedArcPetriNet model;
20
protected TAPNQuery query;
26
private VerificationOptions options;
27
private TimedArcPetriNetNetwork model;
28
private TAPNQuery query;
21
30
protected Messenger messenger;
23
32
public RunVerificationBase(ModelChecker modelChecker, Messenger messenger) {
25
34
this.modelChecker = modelChecker;
26
35
this.messenger = messenger;
29
public void execute(VerificationOptions options, TimedArcPetriNet model, TAPNQuery query){
38
public void execute(VerificationOptions options, TimedArcPetriNetNetwork model, TAPNQuery query) {
30
39
this.model = model;
31
40
this.options = options;
32
41
this.query = query;
37
protected VerificationResult doInBackground() throws Exception {
38
VerificationResult result = modelChecker.verify(options, model, query);
43
protected void done() {
45
VerificationResult result = null;
46
protected VerificationResult<TAPNNetworkTrace> doInBackground() throws Exception {
47
TAPNComposer composer = new TAPNComposer();
48
Tuple<TimedArcPetriNet, NameMapping> transformedModel = composer.transformModel(model);
50
TAPNQuery clonedQuery = new TAPNQuery(query.getProperty().copy(), query.getExtraTokens());
51
MapQueryToNewNames(clonedQuery, transformedModel.value2());
53
VerificationResult<TimedArcPetriNetTrace> result = modelChecker.verify(options, transformedModel, clonedQuery);
55
return new VerificationResult<TAPNNetworkTrace>(result.errorMessage());
57
return new VerificationResult<TAPNNetworkTrace>(
58
result.getQueryResult(),
59
decomposeTrace(result.getTrace(), transformedModel.value2()),
60
result.verificationTime());
64
private TAPNNetworkTrace decomposeTrace(TimedArcPetriNetTrace trace, NameMapping mapping) {
68
TAPNTraceDecomposer decomposer = new TAPNTraceDecomposer(trace, model, mapping);
69
return decomposer.decompose();
72
private void MapQueryToNewNames(TAPNQuery query, NameMapping mapping) {
73
RenameAllPlacesVisitor visitor = new RenameAllPlacesVisitor(mapping);
74
query.getProperty().accept(visitor, null);
78
protected void done() {
80
VerificationResult<TAPNNetworkTrace> result = null;
48
84
} catch (InterruptedException e) {
50
86
} catch (ExecutionException e) {
51
87
e.printStackTrace();
54
90
showResult(result, result.verificationTime());
57
messenger.displayInfoMessage("Verification was interupted by the user. No result found!",
58
"Verification Cancelled");
94
messenger.displayInfoMessage("Verification was interupted by the user. No result found!", "Verification Cancelled");
62
protected abstract void showResult(VerificationResult result, long verificationTime);
99
protected abstract void showResult(VerificationResult<TAPNNetworkTrace> result, long verificationTime);
b'\\ No newline at end of file'