@@ -5,31 +5,46 @@ |
* @author RUMPAL SIDHU |
*/ |
import csip.ModelDataService; |
+import csip.annotations.Polling; |
import csip.utils.JSONUtils; |
import java.sql.Connection; |
import java.sql.DriverManager; |
import java.sql.ResultSet; |
+import java.sql.SQLException; |
import java.sql.Statement; |
import java.util.ArrayList; |
import java.util.Map; |
import javax.ws.rs.Path; |
+import oms3.annotations.Name; |
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") |
+@Polling(first = 10000, next = 2000) |
|
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 |
+ //SQL params names here for quick modification |
+ private final String USER = "postgres"; |
+ private final String PASS = "admin"; |
+ private final String HOST = "localhost"; |
+ private final String PORT = "5432"; |
+ private final String DBNAME = "postgres"; |
+ private final String JDBC_TYPE = "jdbc:postgresql://"; |
+ private final String CONNECTION = JDBC_TYPE + HOST + ":" + PORT + "/" + DBNAME; |
+ private final String CLASS_NAME = "org.postgresql.Driver"; |
+ |
+ //Request |
+ private ArrayList<Input> components; |
+ //Response |
+ private ArrayList<Result> result; |
|
@Override |
- // reading the inputs from the json file into input object and placing it in the arraylist |
protected void preProcess() throws Exception { |
+ components = new ArrayList<>(); |
JSONArray groups = getJSONArrayParam("components"); |
for (int i = 0; i < groups.length(); i++) { |
Map<String, JSONObject> group = JSONUtils.preprocess(groups.getJSONArray(i)); |
@@ -43,84 +58,99 @@ |
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); |
+ Input input = new 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 { |
+ result = new ArrayList(); |
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(); |
+ String query; |
+ ResultSet resultSet; |
+ try { |
+ Class.forName(CLASS_NAME); |
+ conn = DriverManager.getConnection(CONNECTION, USER, PASS); |
+ conn.setAutoCommit(false); |
+ statement = conn.createStatement(); |
|
- for (m.wqm.soilpestlosspot.Input ip : components) { |
+ for (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"); |
+ query = "SELECT wqm_ilp FROM wqm_soil_pest_interaction_leaching WHERE wqm_plp='" + ip.ai_plp + "'AND wqm_slp='" + ip.aoa_pslp + "';"; |
+ resultSet = statement.executeQuery(query); |
+ String op_pest_ilp = "err"; |
+ while (resultSet.next()) { |
+ op_pest_ilp = resultSet.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 + "';"; |
+ resultSet = statement.executeQuery(query); |
+ String op_pest_isrp = "err"; |
+ while (resultSet.next()) { |
+ op_pest_isrp = resultSet.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 + "';"; |
+ resultSet = statement.executeQuery(query); |
+ String op_pest_iarp = "err"; |
+ while (resultSet.next()) { |
+ op_pest_iarp = resultSet.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; |
+ } |
+ } |
+ |
+ Result result1 = new Result(ip.AoAId, ip.operation_id, ip.op_pesticide_id, op_pest_ilp, op_pest_isrp, op_pest_iarp); |
+ result.add(result1); |
} |
- 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; |
- } |
+ } catch (SQLException se) { |
+ LOG.info("Did not open database for WQM-10!"); |
+ LOG.info(se.getMessage()); |
+ } finally { |
+ if (statement != null) { |
+ statement.close(); |
} |
- |
- 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 (conn != null) { |
+ conn.close(); |
} |
- 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; |
} |
@@ -129,7 +159,7 @@ |
//writing the results back to JSON |
protected void postProcess() throws Exception { |
JSONArray resultArr = new JSONArray(); |
- for (m.wqm.soilpestlosspot.Result rs1 : result) { |
+ for (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")); |
@@ -141,5 +171,4 @@ |
} |
putResult("operation", resultArr); |
} |
- |
} |