Barrier.java [src/java/crlmod/nodes] Revision:   Date:
/*
 * $Id: 1.0+62 Barrier.java a170e1637ffa 2021-12-20 od $
 *
 * This file is part of the Cloud Services Integration Platform (CSIP),
 * a Model-as-a-Service framework, API, and application suite.
 *
 * 2012-2024, 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 crlmod.nodes;

import csip.SessionLogger;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;

/**
 *
 * @author User
 */
public class Barrier {

  private final String file_key;
  private String name;
  private String path;
  private String status;
  private String height;
  private String rows;
  private String porosity;
  private String width;
  private String wepsData;


  public Barrier(String fk) {
    file_key = fk;
  }


  public String getFile_key() {
    return file_key;
  }


  public String getName() {
    return name;
  }


  public String popPrev(Connection connection) throws SQLException {
    try (Statement statement = connection.createStatement()) {
      String query = "SELECT file_name, file_path,\n"
          + "CASE \n"
          + "WHEN published_date is not null THEN 'published' \n"
          + "WHEN approved_date is not null THEN 'approved' \n"
          + "WHEN imported_date is not null THEN 'pending' \n"
          + "END as status \n"
          + "FROM file_metadata \n"
          + "WHERE file_key = " + file_key + "\n"
          + "AND object_key = 'wbr'";

      try (ResultSet resultSet = statement.executeQuery(query)) {
        if (!resultSet.next()) {
          return "no barrier with file key " + file_key;
        }
        name = resultSet.getString("file_name");
        path = resultSet.getString("file_path");
        status = resultSet.getString("status");
      }
    }
    return null;
  }


  public String populate(Connection connection) throws SQLException {
    try (Statement statement = connection.createStatement()) {
      String query = "SELECT param_name,param_value \n"
          + "FROM file_data \n"
          + "WHERE param_name = 'WIND_BARRIER_HEIGHT' \n"
          + "AND file_key = " + file_key + "\n";
      try (ResultSet resultSet = statement.executeQuery(query)) {
        resultSet.next();
        String heightVal = resultSet.getString("param_value");
        //String[] heights = (String[]) heightVal.getArray();
        height = heightVal;
      }
      statement.clearBatch();

      //get rows
      query = "SELECT param_name,param_value \n"
          + "FROM file_data \n"
          + "WHERE param_name = 'WIND_BARRIER_NUM_ROWS' \n"
          + "AND file_key = " + file_key + "\n";;
      try (ResultSet resultSet = statement.executeQuery(query)) {
        resultSet.next();
        //Array rowVals = resultSet.getArray("param_value");
        //String[] rowsVal = (String[]) rowVals.getArray();
        //rows = rowsVal[0];
        rows = resultSet.getString("param_value");
      }
      statement.clearBatch();

      //get porosity
      query = "SELECT param_name,param_value \n"
          + "FROM file_data \n"
          + "WHERE param_name = 'WIND_BARRIER_POROSITY' \n"
          + "AND file_key = " + file_key + "\n";;
      try (ResultSet resultSet = statement.executeQuery(query)) {
        resultSet.next();
//        Array prosVals = resultSet.getArray("param_value");
//        String[] pros = (String[]) prosVals.getArray();
//        porosity = pros[0];
        porosity = resultSet.getString("param_value");
      }
      statement.clearBatch();

      //get width
      query = "SELECT param_name,param_value \n"
          + "FROM file_data \n"
          + "WHERE param_name = 'WIND_BARRIER_WIDTH' \n"
          + "AND file_key = " + file_key + "\n";;
      try (ResultSet resultSet = statement.executeQuery(query)) {
        resultSet.next();
        //Array widthVals = resultSet.getArray("param_value");
        //String[] widthVal = (String[]) widthVals.getArray();
        //width = widthVal[0];
        width = resultSet.getString("param_value");
      }
      statement.clearBatch();
    }

    return null;
  }


  public String getWepsData(Connection con, SessionLogger LOG) throws SQLException { // check database vars later
    try (Statement statement = con.createStatement()) {
      String query = "SELECT wepsdata \n"
          + "FROM file_metadata \n"
          + "WHERE file_key = " + file_key;

      try (ResultSet rs = statement.executeQuery(query)) {
        rs.next();
        wepsData = rs.getString("wepsdata");
      }
      if (wepsData == null) {
        wepsData = "";
        LOG.log(Level.WARNING, "No Weps data available for record: " + file_key);
      }
      return null;
    }
  }
}