V1_0.java [src/java/m/wqm/soilpestlosspot] Revision: adff553c90716fb46ed91582190fd19597594e86 Date: Mon Jun 01 11:21:47 MDT 2015
package m.wqm.soilpestlosspot;
/**
*
* @author RUMPAL SIDHU
*/
import csip.ModelDataService;
import csip.utils.JSONUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Map;
import javax.ws.rs.Path;
import oms3.annotations.Description;
import oms3.annotations.Name;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
@Name("WQM-10")
@Description("Soil/Pesticide Interaction Loss Potentials")
@Path("m/soilpestlosspot/1.0")
public class V1_0 extends ModelDataService {
ArrayList<m.wqm.soilpestlosspot.Input> components = new ArrayList<>(); // store the set of all input soilcomponents as objects
ArrayList<m.wqm.soilpestlosspot.Result> result = new ArrayList<>(); // store the result as objects
@Override
// reading the inputs from the json file into input object and placing it in the arraylist
protected void preProcess() throws Exception {
JSONArray groups = getJSONArrayParam("components");
for (int i = 0; i < groups.length(); i++) {
Map<String, JSONObject> group = JSONUtils.preprocess(groups.getJSONArray(i));
int AoAId = JSONUtils.getIntParam(group, "AoAId", 0);
int operation_id = JSONUtils.getIntParam(group, "operation_id", 0);
String op_pesticide_id = JSONUtils.getStringParam(group, "op_pesticide_id", "err");
String ai_plp = JSONUtils.getStringParam(group, "ai_plp", "err");
String ai_psrp = JSONUtils.getStringParam(group, "ai_psrp", "err");
String ai_parp = JSONUtils.getStringParam(group, "ai_parp", "err");
String aoa_pslp = JSONUtils.getStringParam(group, "aoa_pslp", "err");
String aoa_ssrp = JSONUtils.getStringParam(group, "aoa_ssrp", "err");
String aoa_sarp = JSONUtils.getStringParam(group, "aoa_sarp", "err");
String aoa_rain_prob = JSONUtils.getStringParam(group, "aoa_rain_prob", "err");
m.wqm.soilpestlosspot.Input input = new m.wqm.soilpestlosspot.Input(AoAId, operation_id, op_pesticide_id, ai_plp, ai_psrp, ai_parp, aoa_pslp, aoa_ssrp, aoa_sarp, aoa_rain_prob);
components.add(input);
}
}
@Override
protected String process() throws Exception {
Connection conn = null;
Statement statement = null;
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/WQM Data Mart 20150324", "postgres", "postgresql");
conn.setAutoCommit(false);
statement = conn.createStatement();
for (m.wqm.soilpestlosspot.Input ip : components) {
String query = "SELECT wqm_ilp FROM wqm_soil_pest_interaction_leaching WHERE wqm_plp='" + ip.ai_plp + "'AND wqm_slp='" + ip.aoa_pslp + "';";
ResultSet results = statement.executeQuery(query);
String op_pest_ilp = "err";
while (results.next()) {
op_pest_ilp = results.getString("wqm_ilp");
}
if (ip.aoa_rain_prob.equals("LOW")) {
switch (op_pest_ilp) {
case "HIGH":
op_pest_ilp = "INTERMEDIATE";
break;
case "INTERMEDIATE":
op_pest_ilp = "LOW";
break;
case "LOW":
op_pest_ilp = "VERY LOW";
break;
}
}
query = "SELECT wqm_isrp FROM wqm_soil_pest_interaction_solution_runoff WHERE wqm_psrp='" + ip.ai_psrp + "'AND wqm_ssrp ='" + ip.aoa_ssrp + "';";
results = statement.executeQuery(query);
String op_pest_isrp = "err";
while (results.next()) {
op_pest_isrp = results.getString("wqm_isrp");
}
if (ip.aoa_rain_prob.equals("LOW")) {
switch (op_pest_isrp) {
case "HIGH":
op_pest_isrp = "INTERMEDIATE";
break;
case "INTERMEDIATE":
op_pest_isrp = "LOW";
break;
case "LOW":
op_pest_isrp = "VERY LOW";
break;
}
}
query = "SELECT wqm_iarp FROM wqm_soil_pest_interaction_adsorbed_runoff WHERE wqm_parp='" + ip.ai_parp + "'AND wqm_sarp='" + ip.aoa_sarp + "';";
results = statement.executeQuery(query);
String op_pest_iarp = "err";
while (results.next()) {
op_pest_iarp = results.getString("wqm_iarp");
}
if (ip.aoa_rain_prob.equals("LOW")) {
switch (op_pest_iarp) {
case "HIGH":
op_pest_iarp = "INTERMEDIATE";
break;
case "INTERMEDIATE":
op_pest_iarp = "LOW";
break;
case "LOW":
op_pest_iarp = "VERY LOW";
break;
}
}
m.wqm.soilpestlosspot.Result result1 = new m.wqm.soilpestlosspot.Result(ip.AoAId, ip.operation_id, ip.op_pesticide_id, op_pest_ilp, op_pest_isrp, op_pest_iarp);
result.add(result1);
}
return EXEC_OK;
}
@Override
//writing the results back to JSON
protected void postProcess() throws Exception {
JSONArray resultArr = new JSONArray();
for (m.wqm.soilpestlosspot.Result rs1 : result) {
JSONArray tmpArr = new JSONArray();
tmpArr.put(JSONUtils.dataDesc("AoAId", rs1.AoAId, "Area of Analysis Identifier"));
tmpArr.put(JSONUtils.dataDesc("operation_id", rs1.operation_id, "Pesticide Application Operation Identifier"));
tmpArr.put(JSONUtils.dataDesc("op_pesticide_id", rs1.op_pesticide_id, "Pesticide identifier, EPA Pesticide Chemical Code (PC_CODE)"));
tmpArr.put(JSONUtils.dataDesc("op_pest_ilp", rs1.op_pest_ilp, "Operation Soil Pesticide Interaction Leaching Potential"));
tmpArr.put(JSONUtils.dataDesc("op_pest_isrp", rs1.op_pest_isrp, "Operation Soil Pesticide Interaction Solution Runoff Potential"));
tmpArr.put(JSONUtils.dataDesc("op_pest_iarp", rs1.op_pest_iarp, "Operation Soil Pesticide Interaction Adsorbed Runoff Potential"));
resultArr.put(JSONUtils.dataDesc("pesticide summary", tmpArr, "Pest"));
}
putResult("operation", resultArr);
}
}