package org.lemsml.jlems.io; import java.io.File; import java.util.HashMap; import org.lemsml.jlems.core.expression.ParseError; import org.lemsml.jlems.core.logging.E; import org.lemsml.jlems.core.run.ConnectionError; import org.lemsml.jlems.core.run.RuntimeError; import org.lemsml.jlems.core.run.StateInstance; import org.lemsml.jlems.core.run.StateType; import org.lemsml.jlems.core.sim.ContentError; import org.lemsml.jlems.core.sim.ParseException; import org.lemsml.jlems.core.sim.Sim; import org.lemsml.jlems.core.type.BuildException; import org.lemsml.jlems.core.xml.XMLException; import org.lemsml.jlems.io.reader.FileInclusionReader; public final class Main { public static final String VERSION = "0.9.8.6"; static String usage = "USAGE: java -jar target/jlems-"+VERSION+".jar [-cp folderpaths] model-file [-nogui]\n"; private Main() { } public static void showUsage() { E.info(usage); } public static void main(String[] argv) throws ConnectionError, ContentError, RuntimeError, ParseError, ParseException, BuildException, XMLException { //MinimalMessageHandler.setVeryMinimal(true); //E.setDebug(false); if (argv.length == 0) { System.err.println("No model file specified!"); showUsage(); System.exit(1); } if (argv.length == 1 && (argv[0].equals("-h") || argv[0].equals("-help") || argv[0].equals("-?"))) { showUsage(); System.exit(0); } HashMap<String, String> argMap = parseArguments(argv); String typePath = null; String modelName = null; //boolean verbose = true; boolean verbose = false; if (argMap.containsKey("-cp")) { typePath = argMap.get("-cp"); argMap.remove("-cp"); } if (argMap.containsKey("0")) { modelName = argMap.get("0"); argMap.remove("0"); } if (modelName == null) { showUsage(); System.exit(1); } File simFile = new File(modelName); if (!simFile.exists()) { E.error("No such file: " + simFile.getAbsolutePath()); System.exit(1); } FileInclusionReader fir = new FileInclusionReader(simFile); if (typePath != null) { fir.addSearchPaths(typePath); } Sim sim = new Sim(fir.read()); sim.readModel(); sim.build(); StateInstance si = sim.getCurrentRootState(); StateType st = sim.getTargetBehavior(); if (verbose) { System.out.println("Pre run StateType: \n"); System.out.println(st.getSummary(" ", "| ")+"\n"); System.out.println("Pre run: \n"); System.out.println(si.getSummary(" ", "| ")+"\n"); } boolean doRun = true; if (doRun) { sim.run(); E.info("Finished reading, building, running and displaying the LEMS model"); } IOUtil.saveReportAndTimesFile(sim); } public static HashMap<String, String> parseArguments(String[] argv) { HashMap<String, String> ret = new HashMap<String, String>(); int iarg = 0; int ifree = 0; while (true) { if (iarg < argv.length) { String s = argv[iarg]; iarg += 1; if (s.startsWith("-")) { if (iarg < argv.length) { ret.put(s, argv[iarg]); iarg += 1; } } else { ret.put("" + ifree, s); ifree += 1; } } else { break; } } return ret; } }