Issue #1781 - Constrain the tabular TS query by time.

Change-Id: I648913c157585283cdc96793d18d36933589b3e9

Former-commit-id: afd0de8b5b [formerly 027807d7e4ac171498f267759a4e34f75e1e4d46]
Former-commit-id: 88e75f4a90
This commit is contained in:
Mike Duff 2013-03-25 16:03:18 -05:00
parent fc41aa82ca
commit b517ce9a9f

View file

@ -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");
}
@ -907,7 +913,8 @@ public class TimeSeriesDataManager extends HydroDataManager {
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")){
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
@ -915,8 +922,10 @@ public class TimeSeriesDataManager extends HydroDataManager {
}
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,15 +936,18 @@ 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")) {
if (dr.getTs().toUpperCase().startsWith("F")
|| dr.getTs().toUpperCase().startsWith("C")) {
probability = 0;
revision = 1;
}
@ -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("'" + productID + "', ");
sb.append("'"
+ HydroConstants.DATE_FORMAT.format(productTime)
sb.append("'" + HydroConstants.DATE_FORMAT.format(productTime)
+ "', ");
sb.append(qualityCode + ", ");
sb.append("'M', ");
@ -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()));
}