Merge "Issue #1781 - Constrain the tabular TS query by time." into omaha_13.3.1
Former-commit-id:74188d09ad
[formerly74188d09ad
[formerly f0ed09e300f81dcf425df64aefcd33b670b7bdd5]] Former-commit-id:d10f1c818d
Former-commit-id:a444924a18
This commit is contained in:
commit
78c361f7a8
1 changed files with 1332 additions and 1320 deletions
|
@ -70,6 +70,7 @@ import com.raytheon.viz.hydrocommon.util.DbUtils;
|
|||
* July 25 2011 10082 djingtao modify edit()
|
||||
* May 30 2012 14967 wkwock overload insertRejectedData method
|
||||
* Feb 22 2013 14676 lbousaidi check when producttime is null
|
||||
* Mar 25, 2013 1781 mpduff Constrain time series table query with a start time.
|
||||
* </pre>
|
||||
*
|
||||
* @author dhladky
|
||||
|
@ -234,7 +235,7 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
public List<SiteInfo> getTabularPEData(String lid) throws VizException {
|
||||
StringBuilder sql = new StringBuilder("select ");
|
||||
sql.append("lid, pe, dur, ts, extremum from Ingestfilter ");
|
||||
sql.append("where lid = '" + lid + "' and ingest = 'T' ");
|
||||
sql.append("where lid = '").append(lid).append("' and ingest = 'T' ");
|
||||
sql.append("order by pe, dur, ts, extremum asc");
|
||||
|
||||
ArrayList<Object[]> results = (ArrayList<Object[]>) DirectDbQuery
|
||||
|
@ -337,14 +338,15 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
* @throws ClassNotFoundException
|
||||
*/
|
||||
public ArrayList<Object[]> getGraphData(String tablename, String lid,
|
||||
String pe, String ts, String dur, String extremum, Date startTime, Date endTime)
|
||||
throws VizException, ClassNotFoundException {
|
||||
String pe, String ts, String dur, String extremum, Date startTime,
|
||||
Date endTime) throws VizException, ClassNotFoundException {
|
||||
|
||||
StringBuilder graphQuery = new StringBuilder(
|
||||
"select lid,obstime,value,product_id from ");
|
||||
graphQuery.append(tablename + " where lid = '" + lid + "' and pe = '"
|
||||
+ pe + "' " + "and dur = '" + dur + "' ");
|
||||
graphQuery.append("and ts = '" + ts + "' and extremum = '" + extremum.toUpperCase() + "' and obstime ");
|
||||
graphQuery.append("and ts = '" + ts + "' and extremum = '"
|
||||
+ extremum.toUpperCase() + "' and obstime ");
|
||||
graphQuery.append("between '"
|
||||
+ HydroConstants.DATE_FORMAT.format(startTime) + "' ");
|
||||
graphQuery.append("and '" + HydroConstants.DATE_FORMAT.format(endTime)
|
||||
|
@ -507,27 +509,31 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
sql.append("lid, validtime, value, revision, shef_qual_code, ");
|
||||
sql.append("quality_code, product_id, producttime, postingtime, ");
|
||||
sql.append("basistime, probability ");
|
||||
sql.append("from " + tablename);
|
||||
sql.append(" where lid = '" + lid + "'");
|
||||
sql.append(" and pe = '" + pe + "'");
|
||||
sql.append(" and ts = '" + ts + "'");
|
||||
sql.append(" and dur = " + dur);
|
||||
sql.append(" and extremum = '" + ext + "'");
|
||||
sql.append(" and validtime > '" + dateFormat.format(startTime)
|
||||
+ "'");
|
||||
sql.append(" and validtime < '" + dateFormat.format(endTime) + "'");
|
||||
sql.append(" and basistime = '" + basisTime + "'");
|
||||
sql.append("from ").append(tablename);
|
||||
sql.append(" where lid = '").append(lid).append("'");
|
||||
sql.append(" and pe = '").append(pe).append("'");
|
||||
sql.append(" and ts = '").append(ts).append("'");
|
||||
sql.append(" and dur = ").append(dur);
|
||||
sql.append(" and extremum = '").append(ext).append("'");
|
||||
sql.append(" and validtime > '")
|
||||
.append(dateFormat.format(startTime)).append("'");
|
||||
sql.append(" and validtime < '").append(dateFormat.format(endTime))
|
||||
.append("'");
|
||||
sql.append(" and basistime = '").append(basisTime).append("'");
|
||||
sql.append(" order by validtime desc");
|
||||
} else {
|
||||
sql.append("lid, obstime, value, revision, shef_qual_code, ");
|
||||
sql.append("quality_code, product_id, producttime, postingtime ");
|
||||
sql.append("from " + tablename);
|
||||
sql.append(" where lid = '" + lid + "'");
|
||||
sql.append(" and pe = '" + pe + "'");
|
||||
sql.append(" and ts = '" + ts + "'");
|
||||
sql.append(" and dur = " + dur);
|
||||
sql.append(" and extremum = '" + ext + "'");
|
||||
sql.append(" and obstime < '" + dateFormat.format(endTime) + "'");
|
||||
sql.append("from ").append(tablename);
|
||||
sql.append(" where lid = '").append(lid).append("'");
|
||||
sql.append(" and pe = '").append(pe).append("'");
|
||||
sql.append(" and ts = '").append(ts).append("'");
|
||||
sql.append(" and dur = ").append(dur);
|
||||
sql.append(" and extremum = '").append(ext).append("'");
|
||||
sql.append(" and obstime > '").append(dateFormat.format(startTime))
|
||||
.append("'");
|
||||
sql.append(" and obstime < '").append(dateFormat.format(endTime))
|
||||
.append("'");
|
||||
sql.append(" order by obstime desc");
|
||||
}
|
||||
|
||||
|
@ -898,25 +904,28 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
HydroConstants.IHFS, QueryLanguage.SQL);
|
||||
}
|
||||
|
||||
private Object getDataFromDB (ForecastData dr, String field) {
|
||||
StringBuilder sql = new StringBuilder("select "+field+" from ");
|
||||
private Object getDataFromDB(ForecastData dr, String field) {
|
||||
StringBuilder sql = new StringBuilder("select " + field + " from ");
|
||||
String tablename = DbUtils.getTableName(dr.getPe(), dr.getTs());
|
||||
sql.append(tablename + " where ");
|
||||
sql.append("lid = '" + dr.getLid() + "' ");
|
||||
sql.append("and pe = '" + dr.getPe().toUpperCase() + "' ");
|
||||
sql.append("and dur =" +dr.getDur()+" ");
|
||||
sql.append("and ts = '"+dr.getTs().toUpperCase()+"' ");
|
||||
sql.append("and extremum = '" +dr.getExtremum().toUpperCase()+"' ");
|
||||
if (dr.getTs().toUpperCase().startsWith("F") || dr.getTs().toUpperCase().startsWith("C")){
|
||||
sql.append("and validtime = '"+dr.getValidTime()+"' ");
|
||||
sql.append("and basistime = '"+dr.getBasisTime()+"';");
|
||||
}else {//obs data
|
||||
sql.append("and obstime = '"+dr.getObsTime()+"';");
|
||||
sql.append("and dur =" + dr.getDur() + " ");
|
||||
sql.append("and ts = '" + dr.getTs().toUpperCase() + "' ");
|
||||
sql.append("and extremum = '" + dr.getExtremum().toUpperCase() + "' ");
|
||||
if (dr.getTs().toUpperCase().startsWith("F")
|
||||
|| dr.getTs().toUpperCase().startsWith("C")) {
|
||||
sql.append("and validtime = '" + dr.getValidTime() + "' ");
|
||||
sql.append("and basistime = '" + dr.getBasisTime() + "';");
|
||||
} else {// obs data
|
||||
sql.append("and obstime = '" + dr.getObsTime() + "';");
|
||||
}
|
||||
List<Object[]> sqlResult;
|
||||
try {
|
||||
sqlResult = (DirectDbQuery.executeQuery(sql.toString(), HydroConstants.IHFS, QueryLanguage.SQL));
|
||||
if (sqlResult !=null && sqlResult.size()>0 && sqlResult.get(0)[0]!=null) {
|
||||
sqlResult = (DirectDbQuery.executeQuery(sql.toString(),
|
||||
HydroConstants.IHFS, QueryLanguage.SQL));
|
||||
if (sqlResult != null && sqlResult.size() > 0
|
||||
&& sqlResult.get(0)[0] != null) {
|
||||
return sqlResult.get(0)[0];
|
||||
}
|
||||
} catch (VizException e) {
|
||||
|
@ -927,32 +936,35 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
return null;
|
||||
}
|
||||
|
||||
public int insertRejectedData(List<ForecastData> deleteList) throws VizException {
|
||||
public int insertRejectedData(List<ForecastData> deleteList)
|
||||
throws VizException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
Date currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTime();
|
||||
Date currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT"))
|
||||
.getTime();
|
||||
for (ForecastData dr : deleteList) {
|
||||
|
||||
int probability=-1;
|
||||
int revision=0;
|
||||
if (dr.getTs().toUpperCase().startsWith("F") || dr.getTs().toUpperCase().startsWith("C")) {
|
||||
probability=0;
|
||||
revision=1;
|
||||
int probability = -1;
|
||||
int revision = 0;
|
||||
if (dr.getTs().toUpperCase().startsWith("F")
|
||||
|| dr.getTs().toUpperCase().startsWith("C")) {
|
||||
probability = 0;
|
||||
revision = 1;
|
||||
}
|
||||
|
||||
Date productTime=dr.getProductTime();
|
||||
if (productTime==null) {
|
||||
productTime=(Date)getDataFromDB(dr,"producttime");
|
||||
Date productTime = dr.getProductTime();
|
||||
if (productTime == null) {
|
||||
productTime = (Date) getDataFromDB(dr, "producttime");
|
||||
}
|
||||
|
||||
String productID=(String)getDataFromDB(dr,"product_id");
|
||||
if (productID==null) {
|
||||
productID=dr.getProductID();
|
||||
String productID = (String) getDataFromDB(dr, "product_id");
|
||||
if (productID == null) {
|
||||
productID = dr.getProductID();
|
||||
}
|
||||
|
||||
Integer qualityCode=(Integer)getDataFromDB(dr,"quality_code");
|
||||
if (qualityCode==null) {
|
||||
qualityCode=new Integer(dr.getQualityCode());
|
||||
Integer qualityCode = (Integer) getDataFromDB(dr, "quality_code");
|
||||
if (qualityCode == null) {
|
||||
qualityCode = new Integer(dr.getQualityCode());
|
||||
}
|
||||
|
||||
sb.append("insert into rejecteddata(lid, pe, dur, ts, extremum, ");
|
||||
|
@ -979,21 +991,20 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
}
|
||||
|
||||
if (dr.getBasisTime() != null) {
|
||||
sb.append("'"
|
||||
+ (dr.getBasisTime()) + "', ");
|
||||
sb.append("'" + (dr.getBasisTime()) + "', ");
|
||||
} else {
|
||||
sb.append("'"
|
||||
+ (HydroConstants.DATE_FORMAT.format(dr.getObsTime()))
|
||||
+ "', ");
|
||||
}
|
||||
|
||||
sb.append("'" + HydroConstants.DATE_FORMAT.format(currentTime) + "', ");
|
||||
sb.append("'" + HydroConstants.DATE_FORMAT.format(currentTime)
|
||||
+ "', ");
|
||||
sb.append(dr.getValue() + ", ");
|
||||
sb.append(revision + ", ");
|
||||
sb.append("'M', ");//shef_qual_code always M
|
||||
sb.append("'M', ");// shef_qual_code always M
|
||||
sb.append("'" + productID + "', ");
|
||||
sb.append("'"
|
||||
+ HydroConstants.DATE_FORMAT.format(productTime)
|
||||
sb.append("'" + HydroConstants.DATE_FORMAT.format(productTime)
|
||||
+ "', ");
|
||||
sb.append(qualityCode + ", ");
|
||||
sb.append("'M', ");
|
||||
|
@ -1035,9 +1046,9 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
StringBuilder sql = new StringBuilder("delete from ");
|
||||
sql.append(tablename + " where ");
|
||||
sql.append("lid = '" + data.getLid() + "' ");
|
||||
sql.append("and pe = '"+data.getPe().toUpperCase()+"' ");
|
||||
sql.append("and pe = '" + data.getPe().toUpperCase() + "' ");
|
||||
sql.append("and dur = " + data.getDur() + " ");
|
||||
sql.append("and ts = '"+data.getTs().toUpperCase()+"' ");
|
||||
sql.append("and ts = '" + data.getTs().toUpperCase() + "' ");
|
||||
sql.append("and extremum = '" + data.getExtremum().toUpperCase()
|
||||
+ "' ");
|
||||
|
||||
|
@ -1158,7 +1169,8 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
sql.addDouble("value", data.getValue());
|
||||
sql.addString("postingTime", HydroConstants.DATE_FORMAT.format(now));
|
||||
if (data.getProductTime() == null) {
|
||||
sql.addString("producttime",
|
||||
sql.addString(
|
||||
"producttime",
|
||||
HydroConstants.DATE_FORMAT.format(Calendar.getInstance(
|
||||
TimeZone.getTimeZone("GMT")).getTime()));
|
||||
}
|
||||
|
@ -1183,9 +1195,9 @@ public class TimeSeriesDataManager extends HydroDataManager {
|
|||
|
||||
if (data.getValue() == HydroConstants.MISSING_VALUE) {
|
||||
DataRecord dr = new DataRecord();
|
||||
Date productTime=data.getProductTime();
|
||||
if (productTime==null) {
|
||||
productTime= now;
|
||||
Date productTime = data.getProductTime();
|
||||
if (productTime == null) {
|
||||
productTime = now;
|
||||
}
|
||||
|
||||
dr.setDur(data.getDur());
|
||||
|
|
Loading…
Add table
Reference in a new issue