V1_0.java [src/java/m/wqm/sednutpractscoresfull] Revision: a023ccd6d5134768e8cdbd5f548188ceb08ac82e  Date: Thu May 26 16:01:31 MDT 2016
package m.wqm.sednutpractscoresfull;

/**
 * @author anvesh
 */
import csip.ModelDataService;
import csip.ServiceException;
import csip.annotations.Resource;
import java.util.ArrayList;
import javax.ws.rs.Path;
import oms3.annotations.Description;
import oms3.annotations.Name;
import org.codehaus.jettison.json.JSONArray;
import csip.utils.JSONUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import org.codehaus.jettison.json.JSONException;
import wqm.utils.DBResources;
import static wqm.utils.DBResources.WQM_ID;

@Name("WQM-23: Sediment Nutrient Practice Scores")
@Description("This service returns all rows and columns from the wqm_sediment_nutrient_practice_scores table.")
@Path("m/sednutpractscoresfull/1.0")
@Resource(from = DBResources.class)

public class V1_0 extends ModelDataService {

    ArrayList<m.wqm.sednutpractscoresfull.V1_0.Result1> result1;

    @Override
    protected void doProcess() throws Exception {
        result1 = new ArrayList<>();
        try (Connection conn = getResourceJDBC(WQM_ID);
                Statement statement = conn.createStatement()) {
            String query = "SELECT * FROM wqm.wqm_sediment_nutrient_practice_scores";

            try (ResultSet results = statement.executeQuery(query)) {
                while (results.next()) {
                    int nut_pract_score = results.getInt("nut_pract_score");
                    int nutrient_practice_score_id = results.getInt("nutrient_practice_score_id");
                    int practice_id = results.getInt("practice_id");
                    String practice_code = results.getString("practice_code");
                    String conservation_practice = results.getString("conservation_practice");
                    String wqm_concern = results.getString("wqm_concern");
                    String mode_of_action = results.getString("mode_of_action");
                    String pract_discrim_type = results.getString("pract_discrim_type");
                    String min_pract_discrim = results.getString("min_pract_discrim");
                    String max_pract_discrim = results.getString("max_pract_discrim");

                    result1.add(new m.wqm.sednutpractscoresfull.V1_0.Result1(nut_pract_score,
                            nutrient_practice_score_id, practice_id, practice_code,
                            conservation_practice, wqm_concern, mode_of_action,
                            pract_discrim_type, min_pract_discrim, max_pract_discrim));

                }
            }

        } catch (SQLException se) {
            LOG.log(Level.SEVERE, "Did not open database for WQM-23!", se);
            throw new ServiceException("SQL problem", se);
        }

    }

    @Override
    //writing the results back to JSON
    protected void postProcess() throws Exception {
        try {
            JSONArray result1Arr = new JSONArray();
            for (m.wqm.sednutpractscoresfull.V1_0.Result1 rs1 : result1) {
                JSONArray tmpArr = new JSONArray();
                tmpArr.put(JSONUtils.dataDesc("nut_pract_score", rs1.nut_pract_score, "nut_pract_score"));
                tmpArr.put(JSONUtils.dataDesc("nutrient_practice_score_id", rs1.nutrient_practice_score_id, "nutrient_practice_score_id"));
                tmpArr.put(JSONUtils.dataDesc("practice_id", rs1.practice_id, "NRCS conservaton practice identifier (not the practice code)"));
                tmpArr.put(JSONUtils.dataDesc("practice_code", rs1.practice_code, "NRCS conservation practice code"));
                tmpArr.put(JSONUtils.dataDesc("conservation_practice", rs1.conservation_practice, "NRCS conservation practice name"));
                tmpArr.put(JSONUtils.dataDesc("wqm_concern", rs1.wqm_concern, "wqm_concern"));
                tmpArr.put(JSONUtils.dataDesc("mode_of_action", rs1.mode_of_action, "Mode of action of the nutrient technique"));
                tmpArr.put(JSONUtils.dataDesc("pract_discrim_type", rs1.pract_discrim_type, "Type of sediment nutrient mitigation practice discriminator"));
                tmpArr.put(JSONUtils.dataDesc("min_pract_discrim", rs1.min_pract_discrim, "Minimum mitigation practice discriminator value"));
                tmpArr.put(JSONUtils.dataDesc("max_pract_discrim", rs1.max_pract_discrim, "Maximum mitigation practice discriminator value"));
                result1Arr.put(JSONUtils.dataDesc("Nutrient Sediment practice Scores", tmpArr, "NutriSediPracScores"));
            }
            putResult("operation", result1Arr);
        } catch (JSONException ex) {
            LOG.log(Level.SEVERE, "Error in processing the response JSON for WQM-23!", ex);
            throw new ServiceException("Error in processing the response JSON.", ex);
        }
    }

    static class Result1 {

        int nut_pract_score;
        int nutrient_practice_score_id;
        int practice_id;
        String practice_code;
        String conservation_practice;
        String wqm_concern;
        String mode_of_action;
        String pract_discrim_type;
        String min_pract_discrim;
        String max_pract_discrim;

        public Result1(
                int nut_pract_score,
                int nutrient_practice_score_id,
                int practice_id,
                String practice_code,
                String conservation_practice,
                String wqm_concern,
                String mode_of_action,
                String pract_discrim_type,
                String min_pract_discrim,
                String max_pract_discrim) {
            this.nut_pract_score = nut_pract_score;
            this.nutrient_practice_score_id = nutrient_practice_score_id;
            this.practice_id = practice_id;
            this.practice_code = practice_code;
            this.conservation_practice = conservation_practice;
            this.wqm_concern = wqm_concern;
            this.mode_of_action = mode_of_action;
            this.pract_discrim_type = pract_discrim_type;
            this.min_pract_discrim = min_pract_discrim;
            this.max_pract_discrim = max_pract_discrim;

        }
    }

}