Displaying differences for changeset
 
display as  

src/java/m/oms/ages/V1_0.java

@@ -15,7 +15,6 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import javax.ws.rs.Path;
 import static m.oms.ages.V1_0.ID_AGES_JAR;
@@ -46,31 +45,53 @@
   static final String KEY_OPTIONS = "java.options";
 
   static final String ID_AGES_JAR = "ages.jar";
-
   static final String RUN_INC = "run.inc";
 
 
   @Override
   public void doProcess() throws Exception {
-    String dsl = parameter().getString(KEY_SCRIPT, resources().getFile("ages.sim").toString());
-    String loglevel = parameter().getString(KEY_LOGLEVEL, "INFO");
-    String options = parameter().getString(KEY_OPTIONS, "");
+    String dsl = parameter().getString(KEY_SCRIPT, resources().getFile(KEY_SCRIPT).toString());
 
-    Map<String, String> run_param = new HashMap<>();
-    run_param.put("startTime", "\"" + parameter().getString("startTime") + "\"");
-    run_param.put("endTime", "\"" + parameter().getString("endTime") + "\"");
+    // pass request param to model runtime parameter -> run.inc
+    Map<String, String> runParam = new HashMap<>();
+    passReqQuotedParam(runParam, "startTime");
+    passReqQuotedParam(runParam, "endTime");
 
-    createParamInclude(run_param);
+    passOptParam(runParam, "flowRouteTA");
+    passOptParam(runParam, "SoilOutLPS");
+
+    createParamInclude(runParam);
 
     File d = new File(dsl);
     if (!(d.isAbsolute() && d.exists())) {
       d = getWorkspaceFile(dsl);
     }
-    runAges(d, loglevel, options);
+    runAges(d);
 //    results().put(getWorkspaceFile("output"));
   }
 
 
+  /**
+   * pass a required parameter, quoted (string).
+   */
+  private void passReqQuotedParam(Map<String, String> p, String name) throws ServiceException {
+    p.put(name, "\"" + parameter().getString(name) + "\"");
+  }
+
+
+  /**
+   * pass optional parameter, no quotes.
+   */
+  private void passOptParam(Map<String, String> p, String name) throws ServiceException {
+    if (parameter().has(name)) {
+      p.put(name, parameter().getString(name));
+    }
+  }
+
+
+  /**
+   * create a 'sim' include file for the run part.
+   */
   private void createParamInclude(Map<String, String> p) throws IOException {
     StringBuilder b = new StringBuilder();
     b.append("parameter {\n");
@@ -82,13 +103,20 @@
   }
 
 
-  private void runAges(File dsl, String loglevel, String options) throws Exception {
+  /**
+   * Run Ages
+   *
+   * @param dsl
+   * @param options
+   * @throws Exception
+   */
+  private void runAges(File dsl) throws Exception {
 
     getWorkspaceFile("output").mkdirs();
     getWorkspaceFile("logs").mkdirs();
 
     // Create/execute a Ages.
-    Executable p = createProcess(loglevel, dsl, options);
+    Executable p = createProcess(dsl);
     int result = p.exec();
     if (result != 0) {
       FilenameFilter ff = new WildcardFileFilter("java*stderr.txt", IOCase.INSENSITIVE);
@@ -103,21 +131,28 @@
   }
 
 
-  private Executable createProcess(String loglevel, File dsl, String options) throws Exception {
+  /**
+   * Create the external Ages process.
+   */
+  private Executable createProcess(File dsl) throws Exception {
 
     Map<String, String> sysprops = new HashMap();
     sysprops.put("oms_prj", getWorkspaceDir().toString());
     sysprops.put("csip_ages", resources().getFile(ID_AGES_JAR).getParent());
 
     String[] jvmOptions = Binaries.asSysProps(sysprops);
+    String options = parameter().getString(KEY_OPTIONS, "");
     if (options != null && !options.isEmpty()) {
-      String[] opt = options.split("\\s+");
-      jvmOptions = (String[]) ArrayUtils.addAll(jvmOptions, opt);
+      jvmOptions = (String[]) ArrayUtils.addAll(jvmOptions, options.split("\\s+"));
     }
 
-    List<File> jars = Arrays.asList(resources().getFile(ID_AGES_JAR));
     // java -Doms_prj=. -cp "dist/AgES.jar" oms3.CLI -l OFF -r "projects/sfir30/simulation/sfir30.sim"
-    return Binaries.getResourceOMSDSL(dsl,
-        jvmOptions, getWorkspaceDir(), jars, loglevel, LOG);
+    return Binaries.getResourceOMSDSL(
+        dsl, // the dsl file to run
+        jvmOptions, // jvm options
+        getWorkspaceDir(), // workspace dir
+        Arrays.asList(resources().getFile(ID_AGES_JAR)), // the ages jar file 
+        parameter().getString(KEY_LOGLEVEL, "INFO"), // The log level
+        LOG); // This session logger
   }
 }

web/WEB-INF/csip-defaults.json

@@ -1,5 +1,5 @@
 {
- "csip-oms.version": "$version: 0.1.15 a84bc7b1cf83 2020-02-12 od, built at 2020-02-12 11:53 by od$",
+ "csip-oms.version": "$version: 0.1.18 529fcbfe4060 2020-02-17 od, built at 2020-02-17 10:21 by od$",
  "oms.java.home": "/opt/jdk1.8.0_51",
   "csip.keepworkspace" : true,
   "csip.session.ttl" : "PT3M",