import java.util.List; import java.util.ArrayList; public class Parameters { private final List level_files; private final List model_files; private final List map_files; private final String property_file; private final String var_prefix; private final boolean are_valid; public static void print_usage () { System.out.println ( "Instr-to-kodkod\n" + "USAGE:\n" + "\tjava Main +\n" + "PARAMETERS:\n" + "\t- \tPrefix for anonymous variables (e.g. \"_anon_\").\n" + "\t- \tList of files to be loaded.\n" + "NOTES:\n" + "\t- One, single, property file MUST be in .\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- Map files have a \".map\" extension.\n" + "\t- The files may be given in any order." ); } public Parameters (String... args) { boolean has_pro_file, has_error; String prop_file; level_files = new ArrayList(); model_files = new ArrayList(); map_files = new ArrayList(); if (args.length < 2) { print_usage(); property_file = new String(); var_prefix = new String(); are_valid = false; return; } has_pro_file = false; has_error = false; var_prefix = args[0]; prop_file = new String(); for (int i = 1; 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(".map")) { map_files.add(args[i]); } else if (args[i].endsWith(".pro")) { 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; } } property_file = prop_file; if (!has_pro_file) { System.err.println("[E] There was no property file."); has_error = true; } are_valid = !has_error; } public List get_level_files () { return level_files; } public List get_model_files () { return model_files; } public List get_mapping_files () { return map_files; } public String get_property_file () { return property_file; } public String get_variables_prefix () { return var_prefix; } public boolean are_valid () { return are_valid; } }