Merge "Issue #1781 - Constrain the tabular TS query by time." into omaha_13.3.1

Former-commit-id: 74188d09ad [formerly 74188d09ad [formerly f0ed09e300f81dcf425df64aefcd33b670b7bdd5]]
Former-commit-id: d10f1c818d
Former-commit-id: a444924a18
This commit is contained in:
Lee Venable 2013-03-25 17:02:06 -05:00 committed by Gerrit Code Review
commit 78c361f7a8

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");
}
@ -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());