V1_0.java [src/java/d/wqm/wqm29_getfertplacelist] Revision:   Date:
/*
 * $Id$
 *
 * This file is part of the Cloud Services Integration Platform (CSIP),
 * a Model-as-a-Service framework, API, and application suite.
 *
 * 2012-2017, OMSLab, Colorado State University.
 *
 * OMSLab licenses this file to you under the MIT license.
 * See the LICENSE file in the project root for more information.
 */
package d.wqm.wqm29_getfertplacelist;

import csip.ModelDataService;
import csip.api.server.ServiceException;
import csip.annotations.Polling;
import csip.annotations.Resource;
import java.sql.Connection;
import java.sql.SQLException;
import javax.ws.rs.Path;
import csip.annotations.Description;
import csip.annotations.Name;
import csip.utils.JSONUtils;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import wqm.utils.DBQueries;
import wqm.utils.DBResources;

/**
 * WQM-29: Fetch List of Fertilizer Placement Choices
 *
 * @version 1.0
 * @author RUMPAL SIDHU
 */
@Name("WQM-29: Fetch List of Fertilizer Placement Choices")
@Description("This service fetches a list of fertilizer placement choices")
@Path("d/wqm/getfertplacelist/1.0")
@Polling(first = 10000, next = 2000)
@Resource(from = DBResources.class)

public class V1_0 extends ModelDataService {

    private HashMap<Integer, String> fertilizerPlacement = new HashMap<>();

    @Override
    protected void doProcess() throws SQLException, ServiceException {
        try (Connection connection = resources().getJDBC(DBResources.SSURGO_ID);
                Statement statement = connection.createStatement();
                ResultSet resultSet = statement.executeQuery(DBQueries.WQM29Query())) {
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String placement = resultSet.getString("placement");
                fertilizerPlacement.put(id, placement);
            }
        }
    }

    @Override
    protected void postProcess() throws JSONException {
        JSONArray placementArray = new JSONArray();
        for (Integer id : fertilizerPlacement.keySet()) {
            JSONArray placementArr = new JSONArray();
            placementArr.put(JSONUtils.data("id", id));
            placementArr.put(JSONUtils.data("placement", fertilizerPlacement.get(id)));
            placementArray.put(placementArr);
        }
        results().put("Fertilizer Placement List", placementArray);
    }
}