📄 stnchltablerow.java
字号:
package org.trinet.jdbc.table;
import org.trinet.jdbc.datatypes.*;
import org.trinet.jdbc.*;
import java.util.*;
/** Class to access and manipulate NCEDC Schema tables containing station channel observation data.
* Tables of this type have a single primary key column whose value is
* defined by an associated database integer sequence identifier.
* Station channel data is referenced to event summary data through association tables.
* @see Amp
* @see Arrival
* @see Coda
*/
public abstract class StnChlTableRow extends DataTableRow implements Cloneable {
/** Data string member defined by extending classes is name of primary key column of implementing table.
*/
protected String keyColumn = null;
/** Data string member defined by extending classes is name of origin id (orid) association table for primary key column.
*/
protected String assocTableOrigin = null;
/** Data string member defined by extending classes is name of netmag id (magid) association table for primary key column.
*/
protected String assocTableNetmag = null;
/** Constructor invokes DataTableRow constructor.
*/
protected StnChlTableRow(String tableName, String sequenceName, int maxFields, int [] keyColumnIndex,
String[] fieldNames, boolean [] fieldNulls, int[] fieldClassIds) {
super(tableName, sequenceName, maxFields, keyColumnIndex, fieldNames, fieldNulls, fieldClassIds);
}
/** Overrides DataTableRow.clone()
*/
public Object clone() {
StnChlTableRow obj = null;
obj = (StnChlTableRow) super.clone();
obj.keyColumn = new String (keyColumn);
obj.assocTableOrigin = new String (assocTableOrigin);
obj.assocTableNetmag = new String (assocTableNetmag);
return obj;
}
public static String toDateTimeConstraintSQLWhereClause(String tableName, java.util.Date startDate, java.util.Date endDate) {
if (startDate == null && endDate == null) return "";
String tableStr = "";
if (! NullValueDb.isEmpty(tableName)) tableStr = tableName + ".";
StringBuffer sb = new StringBuffer(128);
sb.append(" ( ");
if (startDate != null) {
sb.append(tableStr).append("DATETIME >= ").append(org.trinet.util.EpochTime.dateToEpoch(startDate));
if (endDate != null) sb.append(" AND ");
}
if (endDate != null) {
sb.append(tableStr).append("DATETIME <= ").append(org.trinet.util.EpochTime.dateToEpoch(endDate));
}
sb.append(" )");
return sb.toString();
}
// DataStnChl methods
/** Returns a DataStnChl object derived from the station channel data stored in this object instance, else returns null.
*/
public DataStnChl getDataStnChl() {
return new DataStnChl(
(DataString) fields.get(findFieldIndex("STA")),
(DataString) fields.get(findFieldIndex("NET")),
(DataString) fields.get(findFieldIndex("AUTH")),
(DataString) fields.get(findFieldIndex("SUBSOURCE")),
(DataString) fields.get(findFieldIndex("CHANNEL")),
(DataString) fields.get(findFieldIndex("CHANNELSRC")),
(DataString) fields.get(findFieldIndex("SEEDCHAN")),
(DataString) fields.get(findFieldIndex("LOCATION")));
}
/** Sets station channel data for this object instance to the DataObjects members of the input DataStnChl object;
* a null input results in a no-op.
*/
public void setDataStnChl(DataStnChl obj) {
if (obj == null) return;
fields.set(findFieldIndex("STA"), ((DataString) obj.getDataObject(DataStnChl.STA)).clone());
fields.set(findFieldIndex("NET"), ((DataString) obj.getDataObject(DataStnChl.NET)).clone());
fields.set(findFieldIndex("AUTH"), ((DataString) obj.getDataObject(DataStnChl.AUTH)).clone());
fields.set(findFieldIndex("SUBSOURCE"), ((DataString) obj.getDataObject(DataStnChl.SUBSOURCE)).clone());
fields.set(findFieldIndex("CHANNEL"), ((DataString) obj.getDataObject(DataStnChl.CHANNEL)).clone());
fields.set(findFieldIndex("CHANNELSRC"), ((DataString) obj.getDataObject(DataStnChl.CHANNELSRC)).clone());
fields.set(findFieldIndex("SEEDCHAN"), ((DataString) obj.getDataObject(DataStnChl.SEEDCHAN)).clone());
fields.set(findFieldIndex("LOCATION"), ((DataString) obj.getDataObject(DataStnChl.LOCATION)).clone());
}
/** Returns List object containing station channel DataObject fields for this object instance.
*/
public List getDataStnChlList() {
return fields.subList(findFieldIndex("STA"), findFieldIndex("LOCATION"));
}
/** Sets station data fields in this object instance to the values in input List; a null input results in a no-op.
*/
public void setDataStnChlList(List list) {
if (list == null) return;
fields.addAll(findFieldIndex("STA"), list);
}
// Database query methods
/** Returns table row count.
*/
public int getRowCount() {
return ExecuteSQL.getRowCount(connDB, getTableName());
}
/** Returns table row count corresponding to the specified input event id.
*/
public int getRowCountByEventId(long evid) {
String countString = "DISTINCT " + keyColumn;
String whereString = "WHERE " + keyColumn + " IN (SELECT " + keyColumn + " FROM " + assocTableOrigin
+ " WHERE ORID IN (SELECT ORID FROM ORIGIN WHERE EVID = " + evid + "))" ;
return ExecuteSQL.getRowCount(connDB, getTableName(), countString, whereString);
}
/** Returns table row count corresponding to the specified input origin id.
*/
public int getRowCountByOriginId(long orid) {
String countString = keyColumn;
String whereString = "WHERE " + keyColumn + " IN (SELECT " + keyColumn + " FROM " + assocTableOrigin
+ " WHERE ORID = " + orid + ")" ;
return ExecuteSQL.getRowCount(connDB, getTableName(), countString, whereString);
}
/** Returns table row count corresponding to the preferred origin id of the specified input event id.
*/
public int getRowCountByPreferredOriginId(long evid) {
String countString = keyColumn;
String whereString = "WHERE " + keyColumn + " IN (SELECT " + keyColumn + " FROM " + assocTableOrigin
+ " WHERE ORID = (SELECT PREFOR FROM EVENT WHERE EVID = " + evid + "))";
return ExecuteSQL.getRowCount(connDB, getTableName(), countString, whereString);
}
/** Returns table row count corresponding to the preferred netmag id of the specified input event id.
*/
public int getRowCountByPreferredMagId(long evid) {
if (assocTableNetmag == null) return -1;
String countString = keyColumn;
String whereString = "WHERE " + keyColumn + " IN (SELECT " + keyColumn + " FROM " + assocTableNetmag
+ " WHERE MAGID = (SELECT PREFMAG FROM EVENT WHERE EVID = " + evid + "))";
return ExecuteSQL.getRowCount(connDB, getTableName(), countString, whereString);
}
/** Returns an array where each element contains the data from a single table row parsed from an SQL query
* WHERE the DATETIME column is BETWEEN the specified input times and the SUBSOURCE column has the specified input value.
* A return value of null indicates no data or an error condition.
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -