V1_0.java [src/java/m/wqm/sednutpractscores] Revision: d4e5c230d855e631706b46dd08625538a324d934 Date: Thu Aug 13 16:01:47 MDT 2015
package m.wqm.sednutpractscores;
/**
*
* @author SrinivasReddy kontham
*/
import csip.ModelDataService;
import static csip.ModelDataService.EXEC_OK;
import java.util.ArrayList;
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;
import csip.utils.JSONUtils;
import java.util.Map;
import java.sql.*;
import java.util.concurrent.*;
@Name("SedNutPractScores")
@Description("Sediment Nutrient Practice Scores")
@Path("m/nut_pract_scores/1.0")
public class V1_0 extends ModelDataService
{
ArrayList<Input> components=new ArrayList<>(); // store the set of all input soilcomponents as objects
ArrayList<Result1> result1=new ArrayList<>(); // store the result as objects
int nleach_pract_score=0;
int nleach_avoid_pract_score=0;
int nleach_control_pract_score=0;
int nleach_trap_pract_score=0;
int nsurf_pract_score=0;
int nsurf_avoid_pract_score=0;
int nsurf_control_pract_score=0;
int nsurf_trap_pract_score=0;
int psurf_pract_score=0;
int psurf_avoid_pract_score=0;
int psurf_control_pract_score=0;
int psurf_trap_pract_score=0;
int ssurf_pract_score=0;
int ssurf_avoid_pract_score=0;
int ssurf_control_pract_score=0;
int ssurf_trap_pract_score=0;
int AoAid;
@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("pestcomponents");
for(int i=0;i<groups.length();i++)
{
Map<String, JSONObject> group = JSONUtils.preprocess(groups.getJSONArray(i));
AoAid = JSONUtils.getIntParam(group, "AoAid", 0);
int plan_pract_id=JSONUtils.getIntParam(group,"plan_practice_id",0);
String plan_pract_discrim_type=JSONUtils.getStringParam(group,"plan_practice_discrim_type","err");
String plan_pract_discrim_value=JSONUtils.getStringParam(group,"plan_practice_discrim_value","err");
Input input=new Input(AoAid,plan_pract_id,plan_pract_discrim_type,plan_pract_discrim_value);
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", "postgres", "admin");
conn.setAutoCommit(false);
statement = conn.createStatement();
for(Input ip:components)
{
String query;
// #Compute practice mitigation scores for Nitrogen in Ground Water and increment total scores
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id='"+ip.plan_practice_id+"'AND wqm_concern="+"'"+"Nitrogen in Ground Water"+"'AND mode_of_action="+"'"+"Avoid"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id='"+ip.plan_practice_id+"'AND wqm_concern="+"'"+"Nitrogen in Ground Water"+"'AND mode_of_action="+"'"+"Avoid"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
ResultSet results = statement.executeQuery(query);
while (results.next())
{
int nl_avoid_pract_score=results.getInt("nut_pract_score");
nleach_avoid_pract_score=nleach_avoid_pract_score+nl_avoid_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Ground Water"+"'AND mode_of_action="+"'"+"Control"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Ground Water"+"'AND mode_of_action="+"'"+"Control"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int nl_control_pract_score=results.getInt("nut_pract_score");
nleach_control_pract_score=nleach_control_pract_score+nl_control_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Ground Water"+"'AND mode_of_action="+"'"+"Trap"+"' AND COALESCE(pract_discrim_type, '') = ''"; }
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Ground Water"+"'AND mode_of_action="+"'"+"Trap"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int nl_trap_pract_score=results.getInt("nut_pract_score");
nleach_trap_pract_score=nleach_trap_pract_score+nl_trap_pract_score;
}
nleach_pract_score=nleach_trap_pract_score+nleach_control_pract_score+nleach_avoid_pract_score;
// #Compute practice mitigation scores for Sediment in Surface Water and increment total scores
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Sediment in Surface Water"+"'AND mode_of_action="+"'"+"Avoid"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Sediment in Surface Water"+"'AND mode_of_action="+"'"+"Avoid"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int sd_avoid_pract_score=results.getInt("nut_pract_score");
ssurf_avoid_pract_score=ssurf_avoid_pract_score+sd_avoid_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Sediment in Surface Water"+"'AND mode_of_action="+"'"+"Control"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Sediment in Surface Water"+"'AND mode_of_action="+"'"+"Control"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int sd_control_pract_score=results.getInt("nut_pract_score");
ssurf_control_pract_score=ssurf_control_pract_score+sd_control_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Sediment in Surface Water"+"'AND mode_of_action="+"'"+"Trap"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Sediment in Surface Water"+"'AND mode_of_action="+"'"+"Trap"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int sd_trap_pract_score=results.getInt("nut_pract_score");
ssurf_trap_pract_score=ssurf_trap_pract_score+sd_trap_pract_score;
}
ssurf_pract_score=ssurf_trap_pract_score+ssurf_control_pract_score+ssurf_avoid_pract_score;
// #Increment practice mitigation scores for Nitrogen in Surface Water and increment total scores
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Surface Water"+"'AND mode_of_action="+"'"+"Avoid"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Surface Water"+"'AND mode_of_action="+"'"+"Avoid"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int ns_avoid_pract_score=results.getInt("nut_pract_score");
nsurf_avoid_pract_score=nsurf_avoid_pract_score+ns_avoid_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Surface Water"+"'AND mode_of_action="+"'"+"Control"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Surface Water"+"'AND mode_of_action="+"'"+"Control"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int ns_control_pract_score=results.getInt("nut_pract_score");
nsurf_control_pract_score=nsurf_control_pract_score+ns_control_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Surface Water"+"'AND mode_of_action="+"'"+"Trap"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Nitrogen in Surface Water"+"'AND mode_of_action="+"'"+"Trap"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int ns_trap_pract_score=results.getInt("nut_pract_score");
nsurf_trap_pract_score=nsurf_trap_pract_score+ns_trap_pract_score;
}
nsurf_pract_score=nsurf_trap_pract_score+nsurf_control_pract_score+nsurf_avoid_pract_score;
// #Increment practice mitigation scores for Phosphorus in Surface Water and increment total scores
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Phosphorus in Surface Water"+"'AND mode_of_action="+"'"+"Avoid"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Phosphorus in Surface Water"+"'AND mode_of_action="+"'"+"Avoid"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int ps_avoid_pract_score=results.getInt("nut_pract_score");
psurf_avoid_pract_score=psurf_avoid_pract_score+ps_avoid_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Phosphorus in Surface Water"+"'AND mode_of_action="+"'"+"Control"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Phosphorus in Surface Water"+"'AND mode_of_action="+"'"+"Control"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int ps_control_pract_score=results.getInt("nut_pract_score");
psurf_control_pract_score=psurf_control_pract_score+ps_control_pract_score;
}
if(ip.plan_practice_discrim_type.equals(""))
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Phosphorus in Surface Water"+"'AND mode_of_action="+"'"+"Trap"+"' AND COALESCE(pract_discrim_type, '') = ''";
}
else
{
query="SELECT nut_pract_score FROM wqm_sediment_nutrient_practice_scores WHERE practice_id="+ip.plan_practice_id+"AND wqm_concern="+"'"+"Phosphorus in Surface Water"+"'AND mode_of_action="+"'"+"Trap"+"'AND CAST(min_pract_discrim AS int)<="+Integer.parseInt(ip.plan_practice_discrim_value)+"AND CAST(max_pract_discrim AS int)>"+Integer.parseInt(ip.plan_practice_discrim_value);
}
results = statement.executeQuery(query);
while (results.next())
{
int ps_trap_pract_score=results.getInt("nut_pract_score");
psurf_trap_pract_score=psurf_trap_pract_score+ps_trap_pract_score;
}
psurf_pract_score=psurf_trap_pract_score+psurf_control_pract_score+psurf_avoid_pract_score;
}
Result1 result=new Result1(AoAid,nleach_pract_score,ssurf_pract_score,nsurf_pract_score,psurf_pract_score,nleach_avoid_pract_score,nleach_control_pract_score,nleach_trap_pract_score,ssurf_avoid_pract_score,ssurf_control_pract_score,ssurf_trap_pract_score,nsurf_avoid_pract_score,nsurf_control_pract_score,nsurf_trap_pract_score,psurf_avoid_pract_score,psurf_control_pract_score,psurf_trap_pract_score);
result1.add(result);
return EXEC_OK;
}
@Override
//writing the results back to JSON
protected void postProcess() throws Exception
{
JSONArray result1Arr = new JSONArray();
for(Result1 rs1:result1)
{
JSONArray tmpArr = new JSONArray();
tmpArr.put(JSONUtils.dataDesc("AoAId", AoAid, "Area of Analysis Identifier"));
tmpArr.put(JSONUtils.dataDesc("nleach_pract_score", rs1.nleach_pract_score, " Nitrogen Leaching Practice Mitigation Score"));
tmpArr.put(JSONUtils.dataDesc("nsurf_pract_score", rs1.nsurf_pract_score, "Sediment Runoff Practice Mitigation Score"));
tmpArr.put(JSONUtils.dataDesc("ssurf_pract_score", rs1.ssurf_pract_score, "Nitrogen Runoff Practice Mitigation Score"));
tmpArr.put(JSONUtils.dataDesc("psurf_pract_score", rs1.psurf_pract_score, "Phosphorus Runoff Practice Mitigation Score"));
tmpArr.put(JSONUtils.dataDesc("nleach_avoid_pract_score", rs1.nleach_avoid_pract_score, "Nitrogen Leaching Practice Score (Avoid)"));
tmpArr.put(JSONUtils.dataDesc("nleach_control_pract_score", rs1.nleach_control_pract_score, "Nitrogen Leaching Practice Score (Control)"));
tmpArr.put(JSONUtils.dataDesc("nleach_trap_pract_score", rs1.nleach_trap_pract_score, "Nitrogen Leaching Practice Score (Trap)"));
tmpArr.put(JSONUtils.dataDesc("ssurf_avoid_pract_score", rs1.ssurf_avoid_pract_score, "Sediment Runoff Practice Score (Avoid)"));
tmpArr.put(JSONUtils.dataDesc("ssurf_control_pract_score", rs1.ssurf_control_pract_score, "Sediment Runoff Practice Score (Control)"));
tmpArr.put(JSONUtils.dataDesc("ssurf_trap_pract_score", rs1.ssurf_trap_pract_score, "Sediment Runoff Practice Score (Trap)"));
tmpArr.put(JSONUtils.dataDesc("nsurf_avoid_pract_score", rs1.nsurf_avoid_pract_score, "Nitrogen Runoff Practice Score (Avoid)"));
tmpArr.put(JSONUtils.dataDesc("nsurf_control_pract_score", rs1.nsurf_control_pract_score, "Nitrogen Runoff Practice Score (Control)"));
tmpArr.put(JSONUtils.dataDesc("nsurf_trap_pract_score", rs1.nsurf_trap_pract_score, "Nitrogen Runoff Practice Score (Trap)"));
tmpArr.put(JSONUtils.dataDesc("psurf_avoid_pract_score", rs1.psurf_avoid_pract_score, "Phosphorus Runoff Practice Score (Avoid)"));
tmpArr.put(JSONUtils.dataDesc("psurf_control_pract_score", rs1.psurf_control_pract_score, "Phosphorus Runoff Practice Score (Control)"));
tmpArr.put(JSONUtils.dataDesc("psurf_trap_pract_score", rs1.psurf_trap_pract_score, "Phosphorus Runoff Practice Score (Trap)"));
result1Arr.put(JSONUtils.dataDesc("(AoASedNutPractScore)", tmpArr, "(AoASedNutPractScore)"));
}
putResult("operation", result1Arr);
}
}