Displaying differences for changeset
 
display as  

src/java/m/wqm/soilpestlosspot/V1_0.java

@@ -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);
     }
-
 }