From 8ba7caed26c8284979c66f44155bf4b0a864be05 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Fri, 4 Nov 2011 10:18:52 +0000 Subject: [PATCH] Added export results to matrix functionality (-exportresultsmatrix from CL, experiment popup menu from GUI). git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@4136 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/prism/PrismCL.java | 19 ++++++++- .../properties/GUIMultiProperties.java | 41 +++++++++++++------ .../computation/ExportResultsThread.java | 20 ++++++++- 3 files changed, 65 insertions(+), 15 deletions(-) diff --git a/prism/src/prism/PrismCL.java b/prism/src/prism/PrismCL.java index 31207ca4..ea50b499 100644 --- a/prism/src/prism/PrismCL.java +++ b/prism/src/prism/PrismCL.java @@ -61,6 +61,7 @@ public class PrismCL private boolean exporttransdotstates = false; private boolean exportbsccs = false; private boolean exportresults = false; + private boolean exportresultsmatrix = false; private boolean exportprism = false; private boolean exportprismconst = false; private boolean exportPlainDeprecated = false; @@ -492,6 +493,8 @@ public class PrismCL if (exportresults) { mainLog.print("\nExporting results "); + if (exportresultsmatrix) + mainLog.print("in matrix form "); if (!exportResultsFilename.equals("stdout")) mainLog.println("to file \"" + exportResultsFilename + "\"..."); else @@ -503,7 +506,11 @@ public class PrismCL for (i = 0; i < numPropertiesToCheck; i++) { if (i > 0) tmpLog.println(); - tmpLog.print(propertiesToCheck.get(i) + ":\n" + results[i].toString(false, " ", " ")); + if (exportresultsmatrix) { + tmpLog.print(results[i].toStringMatrix("\t")); + } else { + tmpLog.print(propertiesToCheck.get(i) + ":\n" + results[i].toString(false, " ", " ")); + } } tmpLog.close(); } @@ -1242,6 +1249,16 @@ public class PrismCL errorAndExit("No file specified for -" + sw + " switch"); } } + // export results, in matrix form + else if (sw.equals("exportresultsmatrix")) { + if (i < args.length - 1) { + exportresults = true; + exportresultsmatrix = true; + exportResultsFilename = args[++i]; + } else { + errorAndExit("No file specified for -" + sw + " switch"); + } + } // export transition matrix to file else if (sw.equals("exporttrans")) { if (i < args.length - 1) { diff --git a/prism/src/userinterface/properties/GUIMultiProperties.java b/prism/src/userinterface/properties/GUIMultiProperties.java index 29999e12..755f3838 100644 --- a/prism/src/userinterface/properties/GUIMultiProperties.java +++ b/prism/src/userinterface/properties/GUIMultiProperties.java @@ -92,7 +92,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List private JLabel fileLabel; private Vector clipboardVector; private Action newProps, openProps, saveProps, savePropsAs, insertProps, verifySelected, newProperty, editProperty, newConstant, removeConstant, newLabel, - removeLabel, newExperiment, deleteExperiment, stopExperiment, viewResults, plotResults, exportResults, simulate, details; + removeLabel, newExperiment, deleteExperiment, stopExperiment, viewResults, plotResults, exportResultsText, exportResultsMatrix,simulate, details; // Current properties private GUIPropertiesList propList; @@ -603,7 +603,8 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List plotResults.setEnabled(false); } // exportResults: enabled if at least one experiment is selected - exportResults.setEnabled(experiments.getSelectedRowCount() > 0); + exportResultsText.setEnabled(experiments.getSelectedRowCount() > 0); + exportResultsMatrix.setEnabled(experiments.getSelectedRowCount() > 0); } public int doModificationCheck() @@ -998,7 +999,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List } - public void a_exportResults() + public void a_exportResults(boolean exportMatrix) { GUIExperiment exps[]; int i, n, inds[]; @@ -1014,7 +1015,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List // get filename to save if (showSaveFileDialog(textFilter, textFilter[0]) == JFileChooser.APPROVE_OPTION) { File file = getChooserFile(); - Thread t = new ExportResultsThread(this, exps, file); + Thread t = new ExportResultsThread(this, exps, file, exportMatrix); t.setPriority(Thread.NORM_PRIORITY); t.start(); } @@ -1601,8 +1602,12 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List experimentPopup.add(new JSeparator()); experimentPopup.add(viewResults); experimentPopup.add(plotResults); - experimentPopup.add(exportResults); - + JMenu exportResultsMenu = new JMenu("Export results"); + exportResultsMenu.setMnemonic('E'); + exportResultsMenu.setIcon(GUIPrism.getIconFromImage("smallExport.png")); + exportResultsMenu.add(exportResultsText); + exportResultsMenu.add(exportResultsMatrix); + experimentPopup.add(exportResultsMenu); } private void setupActions() @@ -1841,17 +1846,29 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List plotResults.putValue(Action.NAME, "Plot results"); plotResults.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileGraph.png")); - exportResults = new AbstractAction() + exportResultsText = new AbstractAction() + { + public void actionPerformed(ActionEvent e) + { + a_exportResults(false); + } + }; + exportResultsText.putValue(Action.LONG_DESCRIPTION, "Export the results of this experiment to a text file"); + exportResultsText.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_T)); + exportResultsText.putValue(Action.NAME, "Text"); + exportResultsText.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileText.png")); + + exportResultsMatrix = new AbstractAction() { public void actionPerformed(ActionEvent e) { - a_exportResults(); + a_exportResults(true); } }; - exportResults.putValue(Action.LONG_DESCRIPTION, "Export the results of this experiment to a file"); - exportResults.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_E)); - exportResults.putValue(Action.NAME, "Export results"); - exportResults.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallExport.png")); + exportResultsMatrix.putValue(Action.LONG_DESCRIPTION, "Export the results of this experiment to a file in matrix form"); + exportResultsMatrix.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_M)); + exportResultsMatrix.putValue(Action.NAME, "Matrix"); + exportResultsMatrix.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileText.png")); stopExperiment = new AbstractAction() { diff --git a/prism/src/userinterface/properties/computation/ExportResultsThread.java b/prism/src/userinterface/properties/computation/ExportResultsThread.java index dfc1a447..68607a05 100644 --- a/prism/src/userinterface/properties/computation/ExportResultsThread.java +++ b/prism/src/userinterface/properties/computation/ExportResultsThread.java @@ -38,6 +38,7 @@ public class ExportResultsThread extends Thread private GUIExperiment exps[]; private File f; private Exception saveError; + private boolean exportMatrix; // export in matrix form? /** Creates a new instance of ExportResultsThread */ public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exp, File f) @@ -46,6 +47,7 @@ public class ExportResultsThread extends Thread this.exps = new GUIExperiment[1]; this.exps[0] = exp; this.f = f; + this.exportMatrix = false; } /** Creates a new instance of ExportResultsThread */ @@ -54,6 +56,16 @@ public class ExportResultsThread extends Thread this.parent = parent; this.exps = exps; this.f = f; + this.exportMatrix = false; + } + + /** Creates a new instance of ExportResultsThread */ + public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exps[], File f, boolean exportMatrix) + { + this.parent = parent; + this.exps = exps; + this.f = f; + this.exportMatrix = exportMatrix; } public void run() @@ -74,8 +86,12 @@ public class ExportResultsThread extends Thread n = exps.length; for (i = 0; i < n; i++) { if (i > 0) out.print("\n"); - out.print(exps[i].getPropertyString() + ":\n"); - out.print(exps[i].getResults().toString(false, " ", " ")); + if (!exportMatrix) { + out.print(exps[i].getPropertyString() + ":\n"); + out.print(exps[i].getResults().toString(false, " ", " ")); + } else { + out.print(exps[i].getResults().toStringMatrix("\t")); + } } out.flush(); out.close();