summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'instr-to-kodkod/src/Parameters.java')
-rw-r--r--instr-to-kodkod/src/Parameters.java114
1 files changed, 94 insertions, 20 deletions
diff --git a/instr-to-kodkod/src/Parameters.java b/instr-to-kodkod/src/Parameters.java
index 1face97..749f0fe 100644
--- a/instr-to-kodkod/src/Parameters.java
+++ b/instr-to-kodkod/src/Parameters.java
@@ -1,8 +1,13 @@
+import java.util.List;
+import java.util.ArrayList;
+
public class Parameters
{
- private final String levels_dir;
- private final String model_file;
+ private final List<String> level_files;
+ private final List<String> model_files;
+ private final String property_file;
private final String var_prefix;
+
private final boolean are_valid;
public static void print_usage ()
@@ -11,45 +16,114 @@ public class Parameters
(
"Instr-to-kodkod\n"
+ "USAGE:\n"
- + "\tjava Main <LEVELS_DIR> <INSTRUCTIONS> <VAR_PREFIX>\n"
+ + "\tjava Main <VAR_PREFIX> <FILES>+\n"
+ "PARAMETERS:\n"
- + "\t<LEVELS_DIR>\tDirectory containing the level definitions.\n"
- + "\t<INSTRUCTIONS>\tInstruction file describing the model.\n"
- + "\t<VAR_PREFIX>\tPrefix for anonymous variables (e.g. \"_anon_\").\n"
+ + "\t- <VAR_PREFIX>\tPrefix for anonymous variables (e.g. \"_anon_\").\n"
+ + "\t- <FILES>\tList of files to be loaded.\n"
+ "NOTES:\n"
- + "\tThe properties to be verified still have to be hand coded in the"
- + " source files (in Main.java)."
+ + "\t- One, single, property file MUST be in <FILES>.\n"
+ + "\t- Property files have a \".pro\" extension.\n"
+ + "\t- Model files have a \".mod\" extension.\n"
+ + "\t- Level files have a \".lvl\" extension.\n"
+ + "\t- The files may be given in any order."
);
}
public Parameters (String... args)
{
- if (args.length != 3)
+ boolean has_pro_file, has_error;
+ String prop_file;
+
+ level_files = new ArrayList<String>();
+ model_files = new ArrayList<String>();
+
+ if (args.length < 2)
{
print_usage();
- levels_dir = new String();
- model_file = new String();
+ property_file = new String();
var_prefix = new String();
+
are_valid = false;
+
+ return;
+ }
+
+ has_pro_file = false;
+ has_error = false;
+
+ var_prefix = args[1];
+ prop_file = new String();
+
+ for (int i = 2; i < args.length; ++i)
+ {
+ if (args[i].endsWith(".lvl"))
+ {
+ level_files.add(args[i]);
+ }
+ else if (args[i].endsWith(".mod"))
+ {
+ model_files.add(args[i]);
+ }
+ else if (args[i].endsWith(".lvl"))
+ {
+ if (has_pro_file)
+ {
+ System.err.println
+ (
+ "[E] Both files \""
+ + prop_file
+ + "\" and \"."
+ + args[i]
+ + "\" contain a property. Only one can be used at a time."
+ );
+
+ has_error = true;
+ }
+ else
+ {
+ has_pro_file = true;
+ prop_file = args[i];
+ }
+ }
+ else
+ {
+ System.err.println
+ (
+ "[E] Unknown file type \""
+ + args[i]
+ + "\"."
+ );
+
+ has_error = true;
+ }
}
- else
+
+ property_file = prop_file;
+
+ if (!has_pro_file)
{
- levels_dir = args[0];
- model_file = args[1];
- var_prefix = args[2];
- are_valid = true;
+ System.err.println("[E] There was no property file.");
+
+ has_error = true;
}
+
+ are_valid = has_error;
+ }
+
+ public List<String> get_level_files ()
+ {
+ return level_files;
}
- public String get_levels_directory ()
+ public List<String> get_model_files ()
{
- return levels_dir;
+ return model_files;
}
- public String get_model_file ()
+ public String get_property_file ()
{
- return model_file;
+ return property_file;
}
public String get_variables_prefix ()