Issue #2197 cherry picking 2197 into 13.5

Change-Id: Ic4c5447a39923252b73930ac1577bf63258ae56f

Conflicts:

	cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/FFMPMonitor.java
	cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPDataGenerator.java
	cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPResource.java
	cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPResourceData.java
	edexOsgi/com.raytheon.uf.common.dataplugin.ffmp/src/com/raytheon/uf/common/dataplugin/ffmp/FFMPBasinData.java


Former-commit-id: 15405cab1b [formerly 0f66e6b3e5999f5f1f97b74b157838c598110cb2]
Former-commit-id: 63b2fe798a
This commit is contained in:
Nate Jensen 2013-08-13 12:27:02 -05:00
parent 761cb47f73
commit 3be446fca8
4 changed files with 59 additions and 17 deletions

View file

@ -715,7 +715,7 @@ public class FFMPMonitor extends ResourceMonitor {
FFMPRecord record = siteDataMap.get(siteKey).getSourceData(sourceName)
.getRecord();
if ((record != null) && (record.getBasinData().getBasins().size() > 0)) {
if ((record != null) && (record.getBasinData().hasAnyBasins())) {
SourceXML sourceXML = getSourceConfig().getSource(sourceName);

View file

@ -277,7 +277,7 @@ public class FFMPDataGenerator {
statusHandler.handle(Priority.PROBLEM,
"Couldn't create table row", e);
"Couldn't create table row", e);
}
}
}
@ -414,14 +414,14 @@ public class FFMPDataGenerator {
try {
if (rateRecord != null) {
rateBasin = rateRecord.getBasinData();
if (!rateBasin.getBasins().isEmpty()) {
if (rateBasin.hasAnyBasins()) {
field = FIELDS.RATE;
baseRec = rateRecord;
}
}
if (qpeRecord != null) {
qpeBasin = qpeRecord.getBasinData();
if (!qpeBasin.getBasins().isEmpty()) {
if (qpeBasin.hasAnyBasins()) {
field = FIELDS.QPE;
if (baseRec == null) {

View file

@ -32,6 +32,7 @@ import javax.xml.bind.annotation.XmlType;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import com.raytheon.uf.common.dataplugin.PluginDataObject;
@ -95,6 +96,12 @@ public class FFMPResourceData extends AbstractRequestableResourceData {
/** Performance log entry prefix */
private static final String prefix = "FFMP ResourceData:";
/** Number of hours back from the most recent time to load data for **/
private static final int HOURS_BACK = 24;
/** Number of hours a background data job should request data for **/
private static final int LOAD_INCREMENT = 1;
/** Performance logger */
private final IPerformanceStatusHandler perfLog = PerformanceStatus
.getHandler(prefix);
@ -227,14 +234,52 @@ public class FFMPResourceData extends AbstractRequestableResourceData {
initialJob.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
Date backgroundStartTime = new Date(mostRecentTime
.getTime() - (24 * TimeUtil.MILLIS_PER_HOUR));
BackgroundLoadJob backgroundJob = new BackgroundLoadJob(
"Background FFMP Load", FFMPResourceData.this,
backgroundStartTime, timeBack, onlyAllHuc);
backgroundJob.setPreloadAvailableUris(true);
backgroundJob.schedule();
// step back in time in increments and
// load the data in chunks all the way
// back to 24 hours
// before the current time
Date farthestBack = new Date(mostRecentTime.getTime()
- (HOURS_BACK * TimeUtil.MILLIS_PER_HOUR));
int hourBack = (int) configTimeFrame;
Date loadedUpTo = new Date(timeBack.getTime());
BackgroundLoadJob firstJob = null;
Job previousJob = null;
while (loadedUpTo.after(farthestBack)) {
Date startTime = new Date(
loadedUpTo.getTime()
- (LOAD_INCREMENT * TimeUtil.MILLIS_PER_HOUR));
hourBack += LOAD_INCREMENT;
if (startTime.before(farthestBack)) {
startTime = farthestBack;
hourBack = HOURS_BACK;
}
String jobName = "FFMP loading to hr " + hourBack;
if (previousJob == null) {
firstJob = new BackgroundLoadJob(jobName,
FFMPResourceData.this, startTime,
loadedUpTo, onlyAllHuc);
firstJob.setPreloadAvailableUris(true);
previousJob = firstJob;
} else {
final BackgroundLoadJob nextJob = new BackgroundLoadJob(
jobName, FFMPResourceData.this,
startTime, loadedUpTo, onlyAllHuc);
nextJob.setPreloadAvailableUris(true);
previousJob
.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(
IJobChangeEvent event) {
nextJob.schedule();
}
});
previousJob = nextJob;
}
loadedUpTo = startTime;
}
firstJob.schedule();
}
});
initialJob.schedule();

View file

@ -214,11 +214,11 @@ public class FFMPBasinData implements ISerializableObject {
* @return
*/
public float getAverageValue(ArrayList<Long> pfaf_ids, Date date) {
float tvalue = 0.0f;
int i = 0;
for (Long pfaf : pfaf_ids) {
FFMPBasin basin = getBasins().get(pfaf);
Map<Long, FFMPBasin> localBasins = getBasins();
for (long pfaf : pfaf_ids) {
FFMPBasin basin = localBasins.get(pfaf);
if (basin != null) {
tvalue += basin.getValue(date);
i++;
@ -295,7 +295,6 @@ public class FFMPBasinData implements ISerializableObject {
*/
public float getAccumAverageValue(List<Long> pfaf_ids, Date beforeDate,
Date afterDate, long expirationTime, boolean rate) {
float tvalue = 0.0f;
int i = 0;
Map<Long, FFMPBasin> localBasins = getBasins();
@ -321,7 +320,6 @@ public class FFMPBasinData implements ISerializableObject {
*/
public float getMaxValue(ArrayList<Long> pfaf_ids, Date beforeDate,
Date afterDate) {
float tvalue = 0.0f;
Map<Long, FFMPBasin> localBasins = getBasins();
for (Long pfaf : pfaf_ids) {
@ -690,7 +688,6 @@ public class FFMPBasinData implements ISerializableObject {
* @param times
*/
public void populate(List<Long> times) {
if (mapFactory == null) {
mapFactory = new BasinMapFactory<Date>(Collections.reverseOrder(),
getBasins().size());