DBQueries.java [src/java/wqm/utils] Revision: default Date:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package wqm.utils;
import csip.annotations.Resource;
import java.util.Iterator;
/**
*
* @author robert
* @author Rumpal Sidhu
*/
@Resource(from = DBResources.class)
public class DBQueries {
public static String WQM01Query(String geom) {
String qry = "SELECT shape_area, wqs_rating "
+ "FROM wqm_huc12.wqsr_area WHERE geom.STIntersects(geometry::STGeomFromText('"
+ geom + "', 0))=1 AND geom.STIsValid()=1 " + "AND geometry::STGeomFromText('"
+ geom + "', 0).STIsValid()=1;";
return qry;
}
public static String WQM02Query01(Iterator iter) {
String qry = "SELECT ssurgo.component.mukey, ssurgo.component.cokey, ssurgo.component.compname, "
+ "ssurgo.component.comppct_r, ssurgo.component.hydgrp, ssurgo.component.slope_r, "
+ "ssurgo.component.taxorder, ssurgo.chorizon.chkey, ssurgo.chorizon.om_r, "
+ "ssurgo.chorizon.hzthk_r, ssurgo.chorizon.hzdept_r, ssurgo.chorizon.hzdepb_r, "
+ "ssurgo.chorizon.kwfact, ssurgo.chorizon.kffact, ssurgo.chfrags.fragvol_r, "
+ "ssurgo.chfrags.chfragskey FROM ssurgo.component LEFT OUTER JOIN ssurgo.chorizon "
+ "ON ssurgo.chorizon.cokey=ssurgo.component.cokey LEFT OUTER JOIN ssurgo.chfrags "
+ "ON ssurgo.chfrags.chkey=ssurgo.chorizon.chkey WHERE ssurgo.component.mukey in ('";
int mapCount = 0;
while (iter.hasNext()) {
if (mapCount > 0) {
qry += ", '" + iter.next().toString() + "' ";
} else {
qry += iter.next().toString() + "' ";
}
mapCount++;
}
qry += ") AND ssurgo.component.comppct_r IS NOT NULL AND ssurgo.component.hydgrp IS NOT NULL "
+ "ORDER BY ssurgo.component.mukey, ssurgo.component.cokey, ssurgo.chorizon.hzdept_r DESC, "
+ "ssurgo.chorizon.kffact;";
return qry;
}
public static String WQM02Query02(String WKTPolygon) {
String qry = "SELECT areasymbol, musym, mukey, muname, "
+ "geography::STGeomFromText(intersectPoly.STAsText(), 4326).MakeValid().STArea()/4046.86 "
+ "AS sizeIntersectionAcres FROM (SELECT m.areasymbol, m.musym, m.mukey, "
+ "ssurgo.mapunit.muname, m.the_geom.STIntersection(geometry::STGeomFromText(" + WKTPolygon
+ ", 0)).MakeValid() AS intersectPoly FROM ssurgo.soilmu_a AS m WITH (index(geom_sidx)) "
+ "INNER JOIN ssurgo.mapunit ON m.mukey=ssurgo.mapunit.mukey WHERE "
+ "m.the_geom.STIntersects(geometry::STGeomFromText(" + WKTPolygon + ", 0))=1 "
+ "AND m.the_geom.STIsValid()=1 AND (geometry::STGeomFromText(" + WKTPolygon
+ ", 0).STIsValid())=1) AS a;";
return qry;
}
public static String WQM02Query03(String WKTPolygon, String polygonText) {
String qry = "SELECT m.mukey, ssurgo.mapunit.muname, st_area(st_transform(st_intersection(ST_PolygonFromText("
+ WKTPolygon + ", 4326), m.the_geom::geography::geometry), 3541))/43560 AS sizeIntersectionAcres "
+ "FROM ssurgo.soilmu_a AS m INNER JOIN ssurgo.mapunit ON m.mukey=ssurgo.mapunit.mukey "
+ "WHERE ST_Intersects(" + polygonText + ", m.the_geom) AND st_isvalid(m.the_geom) "
+ "AND st_isvalid(" + polygonText + ") ORDER BY m.mukey;";
return qry;
}
public static String WQM04Query(String pest_id) {
String qry = "SELECT PC_CODE, AI_NAME, PH, SOIL_HL_RV, KOC_RV, SOL_RV, HUMAN_TOX_PPB, "
+ "HUMAN_TOX_TYPE, FISH_TOX_PPB, FISH_TOX_TYPE FROM wqm.wqm_pesticides "
+ "WHERE PC_CODE IN (" + pest_id + ");";
return qry;
}
public static String WQM04Query01(String pestRows) {
String qry = "SELECT PC_CODE, AI_NAME, PH, SOIL_HL_RV, KOC_RV, SOL_RV, HUMAN_TOX_PPB, "
+ "HUMAN_TOX_TYPE, FISH_TOX_PPB, FISH_TOX_TYPE FROM wqm.wqm_pesticides "
+ "WHERE Id IN (" + pestRows + ");";
return qry;
}
public static String WQM10Query01(String ai_plp, String aoa_pslp) {
String qry = "SELECT wqm_ilp FROM wqm.wqm_soil_pest_interaction_leaching "
+ "WHERE wqm_plp='" + ai_plp + "' AND wqm_slp='" + aoa_pslp + "';";
return qry;
}
public static String WQM10Query02(String ai_psrp, String aoa_ssrp) {
String qry = "SELECT wqm_isrp FROM wqm.wqm_soil_pest_interaction_solution_runoff "
+ "WHERE wqm_psrp='" + ai_psrp + "' AND wqm_ssrp='" + aoa_ssrp + "';";
return qry;
}
public static String WQM10Query03(String ai_parp, String aoa_sarp) {
String qry = "SELECT wqm_iarp FROM wqm.wqm_soil_pest_interaction_adsorbed_runoff "
+ "WHERE wqm_parp='" + ai_parp + "' AND wqm_sarp='" + aoa_sarp + "';";
return qry;
}
public static String WQM11Query01(String op_pest_ilp_temp, String eat_rating_human_temp) {
String qry = "SELECT wqm_phr FROM wqm.wqm_pesticide_hazard_potential "
+ "WHERE wqm_ilr=" + op_pest_ilp_temp + " AND wqm_eat=" + eat_rating_human_temp;
return qry;
}
public static String WQM11Query02(String op_pest_isrp_temp, String eat_rating_human_temp) {
String qry = "SELECT wqm_phr FROM wqm.wqm_pesticide_hazard_potential "
+ "WHERE wqm_ilr=" + op_pest_isrp_temp + " AND wqm_eat=" + eat_rating_human_temp;
return qry;
}
public static String WQM11Query03(String op_pest_iarp_temp,
String eat_rating_human_temp) {
String qry = "SELECT wqm_phr FROM wqm.wqm_pesticide_hazard_potential "
+ "WHERE wqm_ilr=" + op_pest_iarp_temp + " AND wqm_eat=" + eat_rating_human_temp;
return qry;
}
public static String WQM11Query04(String op_pest_iarp_temp,
String eat_rating_stvfish_temp) {
String qry = "SELECT wqm_phr FROM wqm.wqm_pesticide_hazard_potential "
+ "WHERE wqm_ilr=" + op_pest_iarp_temp + " AND wqm_eat=" + eat_rating_stvfish_temp;
return qry;
}
public static String WQM11Query05(String op_pest_ilp_temp,
String eat_rating_matcfish_temp) {
String qry = "SELECT wqm_phr FROM wqm.wqm_pesticide_hazard_potential "
+ "WHERE wqm_ilr=" + op_pest_ilp_temp + " AND wqm_eat=" + eat_rating_matcfish_temp;
return qry;
}
public static String WQM11Query06(String op_pest_isrp_temp,
String eat_rating_matcfish_temp) {
String qry = "SELECT wqm_phr FROM wqm.wqm_pesticide_hazard_potential "
+ "WHERE wqm_ilr=" + op_pest_isrp_temp + " AND wqm_eat=" + eat_rating_matcfish_temp;
return qry;
}
public static String WQM12Query(String tPoints) {
String qry = "SELECT TOP 1 m.co_fips, r2_path, r2_name, r_factor, g.geometry "
+ " FROM r2gis.map_climates AS m, r2gis.cli_geom AS g WITH (Index(cli_geom_idx)) "
+ " WHERE g.geometry.STIntersects(geometry::STPolyFromText('POLYGON(("
+ tPoints + "))', 0))=1 AND ((g.co_fips = m.co_fips AND g.geometry.STIsValid()=1 "
+ " AND m.ei_rang is null) OR (g.co_fips = m.co_fips AND g.ei_rang = m.ei_rang "
+ " AND m.ei_rang IS NOT NULL AND g.geometry.STIsValid()=1)) AND g.geometry.STIsValid()=1 "
+ " AND geometry::STPolyFromText('POLYGON((" + tPoints + "))', 0).STIsValid()=1;";
return qry;
}
public static String WQM12Query02(String WKT) {
String qry = "SELECT TOP 1 m.co_fips, r2_path, r2_name, r_factor, g.geometry "
+ " FROM r2gis.map_climates AS m, r2gis.cli_geom AS g WITH (Index(cli_geom_idx)) "
+ " WHERE g.geometry.STIntersects(geometry::STGeomFromText('"
+ WKT + "', 0))=1 AND ((g.co_fips = m.co_fips AND g.geometry.STIsValid()=1 "
+ " AND m.ei_rang is null) OR (g.co_fips = m.co_fips AND g.ei_rang = m.ei_rang "
+ " AND m.ei_rang IS NOT NULL AND g.geometry.STIsValid()=1)) AND g.geometry.STIsValid()=1 "
+ " AND geometry::STGeomFromText('" + WKT + "', 0).STIsValid()=1 "
+ " ORDER BY r_factor;";
return qry;
}
public static String WQM12Query03(double[] centroid) {
String qry = "SELECT top 1 m.co_fips, r2_path, r2_name, r_factor, "
+ " CASE WHEN geography::STGeomFromText(geometry.STAsText(), 4326).MakeValid().EnvelopeAngle() > 90 "
+ " THEN geography::STGeomFromText(geometry.STAsText(), 4326).MakeValid().ReorientObject().STDistance( geography::STGeomFromText('POINT(" + centroid[1] + " " + centroid[0] + ")',4326)) / 1000.0 "
+ " ELSE geography::STGeomFromText(geometry.STAsText(), 4326).MakeValid().STDistance( geography::STGeomFromText('POINT(" + centroid[1] + " " + centroid[0] + ")', 4326))/ 1000.0 "
+ " END AS cliDistance "
+ " FROM r2gis.cli_geom as m"
+ " INNER JOIN r2gis.map_climates on m.co_fips=r2gis.map_climates.co_fips"
+ " WHERE "
+ " ID in( "
+ " SELECT top 15 ID "
+ " FROM r2gis.cli_geom "
+ " ORDER BY geometry.STDistance(geometry::STGeomFromText('POINT(" + centroid[1] + " " + centroid[0] + ")', 0)) asc"
+ " ) "
+ " AND ( (r2gis.map_climates.ei_rang is NULL) OR (r2gis.map_climates.ei_rang = m.ei_rang))"
+ " ORDER BY cliDistance asc, r_factor;";
return qry;
}
public static String WQM13Query01(String concern, String hazardRating, int rfactor, String treatmentLevel) {
String query = "SELECT threshold_treatment_score "
+ "FROM wqm.d_threshold_scores "
+ "WHERE wqm_concern = '" + concern
+ "' AND hazard_loss_rating = '" + hazardRating + "' "
+ (rfactor != -1 ? "AND rfact_range_min < " + rfactor + " AND rfact_range_max >= " + rfactor : "")
+ "AND treatment_level='" + treatmentLevel + "';";
return query;
}
public static String WQM14Query01(int techId, String concern, String action, String discrimType, String discrim) {
String query = "SELECT nut_tech_score "
+ "FROM wqm.d_nutrient_technique_scores "
+ "WHERE nutrient_technique_id = " + techId
+ " AND wqm_concern = '" + concern + "' "
+ (action != null ? " AND mode_of_action = '" + action + "' " : "")
+ "AND tech_discrim_type "
+ (discrimType != null ? "= '" + discrimType + "' " : "IS NULL ")
+ "AND tech_discrim "
+ (discrim != null ? "= '" + discrim + "';" : "IS NULL;");
return query;
}
public static String WQM15Query01(int practiceId, String concern, String actionMode, String discrimType, int discrimValue) {
String query = "SELECT nut_pract_score "
+ "FROM wqm.d_sediment_nutrient_practice_scores "
+ "WHERE practice_id = " + practiceId
+ " AND wqm_concern = '" + concern
+ "' AND mode_of_action = '" + actionMode
+ (discrimType == null ? "' AND pract_discrim_type IS NULL;" : "' AND CAST(min_pract_discrim AS int) <= "
+ discrimValue + " AND CAST(max_pract_discrim AS int) > " + discrimValue + ";");
return query;
}
public static String WQM16Query01(int cropId, String cropYieldUnits) {
String query = "SELECT crop.pct_dmat, crop.pct_nitrogen, crop.pct_phosphorus, type.name AS crop_type "
+ "FROM wqm.d_crop AS crop "
+ "INNER JOIN wqm.d_crop_type AS type ON type.id = crop.type_id "
+ "WHERE crop.id = '" + cropId + "'"
+ (cropYieldUnits != null ? " AND LOWER(crop.units) = '" + cropYieldUnits.toLowerCase() + "'" : "")
+ ";";
return query;
}
public static String WQM16Query02(String nutrient, String appMgtKind, String appMgtFactor,
String soilTestResult, Double removeRatio, Integer app_day_diff) {
String query = "SELECT app_mgt_score "
+ "FROM wqm.d_nutrient_application_mgt_scores "
+ "WHERE "
+ (appMgtKind != null ? "LOWER(app_mgt_kind) = '" + appMgtKind.toLowerCase() + "'" : "")
+ (nutrient != null ? " AND LOWER(nutrient) = '" + nutrient.toLowerCase() + "'" : "")
+ (appMgtFactor != null ? " AND LOWER(app_mgt_factor) = '" + appMgtFactor.toLowerCase() + "'" : "")
+ (soilTestResult != null ? " AND LOWER(soil_test_result) = '" + soilTestResult.toLowerCase() + "'" : "")
+ (removeRatio != null ? " AND remove_ratio_1 <= " + removeRatio + " AND remove_ratio_2 > " + removeRatio : "")
+ (app_day_diff != null ? " AND days_fr_plant_1 <= " + app_day_diff + " AND days_fr_plant_2 > " + app_day_diff : "")
+ ";";
return query;
}
public static String WQM17Query01(String ipmLevel, String concern) {
String query = "SELECT ipm_mitigation_score "
+ "FROM wqm.d_ipm_scores "
+ "WHERE ipm_level = '" + ipmLevel
+ "' AND wqm_concern = '" + concern + "';";
return query;
}
public static String WQM18Query01(int plan_ipm_technique, String concern) {
String query = "SELECT ipm_technique_score "
+ "FROM wqm.d_ipm_technique_scores "
+ "WHERE ipm_technique_id = " + plan_ipm_technique
+ " AND wqm_concern = '" + concern + "';";
return query;
}
public static String WQM19Query1(int ipm, String variant, String concern) {
String query = "SELECT ipm_practice_score "
+ "FROM wqm.d_ipm_practice_scores "
+ "WHERE wqm_concern = '" + concern
+ "' AND practice_id = " + ipm + (variant != null ? " AND practice_variant = '" + variant + "';" : ";");
return query;
}
public static String WQM22Query() {
String qry = "SELECT * FROM wqm.wqm_nutrient_technique_scores;";
return qry;
}
public static String WQM23Query() {
String qry = "SELECT * FROM wqm.wqm_sediment_nutrient_practice_scores";
return qry;
}
public static String WQM24Query() {
String qry = "SELECT * FROM wqm.wqm_ipm_scores";
return qry;
}
public static String WQM25Query() {
String qry = "SELECT * FROM wqm.wqm_ipm_technique_scores";
return qry;
}
public static String WQM26Query() {
String qry = "SELECT * FROM wqm.wqm_ipm_practice_scores";
return qry;
}
public static String WQM28Query(String stateCode) {
return "SELECT f.id, f.name, f.display_name, c.cost, p.placement, fo.nitrogen_pct, fo.phosphorus_pct, fo.potassium_pct, u.units "
+ "FROM fertilizer.d_cost AS c "
+ "JOIN fertilizer.d_cost_units AS u ON c.unit_id = u.id "
+ "JOIN fertilizer.d_fertilizer AS f ON c.fertilizer_id = f.id "
+ "JOIN fertilizer.d_formulation AS fo ON f.formulation_id = fo.id "
+ "JOIN fertilizer.d_placement AS p ON f.default_placement_id = p.id "
+ "WHERE region_id = (SELECT region_id FROM fertilizer.d_state_region WHERE fips = " + stateCode + ");";
}
public static String WQM29Query() {
return "SELECT * FROM fertilizer.d_placement";
}
}