Browse Source

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
master
Dave Parker 14 years ago
parent
commit
8ba7caed26
  1. 17
      prism/src/prism/PrismCL.java
  2. 41
      prism/src/userinterface/properties/GUIMultiProperties.java
  3. 16
      prism/src/userinterface/properties/computation/ExportResultsThread.java

17
prism/src/prism/PrismCL.java

@ -61,6 +61,7 @@ public class PrismCL
private boolean exporttransdotstates = false; private boolean exporttransdotstates = false;
private boolean exportbsccs = false; private boolean exportbsccs = false;
private boolean exportresults = false; private boolean exportresults = false;
private boolean exportresultsmatrix = false;
private boolean exportprism = false; private boolean exportprism = false;
private boolean exportprismconst = false; private boolean exportprismconst = false;
private boolean exportPlainDeprecated = false; private boolean exportPlainDeprecated = false;
@ -492,6 +493,8 @@ public class PrismCL
if (exportresults) { if (exportresults) {
mainLog.print("\nExporting results "); mainLog.print("\nExporting results ");
if (exportresultsmatrix)
mainLog.print("in matrix form ");
if (!exportResultsFilename.equals("stdout")) if (!exportResultsFilename.equals("stdout"))
mainLog.println("to file \"" + exportResultsFilename + "\"..."); mainLog.println("to file \"" + exportResultsFilename + "\"...");
else else
@ -503,8 +506,12 @@ public class PrismCL
for (i = 0; i < numPropertiesToCheck; i++) { for (i = 0; i < numPropertiesToCheck; i++) {
if (i > 0) if (i > 0)
tmpLog.println(); tmpLog.println();
if (exportresultsmatrix) {
tmpLog.print(results[i].toStringMatrix("\t"));
} else {
tmpLog.print(propertiesToCheck.get(i) + ":\n" + results[i].toString(false, " ", " ")); tmpLog.print(propertiesToCheck.get(i) + ":\n" + results[i].toString(false, " ", " "));
} }
}
tmpLog.close(); tmpLog.close();
} }
@ -1242,6 +1249,16 @@ public class PrismCL
errorAndExit("No file specified for -" + sw + " switch"); 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 // export transition matrix to file
else if (sw.equals("exporttrans")) { else if (sw.equals("exporttrans")) {
if (i < args.length - 1) { if (i < args.length - 1) {

41
prism/src/userinterface/properties/GUIMultiProperties.java

@ -92,7 +92,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
private JLabel fileLabel; private JLabel fileLabel;
private Vector clipboardVector; private Vector clipboardVector;
private Action newProps, openProps, saveProps, savePropsAs, insertProps, verifySelected, newProperty, editProperty, newConstant, removeConstant, newLabel, 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 // Current properties
private GUIPropertiesList propList; private GUIPropertiesList propList;
@ -603,7 +603,8 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
plotResults.setEnabled(false); plotResults.setEnabled(false);
} }
// exportResults: enabled if at least one experiment is selected // 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() 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[]; GUIExperiment exps[];
int i, n, inds[]; int i, n, inds[];
@ -1014,7 +1015,7 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
// get filename to save // get filename to save
if (showSaveFileDialog(textFilter, textFilter[0]) == JFileChooser.APPROVE_OPTION) { if (showSaveFileDialog(textFilter, textFilter[0]) == JFileChooser.APPROVE_OPTION) {
File file = getChooserFile(); File file = getChooserFile();
Thread t = new ExportResultsThread(this, exps, file);
Thread t = new ExportResultsThread(this, exps, file, exportMatrix);
t.setPriority(Thread.NORM_PRIORITY); t.setPriority(Thread.NORM_PRIORITY);
t.start(); t.start();
} }
@ -1601,8 +1602,12 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
experimentPopup.add(new JSeparator()); experimentPopup.add(new JSeparator());
experimentPopup.add(viewResults); experimentPopup.add(viewResults);
experimentPopup.add(plotResults); 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() private void setupActions()
@ -1841,17 +1846,29 @@ public class GUIMultiProperties extends GUIPlugin implements MouseListener, List
plotResults.putValue(Action.NAME, "Plot results"); plotResults.putValue(Action.NAME, "Plot results");
plotResults.putValue(Action.SMALL_ICON, GUIPrism.getIconFromImage("smallFileGraph.png")); 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) 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() stopExperiment = new AbstractAction()
{ {

16
prism/src/userinterface/properties/computation/ExportResultsThread.java

@ -38,6 +38,7 @@ public class ExportResultsThread extends Thread
private GUIExperiment exps[]; private GUIExperiment exps[];
private File f; private File f;
private Exception saveError; private Exception saveError;
private boolean exportMatrix; // export in matrix form?
/** Creates a new instance of ExportResultsThread */ /** Creates a new instance of ExportResultsThread */
public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exp, File f) public ExportResultsThread(GUIMultiProperties parent, GUIExperiment exp, File f)
@ -46,6 +47,7 @@ public class ExportResultsThread extends Thread
this.exps = new GUIExperiment[1]; this.exps = new GUIExperiment[1];
this.exps[0] = exp; this.exps[0] = exp;
this.f = f; this.f = f;
this.exportMatrix = false;
} }
/** Creates a new instance of ExportResultsThread */ /** Creates a new instance of ExportResultsThread */
@ -54,6 +56,16 @@ public class ExportResultsThread extends Thread
this.parent = parent; this.parent = parent;
this.exps = exps; this.exps = exps;
this.f = f; 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() public void run()
@ -74,8 +86,12 @@ public class ExportResultsThread extends Thread
n = exps.length; n = exps.length;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
if (i > 0) out.print("\n"); if (i > 0) out.print("\n");
if (!exportMatrix) {
out.print(exps[i].getPropertyString() + ":\n"); out.print(exps[i].getPropertyString() + ":\n");
out.print(exps[i].getResults().toString(false, " ", " ")); out.print(exps[i].getResults().toString(false, " ", " "));
} else {
out.print(exps[i].getResults().toStringMatrix("\t"));
}
} }
out.flush(); out.flush();
out.close(); out.close();

Loading…
Cancel
Save