Displaying differences for changeset
 
display as  

src/java/cfa/guiLOADEST_Model.java

@@ -1,7 +1,6 @@
 package cfa;
 
-import csip.Config;
-import csip.utils.Binaries;
+import csip.Executable;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -13,10 +12,9 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
-import oms3.util.ProcessComponent;
 
 /**
-* Last Updated: 26-January-2015
+* Last Updated: 25-March-2015
 * @author Tyler Wible & Tyler Dell
 * @since 27-March-2013
 */
@@ -681,7 +679,7 @@
      * @throws IOException 
      * @throws InterruptedException 
      */
-    public void run() throws IOException, InterruptedException {
+    public void run(Executable e) throws IOException, InterruptedException {
         //Inputs
         //assert args.length > 0;
         //String mainFolder         = args[0];
@@ -783,19 +781,7 @@
         //Call LOADEST exe
         //Expected Input: "CONTROL.INP", "HEADER.INP", "CALIB.INP", and "EST.INP"
         System.out.println("Calling LOADEST.exe");
-        String binDir = Config.getString("m.bin.dir", "/tmp/csip/bin");
-        File loadest = Binaries.unpackResource("/bin/win-x86/loadest.exe", new File(binDir));
-        ProcessComponent pc = new ProcessComponent();
-
-        if (File.pathSeparatorChar == ':') {
-            pc.exe = Config.getString("wine.path", "/usr/bin/wine");
-            pc.args = new String[]{loadest.toString()};
-        } else {
-            pc.exe = loadest.toString();
-            pc.args = new String[]{};
-        }
-        pc.working_dir = mainFolder;
-        pc.execute();
+        e.exec();  
         
         //Expected Output: "echo.out" and fileName + ".ind", fileName + ".out", fileName + ".res"
         if (!new File(mainFolder, "echo.out").exists()) {
@@ -908,6 +894,6 @@
         guiLOADEST_Model loadest_Model = new guiLOADEST_Model();
         
         //Run model
-        loadest_Model.run();
+        loadest_Model.run(null);
     }
 }
\ No newline at end of file

src/java/m/cfa/LOADEST_V1_0.java

@@ -1,119 +1,110 @@
 package m.cfa;
 
 import cfa.guiLOADEST_Model;
-import java.util.Map;
-import java.util.concurrent.Callable;
+import csip.Executable;
 import javax.ws.rs.Path;
-import csip.AbstractModelService;
+import csip.ModelDataService;
+import csip.annotations.Resource;
+import csip.annotations.Resources;
 import oms3.annotations.Description;
 import oms3.annotations.Name;
 import oms3.annotations.VersionInfo;
-import org.codehaus.jettison.json.*;
-import csip.utils.JSONUtils;
-import csip.utils.Services;
-import java.io.File;
 
 @Name("loadest")
 @Description("loadest")
 @VersionInfo("1.0")
 @Path("m/cfa/loadest/1.0")
-public class LOADEST_V1_0 extends AbstractModelService {
+@Resources({
+    @Resource(file="/bin/win-x86/loadest.exe", wine=true, id="ld")
+})
+public class LOADEST_V1_0 extends ModelDataService {
 
     guiLOADEST_Model model = new guiLOADEST_Model();
 
     @Override
-    protected Callable<String> createCallable() throws Exception {
-        return new Callable<String>() {
-            @Override
-            public String call() throws Exception {
-                Map<String, JSONObject> m = getParamMap();
+    protected String process() throws Exception {
+        model.setMainFolder(getWorkspaceDir().toString());
+        model.setDatabase(getStringParam("database"));
+        model.setOrganizationName(getStringParam("org"));
+        model.setStationID(getStringParam("station_id"));
+        model.setStationName(getStringParam("station_name"));
+        model.setWQtest(getStringParam("wq_test"));
+        model.setPTOPT(getIntParam("ptopt"));
+        model.setSEOPT(getIntParam("seopt"));
+        model.setLDOPT(getIntParam("ldopt"));
+        model.setmodelNumber(getIntParam("modelnumber"));
+        model.setPBMON(getIntParam("pbmon"));
+        model.setPEMON(getIntParam("pemon"));
+        model.setULFLAG(getIntParam("ulflag"));
+        model.setBeginDate(getStringParam("begin_date"));
+        model.setEndDate(getStringParam("end_date"));
+        model.setUseSTORETretrieval(getBooleanParam("useSTORETretrieval"));
+        model.setSTORETdata(getStringParam("STORETdata"));
+        model.setMergeDatasets(getBooleanParam("merge_datasets"));
+        model.setMergeMethod(getStringParam("merge_method"));
+        model.setUserData(getStringParam("user_data"));
 
-                model.setMainFolder(getWorkspaceDir().toString());
-                model.setDatabase(m.get("database").getString(VALUE));
-                model.setOrganizationName(m.get("org").getString(VALUE));
-                model.setStationName(m.get("station_name").getString(VALUE));
-                model.setStationID(m.get("station_id").getString(VALUE));
-                model.setWQtest(m.get("wq_test").getString(VALUE));
-                model.setPTOPT(m.get("ptopt").getInt(VALUE));
-                model.setSEOPT(m.get("seopt").getInt(VALUE));
-                model.setLDOPT(m.get("ldopt").getInt(VALUE));
-                model.setmodelNumber(m.get("modelnumber").getInt(VALUE));
-                model.setPBMON(m.get("pbmon").getInt(VALUE));
-                model.setPEMON(m.get("pemon").getInt(VALUE));
-                model.setULFLAG(m.get("ulflag").getInt(VALUE));
-                model.setBeginDate(m.get("begin_date").getString(VALUE));
-                model.setEndDate(m.get("end_date").getString(VALUE));
-                model.setUseSTORETretrieval(m.get("useSTORETretrieval").getBoolean(VALUE));
-                model.setSTORETdata(m.get("STORETdata").getString(VALUE));
-                model.setMergeDatasets(m.get("merge_datasets").getBoolean(VALUE));
-                model.setMergeMethod(m.get("merge_method").getString(VALUE));
-                model.setUserData(m.get("user_data").getString(VALUE));
-                model.run();
-                return EXEC_OK;
-            }
-        };
-    }
-
-    @Override
-    public File[] postprocess() throws Exception {
-        return Services.toFiles(//Results files needed for JavaScript graphing with JHighCharts
-                             model.getDailyTimeseries().getName(),
-                             model.getDailyBoxplot().getName(),
-                             model.getMonthlyTimeseries().getName(),
-                             model.getMonthlyBoxplot().getName(),
-                             model.getYearlyTimeseries().getName(),
-                             model.getYearlyBoxplot().getName(),
-                             //Graphs no longer handled with Java
-//                             model.getDailyGraph(),
-//                             model.getDailyBoxplotGraph(),
-//                             model.getMonthlyGraph(),
-//                             model.getMonthlyBoxplotGraph(),
-//                             model.getYearlyGraph(),
-//                             model.getYearlyBoxplotGraph(),
-                             //Results files desired by the user as output of the model
-                             model.getOutputResult1().getName(),
-                             model.getOutputResult2().getName(),
-                             model.getOutputResult3().getName());
+        Executable e = getResourceExe("ld");  // looking up the resource by id.
+        model.run(e);
+        return EXEC_OK;
     }
     
     @Override
-    protected JSONArray createResults() throws Exception {
-        
-        JSONArray result = new JSONArray();
-        result.put(JSONUtils.data("flow_len", model.getFlowLen()));
-        result.put(JSONUtils.data("wq_len", model.getWQLen()));
-        result.put(JSONUtils.data("wq_units", model.getWQUnits()));
-        result.put(JSONUtils.data("start", model.getStart()));
-        result.put(JSONUtils.data("end", model.getEnd()));
-        result.put(JSONUtils.data("data_source", model.getDataSource()));
+    protected void postProcess() throws Exception {
+        // files
+        putResult(model.getDailyTimeseries(),
+                model.getDailyBoxplot(),
+                model.getMonthlyTimeseries(),
+                model.getMonthlyBoxplot(),
+                model.getYearlyTimeseries(),
+                model.getYearlyBoxplot(),
+                //Graphs no longer handled with Java
+//                model.getDailyGraph(),
+//                model.getDailyBoxplotGraph(),
+//                model.getMonthlyGraph(),
+//                model.getMonthlyBoxplotGraph(),
+//                model.getYearlyGraph(),
+//                model.getYearlyBoxplotGraph(),
+                //Results files desired by the user as output of the model
+                model.getOutputResult1(),
+                model.getOutputResult2(),
+                model.getOutputResult3());
+
+        // values
+        putResult("flow_len", model.getFlowLen());
+        putResult("wq_len", model.getWQLen());
+        putResult("wq_units", model.getWQUnits());
+        putResult("start", model.getStart());
+        putResult("end", model.getEnd());
+        putResult("data_source", model.getDataSource());
         //Daily Data
-        result.put(JSONUtils.data("daily_max", model.getDailyMax()));
-        result.put(JSONUtils.data("daily_min", model.getDailyMin()));
-        result.put(JSONUtils.data("daily_upper_quartile", model.getDailyUpperQuartile()));
-        result.put(JSONUtils.data("daily_lower_quartile", model.getDailyLowerQuartile()));
-        result.put(JSONUtils.data("daily_median", model.getDailyMedian()));
-        result.put(JSONUtils.data("daily_mean", model.getDailyMean()));
-        result.put(JSONUtils.data("daily_standard_deviation", model.getDailyStandardDeviation()));
+        putResult("daily_max", model.getDailyMax());
+        putResult("daily_min", model.getDailyMin());
+        putResult("daily_upper_quartile", model.getDailyUpperQuartile());
+        putResult("daily_lower_quartile", model.getDailyLowerQuartile());
+        putResult("daily_median", model.getDailyMedian());
+        putResult("daily_mean", model.getDailyMean());
+        putResult("daily_standard_deviation", model.getDailyStandardDeviation());
         //Monthly Data
-        result.put(JSONUtils.data("monthly_max", model.getMonthlyMax()));
-        result.put(JSONUtils.data("monthly_min", model.getMonthlyMin()));
-        result.put(JSONUtils.data("monthly_upper_quartile", model.getMonthlyUpperQuartile()));
-        result.put(JSONUtils.data("monthly_lower_quartile", model.getMonthlyLowerQuartile()));
-        result.put(JSONUtils.data("monthly_median", model.getMonthlyMedian()));
-        result.put(JSONUtils.data("monthly_mean", model.getMonthlyMean()));
-        result.put(JSONUtils.data("monthly_standard_deviation", model.getMonthlyStandardDeviation()));
+        putResult("monthly_max", model.getMonthlyMax());
+        putResult("monthly_min", model.getMonthlyMin());
+        putResult("monthly_upper_quartile", model.getMonthlyUpperQuartile());
+        putResult("monthly_lower_quartile", model.getMonthlyLowerQuartile());
+        putResult("monthly_median", model.getMonthlyMedian());
+        putResult("monthly_mean", model.getMonthlyMean());
+        putResult("monthly_standard_deviation", model.getMonthlyStandardDeviation());
         //Yearly Data
-        result.put(JSONUtils.data("yearly_max", model.getYearlyMax()));
-        result.put(JSONUtils.data("yearly_min", model.getYearlyMin()));
-        result.put(JSONUtils.data("yearly_upper_quartile", model.getYearlyUpperQuartile()));
-        result.put(JSONUtils.data("yearly_lower_quartile", model.getYearlyLowerQuartile()));
-        result.put(JSONUtils.data("yearly_median", model.getYearlyMedian()));
-        result.put(JSONUtils.data("yearly_mean", model.getYearlyMean()));
-        result.put(JSONUtils.data("yearly_standard_deviation", model.getYearlyStandardDeviation()));
+        putResult("yearly_max", model.getYearlyMax());
+        putResult("yearly_min", model.getYearlyMin());
+        putResult("yearly_upper_quartile", model.getYearlyUpperQuartile());
+        putResult("yearly_lower_quartile", model.getYearlyLowerQuartile());
+        putResult("yearly_median", model.getYearlyMedian());
+        putResult("yearly_mean", model.getYearlyMean());
+        putResult("yearly_standard_deviation", model.getYearlyStandardDeviation());
         //Get other results
-        result.put(JSONUtils.data("user_resultFile1", model.getOutputResult1().getName()));
-        result.put(JSONUtils.data("user_resultFile2", model.getOutputResult2().getName()));
-        result.put(JSONUtils.data("user_resultFile3", model.getOutputResult3().getName()));
+        putResult("user_resultFile1", model.getOutputResult1().getName());
+        putResult("user_resultFile2", model.getOutputResult2().getName());
+        putResult("user_resultFile3", model.getOutputResult3().getName());
         
         //Get result files for JSHighCharts
         String graphDataFiles = model.getDailyTimeseries().getName() + "|" +  
@@ -122,8 +113,6 @@
                       model.getMonthlyBoxplot().getName() + "|" + 
                       model.getYearlyTimeseries().getName() + "|" + 
                       model.getYearlyBoxplot().getName();
-        result.put(JSONUtils.data("graph_data_files", graphDataFiles));
-        return result;
+        putResult("graph_data_files", graphDataFiles);
     }
-
 }