V1_0.java [src/java/m/groundwater] Revision: 567f50981b6a01800f4009c889a16124d9f4e098  Date: Fri Jun 21 11:15:09 MDT 2019
package m.groundwater;

import csip.ModelDataService;
import csip.PayloadParameter;
import csip.PayloadResults;
import csip.annotations.Description;
import csip.annotations.Name;
import csip.annotations.VersionInfo;
import java.io.File;
import javax.ws.rs.Path;

@Name("groundwater")
@Description("USGS Groundwater time series analysis tool")
@VersionInfo("1.0")
@Path("m/groundwater/groundwater/1.0")
public class V1_0 extends ModelDataService {

    guiGroundwater_Model model = new guiGroundwater_Model();
    
    @Override
    protected void preProcess() throws Exception {
        model.setMainFolder(getWorkspaceDir().toString());
        
        PayloadParameter inputPayload = parameter();
        model.setDatabase(inputPayload.getString("database"));
        model.setStationID(inputPayload.getString("station_id"));
        model.setStationName(inputPayload.getString("station_name"));
        model.setWQtest(inputPayload.getString("wq_test"));
        model.setBeginDate(inputPayload.getString("begin_date"));
        model.setEndDate(inputPayload.getString("end_date"));
        model.setTimeStep(inputPayload.getString("time_step"));
        model.setMethod(inputPayload.getString("method"));
        model.setPeriod1End(inputPayload.getString("period1_end"));
        model.setPeriod2Begin(inputPayload.getString("period2_begin"));
        model.setPeriod2End(inputPayload.getString("period2_end"));
        model.setPeriod3Begin(inputPayload.getString("period3_begin"));
        model.setPeriod3End(inputPayload.getString("period3_end"));
        model.setMedianTF(inputPayload.getBoolean("medianTF"));
        model.setMergeDatasets(inputPayload.getBoolean("merge_datasets"));
        model.setMergeMethod(inputPayload.getString("merge_method"));
        model.setUserData(inputPayload.getString("user_data"));
    }

    @Override
    protected void doProcess() throws Exception {
        model.run();
    }
    
    @Override
    protected void postProcess() throws Exception {
        PayloadResults resultPayload = results();
        // files
        File wd = getWorkspaceDir();
        resultPayload.put(new File(wd, model.getGraph()),
                  //Below are the result graph files for use by JHighCharts on eRAMS for duplicating the above graphs
                  model.getGWgraphOutput());

        // values
        resultPayload.put("len", model.getLen());
        resultPayload.put("start", model.getStart());
        resultPayload.put("end", model.getEnd());
        resultPayload.put("units", model.getUnits());
        resultPayload.put("data_source", model.getDataSource());
        //Get all data results
        resultPayload.put("max", model.getMax());
        resultPayload.put("min", model.getMin());
        resultPayload.put("upperQuartile", model.getUpperQuartile());
        resultPayload.put("lowerQuartile", model.getLowerQuartile());
        resultPayload.put("median", model.getMedian());
        resultPayload.put("mean", model.getMean());
        resultPayload.put("standardDeviation", model.getStandardDeviation());
        resultPayload.put("variance", model.getVariance());
        resultPayload.put("skewness", model.getSkewness());
        resultPayload.put("coefficientOfVariation", model.getCoefficientOfVariation());
        resultPayload.put("kendalCorrelationCoefficient", model.getKendallCorrelationCoefficient());
        //Get Period 1 results
        resultPayload.put("len_period1", model.getLen_period1());
        resultPayload.put("max_period1", model.getMax_period1());
        resultPayload.put("min_period1", model.getMin_period1());
        resultPayload.put("upperQuartile_period1", model.getUpperQuartile_period1());
        resultPayload.put("lowerQuartile_period1", model.getLowerQuartile_period1());
        resultPayload.put("median_period1", model.getMedian_period1());
        resultPayload.put("mean_period1", model.getMean_period1());
        resultPayload.put("standardDeviation_period1", model.getStandardDeviation_period1());
        resultPayload.put("variance_period1", model.getVariance_period1());
        resultPayload.put("skewness_period1", model.getSkewness_period1());
        resultPayload.put("coefficientOfVariation_period1", model.getCoefficientOfVariation_period1());
        resultPayload.put("kendalCorrelationCoefficient_period1", model.getKendallCorrelationCoefficient_period1());
        //Get Period 2 results
        resultPayload.put("len_period2", model.getLen_period2());
        resultPayload.put("max_period2", model.getMax_period2());
        resultPayload.put("min_period2", model.getMin_period2());
        resultPayload.put("upperQuartile_period2", model.getUpperQuartile_period2());
        resultPayload.put("lowerQuartile_period2", model.getLowerQuartile_period2());
        resultPayload.put("median_period2", model.getMedian_period2());
        resultPayload.put("mean_period2", model.getMean_period2());
        resultPayload.put("standardDeviation_period2", model.getStandardDeviation_period2());
        resultPayload.put("variance_period2", model.getVariance_period2());
        resultPayload.put("skewness_period2", model.getSkewness_period2());
        resultPayload.put("coefficientOfVariation_period2", model.getCoefficientOfVariation_period2());
        resultPayload.put("kendalCorrelationCoefficient_period2", model.getKendallCorrelationCoefficient_period2());
        //Get Period 3 results
        resultPayload.put("len_period3", model.getLen_period3());
        resultPayload.put("max_period3", model.getMax_period3());
        resultPayload.put("min_period3", model.getMin_period3());
        resultPayload.put("upperQuartile_period3", model.getUpperQuartile_period3());
        resultPayload.put("lowerQuartile_period3", model.getLowerQuartile_period3());
        resultPayload.put("median_period3", model.getMedian_period3());
        resultPayload.put("mean_period3", model.getMean_period3());
        resultPayload.put("standardDeviation_period3", model.getStandardDeviation_period3());
        resultPayload.put("variance_period3", model.getVariance_period3());
        resultPayload.put("skewness_period3", model.getSkewness_period3());
        resultPayload.put("coefficientOfVariation_period3", model.getCoefficientOfVariation_period3());
        resultPayload.put("kendalCorrelationCoefficient_period3", model.getKendallCorrelationCoefficient_period3());
        //Get other results
        resultPayload.put("graph", model.getGraph());
        
        //Get result files for JSHighCharts
        String graphDataFiles = model.getGWgraphOutput().getName();
        resultPayload.put("graph_data_files", graphDataFiles);
    }
}