V1_0.java [src/java/m/rhem/rhem04_surfacetextureclasses] Revision: b4532614e56521e407dbd03a73779498a8516f23  Date: Wed Dec 29 18:55:25 MST 2021
/*
 * $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 m.rhem.rhem04_surfacetextureclasses;

import csip.ModelDataService;
import csip.api.server.ServiceException;
import csip.annotations.Polling;
import csip.annotations.Resource;
import csip.utils.JSONUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Path;
import csip.annotations.Description;
import csip.annotations.Name;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import m.rhem.DBResources;
import static m.rhem.DBResources.CRDB;

/**
 * RHEM-04: Get RHEM Surface Texture Classes Choice List
 *
 * @version 1.0
 * @author rumpal
 */
@Name("RHEM-04: Get RHEM Surface Texture Classes Choice List.")
@Description("Get and return a list of RHEM surface soil texture classes.")
@Path("m/rhem/getsurftexclasses/1.0")
@Polling(first = 10000, next = 2000)
@Resource(from = DBResources.class)
public class V1_0 extends ModelDataService {

  List<ChoiceList> choiceList = new ArrayList<>();


  @Override
  public void doProcess() throws Exception {
    try (Connection connection = resources().getJDBC(CRDB);
        Statement statement = connection.createStatement()) {
      try (ResultSet resultSet = statement.executeQuery(DBResources.RHEM04Query01())) {
        while (resultSet.next()) {
          int id = resultSet.getInt("text_id");
          String dataTextEntry = resultSet.getString("text_abreviation");
          String label = resultSet.getString("text_label");
          choiceList.add(new ChoiceList(id, "texture class", id, dataTextEntry, label));
        }
      }
    }
  }


  @Override
  public void postProcess() throws Exception {
    JSONArray resultArr = new JSONArray();
    for (ChoiceList list : choiceList) {
      JSONArray choiceListArr = new JSONArray()
          .put(JSONUtils.dataDesc("choice_id", list.getChoiceId(), "Choice Identifier"))
          .put(JSONUtils.dataDesc("choice_kind", list.getChoiceKind(), "Choice Kind"))
          .put(JSONUtils.dataDesc("choice_sequence", list.getChoiceSequence(), "Choice Sequence"))
          .put(JSONUtils.dataDesc("choice_data_entry_text", list.getChoiceDataEntryText(), "Choice Data Text Entry"))
          .put(JSONUtils.dataDesc("choice_label", list.getChoiceLabel(), "Choice Label"));
      resultArr.put(JSONUtils.dataDesc("surface_texture_classes", choiceListArr, "Surface Texture Classes Choice List"));
    }
    results().put("choice_lists", resultArr, "List");
  }

  static class ChoiceList {

    int id;
    String kind;
    int sequence;
    String dataEntryText;
    String label;


    public ChoiceList(int id, String kind, int sequence,
        String dataEntryText, String label) {
      this.id = id;
      this.kind = kind;
      this.sequence = sequence;
      this.dataEntryText = dataEntryText;
      this.label = label;
    }


    public int getChoiceId() {
      return id;
    }


    public String getChoiceKind() {
      return kind;
    }


    public int getChoiceSequence() {
      return sequence;
    }


    public String getChoiceDataEntryText() {
      return dataEntryText;
    }


    public String getChoiceLabel() {
      return label;
    }
  }
}