4
import java.io.FileInputStream;
4
5
import java.net.MalformedURLException;
6
7
import java.net.URISyntaxException;
10
import java.util.stream.Collectors;
11
import java.util.stream.StreamSupport;
13
import dk.aau.cs.gui.TabContent;
14
import dk.aau.cs.gui.components.BatchProcessingResultsTableModel;
15
import dk.aau.cs.io.batchProcessing.BatchProcessingResultsExporter;
16
import dk.aau.cs.model.tapn.TimedArcPetriNetNetwork;
17
import dk.aau.cs.model.tapn.simulation.TAPNNetworkTrace;
18
import dk.aau.cs.translations.ReductionOption;
19
import dk.aau.cs.util.MemoryMonitor;
20
import dk.aau.cs.util.VerificationCallback;
21
import dk.aau.cs.verification.*;
22
import dk.aau.cs.verification.batchProcessing.BatchProcessingVerificationResult;
9
23
import org.apache.commons.cli.CommandLine;
10
24
import org.apache.commons.cli.CommandLineParser;
11
25
import org.apache.commons.cli.Options;
12
26
import org.apache.commons.cli.ParseException;
13
27
import org.apache.commons.cli.PosixParser;
29
import pipe.dataLayer.TAPNQuery;
15
30
import pipe.gui.CreateGui;
16
31
import dk.aau.cs.debug.Logger;
32
import pipe.gui.GuiFrame;
33
import pipe.gui.Verifier;
36
* Main class for lunching TAPAAL
38
* @author Kenneth Yrke Joergensen (kenneth@yrke.dk)
18
40
public class TAPAAL {
21
* Main class for lunching TAPAAL
23
* @author Kenneth Yrke Joergensen (kenneth@yrke.dk)
26
42
public static final String TOOLNAME = "TAPAAL";
27
43
public static final String VERSION = "DEV";
62
75
Logger.log("Debug logging is enabled by default in DEV branch");
78
if (commandline.hasOption("batch")) {
80
String[] files = commandline.getArgs();
81
//String [] files = new String[] {"C:\\kyrke\\tapaal\\3.6\\src\\resources\\Example nets"};
83
//String [] files = new String[] {"C:\\kyrke\\tapaal\\testmodels-tapaal"};
84
//String [] files = new String[] {"C:\\tmp\\subset2"};
85
File batchFolder = new File(files[0]);
87
batchProcessing(batchFolder);
93
// Create the TAPAAL GUI
66
97
String[] files = commandline.getArgs();
98
Logger.log("Opening #files: " + files.length);
67
99
for (String f : files) {
68
100
File file = new File(f);
70
102
if (file.exists()) { // Open the file
71
103
if (file.canRead()) {
73
CreateGui.getAppGui().createNewTabFromFile(file);
105
CreateGui.getAppGuiController().openTab(TabContent.createNewTabFromFile(file));
74
106
} catch (Exception e) {
75
107
// TODO Auto-generated catch block
76
108
e.printStackTrace();
124
private static void batchProcessing(File batchFolder) throws Exception {
125
//Sadly needs to create the gui
127
CreateGui.getApp().setVisible(false);
129
System.out.println("=============================================================");
130
System.out.println("Batch Porcessing");
131
System.out.println("=============================================================");
133
System.out.println("Running in batch mode for " + batchFolder.getAbsolutePath());
135
BatchProcessingResultsTableModel results = new BatchProcessingResultsTableModel();
137
for (File f : batchFolder.listFiles()) {
138
if (f.getName().toLowerCase().endsWith(".tapn") || f.getName().toLowerCase().endsWith(".xml")) {
139
System.out.println("Processing File: " + f);
141
TabContent tab = TabContent.createNewTabFromInputStream(new FileInputStream(f), f.getName());
142
TimedArcPetriNetNetwork network = tab.network();
143
List<TAPNQuery> queries = StreamSupport
144
.stream(tab.queries().spliterator(), false)
145
.collect(Collectors.toList());
147
for (TAPNQuery query : queries) {
149
System.out.println(" | Running query: " + query.getName());
151
if(query.getReductionOption() == ReductionOption.VerifyTAPN || query.getReductionOption() == ReductionOption.VerifyTAPNdiscreteVerification || query.getReductionOption() == ReductionOption.VerifyPN) {
152
Verifier.runVerifyTAPNVerification(network, query, new VerificationCallback() {
154
public void run(VerificationResult<TAPNNetworkTrace> result) {
156
String resultString = result.getQueryResult().isQuerySatisfied() ? "Satisfied" : "Not Satisfied";
157
System.out.println(" | Result: " + resultString);
159
results.addResult(new BatchProcessingVerificationResult(
160
f.toString(), query,resultString ,result.verificationTime(), MemoryMonitor.getPeakMemory(),result.stats()
166
System.out.println(" | Skipped");
167
//Verifier.runUppaalVerification(network, query);
175
System.out.println("===========================================");
176
System.out.println("===========================================");
178
BatchProcessingResultsExporter exporter = new BatchProcessingResultsExporter();
179
exporter.exportToCSV(results.getResults(), System.out);
180
System.out.println("Done" + results.getRowCount());
92
183
public static File getInstallDir() {
94
185
String str = ClassLoader.getSystemResource("TAPAAL.class").getPath();