Strip.java [src/java/crlmod/nodes] Revision: Date:
/*
* $Id: 1.0+62 Strip.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 java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import crlmod.utils.NodeTranslator;
import static crlmod.utils.Utils.isNumeric;
import org.w3c.dom.Document;
/**
*
* @author User
*/
public class Strip {
public final String file_key;
public String name;
public String path;
public String owner;
public String password;
public String status;
public String date;
public String r2Data;
public String scienceVersion;
public int BarrierNumStrips;
public String BarrierAtBottom;
public String BarrierForWQ;
public String BarrierManagement;
public String BarrierRotYearsOffset;
public String BarrierRotYearsOffsetMethod;
public String BarrierSpecWidth;
public String BarrierSystemDescription;
public String BarrierType;
public String BarrierWidthAbs;
public String BarrierWidthRel;
public Strip(String fk) {
file_key = fk;
}
public Strip(String file_key, String name, String path, String date, String owner, String password) {
this.file_key = file_key;
this.name = name;
this.path = path;
this.date = date;
this.owner = owner;
this.password = password;
}
public String getFile_key() {
return file_key;
}
public String getName() {
return name;
}
public String getPath() {
return path;
}
public String getOwner() {
return owner;
}
public String getDate() {
return date;
}
public String getPassword() {
return password;
}
public String getR2Data() {
return r2Data;
}
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 = 'sbs'";
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;
//get science version
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'RUSLE2:SCIENCEVERSION' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
scienceVersion = resultSet.getString("param_value");
}
}
statement.clearBatch();
//get height
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'NUM_STRIPS_BARRIERS' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
String str_num_strips = resultSet.getString("param_value");
if (!str_num_strips.isEmpty() && isNumeric(str_num_strips)) {
BarrierNumStrips = Integer.parseInt(str_num_strips);
}
} else {
BarrierNumStrips = -1;
}
}
statement.clearBatch();
//get rows
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_AT_BOTTOM' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierAtBottom = resultSet.getString("param_value");
}
}
statement.clearBatch();
//get porosity
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_FOR_WQ' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierForWQ = resultSet.getString("param_value");
}
}
statement.clearBatch();
//get width
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_MANAGEMENT' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierManagement = resultSet.getString("param_value");
}
}
statement.clearBatch();
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_ROT_YRS_OFFSET' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierRotYearsOffset = resultSet.getString("param_value");
}
}
statement.clearBatch();
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_ROT_YRS_OFFSET_METHOD' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierRotYearsOffsetMethod = resultSet.getString("param_value");
}
}
statement.clearBatch();
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_SPEC_WIDTH' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierSpecWidth = resultSet.getString("param_value");
}
}
statement.clearBatch();
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_SYSTEM_DESCRIP' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierSystemDescription = resultSet.getString("param_value");
}
}
statement.clearBatch();
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_TYPE' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierType = resultSet.getString("param_value");
}
}
statement.clearBatch();
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_WIDTH_ABS' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierWidthAbs = resultSet.getString("param_value");
}
}
statement.clearBatch();
query = "SELECT param_name,param_value \n"
+ "FROM file_data \n"
+ "WHERE param_name = 'STRIP_BARRIER_WIDTH_REL' \n"
+ "AND file_key = " + file_key + "\n";
try (ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
BarrierWidthRel = resultSet.getString("param_value");
}
}
statement.clearBatch();
}
return null;
}
public String getStripData(boolean r2) throws ParserConfigurationException {
String error = null;
if (r2) {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// root elements
Document doc = docBuilder.newDocument();
error = NodeTranslator.getStripR2XML(this, doc);
if (error != null) {
return error;
}
r2Data = crlmod.utils.Utils.getStringFromDocument(doc);
}
return null;
}
}