diff --git a/prism/src/prism/Prism.java b/prism/src/prism/Prism.java index 081662dc..f4ffa203 100644 --- a/prism/src/prism/Prism.java +++ b/prism/src/prism/Prism.java @@ -233,18 +233,34 @@ public class Prism implements PrismSettingsListener } /** - * Read in PRISM settings from a file (.prism in user's home directory). + * Read in PRISM settings from the default file (.prism in user's home directory). * If no file exists, attempt to create a new one with default settings. */ public void loadUserSettingsFile() + { + loadUserSettingsFile(null); + } + + /** + * Read in PRISM settings from a specified file. + * If the file is null, use the default (.prism in user's home directory). + * If no file exists, attempt to create a new one with default settings. + */ + public void loadUserSettingsFile(File settingsFile) { // load user's default settings try { - settings.loadSettingsFile(); + if (settingsFile == null) + settings.loadSettingsFile(); + else + settings.loadSettingsFile(settingsFile); } catch (PrismException e) { // if there were no user defaults to load, create them try { - settings.saveSettingsFile(); + if (settingsFile == null) + settings.saveSettingsFile(); + else + settings.saveSettingsFile(settingsFile); } catch (PrismException ex) { mainLog.printWarning("Failed to create new PRISM settings file."); } diff --git a/prism/src/prism/PrismCL.java b/prism/src/prism/PrismCL.java index 3d27c9a0..82792080 100644 --- a/prism/src/prism/PrismCL.java +++ b/prism/src/prism/PrismCL.java @@ -91,6 +91,7 @@ public class PrismCL implements PrismModelListener // files/filenames private String mainLogFilename = "stdout"; private String techLogFilename = "stdout"; + private String settingsFilename = null; private String modelFilename = null; private String importStatesFilename = null; private String importLabelsFilename = null; @@ -426,6 +427,10 @@ public class PrismCL implements PrismModelListener // parse command line arguments parseArguments(args); + + // load setting file if requested + if (settingsFilename != null) + prism.loadUserSettingsFile(new File(settingsFilename)); // initialise prism.initialise(); @@ -839,6 +844,14 @@ public class PrismCL implements PrismModelListener printVersion(); exit(); } + // load settings + else if (sw.equals("settings")) { + if (i < args.length - 1) { + settingsFilename = args[++i].trim(); + } else { + errorAndExit("Incomplete -" + sw + " switch"); + } + } // print a list of all keywords (hidden option) else if (sw.equals("keywords")) { printListOfKeywords(); @@ -1633,6 +1646,7 @@ public class PrismCL implements PrismModelListener mainLog.println(); mainLog.println("-help .......................... Display this help message"); mainLog.println("-version ....................... Display tool version"); + mainLog.println("-settings ................ Load settings from "); mainLog.println(); mainLog.println("-pf (or -pctl or -csl) . Model check properties "); mainLog.println("-property (or -prop ) ... Only model check property "); diff --git a/prism/src/prism/PrismSettings.java b/prism/src/prism/PrismSettings.java index 0fdf9b89..e534d22d 100644 --- a/prism/src/prism/PrismSettings.java +++ b/prism/src/prism/PrismSettings.java @@ -500,8 +500,11 @@ public class PrismSettings implements Observer public synchronized void saveSettingsFile() throws PrismException { - File file = getLocationForSettingsFile(); - + saveSettingsFile(getLocationForSettingsFile()); + } + + public synchronized void saveSettingsFile(File file) throws PrismException + { try { FileWriter out = new FileWriter(file); @@ -545,8 +548,11 @@ public class PrismSettings implements Observer public synchronized void loadSettingsFile() throws PrismException { - File file = getLocationForSettingsFile(); - + loadSettingsFile(getLocationForSettingsFile()); + } + + public synchronized void loadSettingsFile(File file) throws PrismException + { BufferedReader reader; String line = null; String key = "";