Issue #2636 - Calculate a data set availability delay for each dataset.

Former-commit-id: 45a03a53f2 [formerly a4036f49a9] [formerly f04e249e23] [formerly fb96084864 [formerly f04e249e23 [formerly 6c5fd79bd2a74422053b064d968de3ca440ecec1]]]
Former-commit-id: fb96084864
Former-commit-id: 28e5e91b2b34593ef9a8e79035bf1fe26f2f0456 [formerly a72fa70992]
Former-commit-id: 01a48c9f17
This commit is contained in:
Mike Duff 2013-12-18 14:52:11 -06:00
parent 68909c095c
commit 6c88d89368
2 changed files with 41 additions and 1 deletions

View file

@ -40,6 +40,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Aug 22, 2012 0743 djohnson Store data type as an enum.
* Sep 07, 2012 1102 djohnson Remove invalid {@code @XmlRootElement}.
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Dec 18, 2013 2636 mpduff Add a data availability delay for the dataset.
*
* </pre>
*
@ -49,7 +50,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
@RegistryObject({ "providerName", "collectionName", "dataSetName" })
public abstract class DataSet<T extends Time, C extends Coverage>{
public abstract class DataSet<T extends Time, C extends Coverage> {
@RegistryObjectOwner
@XmlAttribute
@ -94,6 +95,11 @@ public abstract class DataSet<T extends Time, C extends Coverage>{
@SlotAttributeConverter(TimeSlotConverter.class)
protected T time;
@XmlElement
@DynamicSerializeElement
@SlotAttribute
protected int availabilityDelay;
public Map<String, Parameter> getParameters() {
return parameters;
}
@ -157,6 +163,21 @@ public abstract class DataSet<T extends Time, C extends Coverage>{
*/
public abstract ServiceType getServiceType();
/**
* @return the availabilityDelay
*/
public int getAvailabilityDelay() {
return availabilityDelay;
}
/**
* @param availabilityDelay
* the availabilityDelay to set
*/
public void setAvailabilityDelay(int availabilityDelay) {
this.availabilityDelay = availabilityDelay;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof DataSet) {

View file

@ -56,6 +56,7 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.time.util.ImmutableDate;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.uf.common.util.CollectionUtil;
import com.raytheon.uf.common.util.GridUtil;
import com.raytheon.uf.edex.datadelivery.retrieval.Link;
@ -93,6 +94,7 @@ import dods.dap.DAS;
* Jan 24, 2013 1527 dhladky Changed 0DEG to FRZ
* Sept 25, 2013 1797 dhladky separated time from gridded time
* Oct 10, 2013 1797 bgonzale Refactored registry Time objects.
* Dec 18, 2013 2636 mpduff Calculate a data availability delay for the dataset.
*
* </pre>
*
@ -259,6 +261,23 @@ class OpenDAPMetaDataParser extends MetaDataParser {
time.setStepUnit(Time.findStepUnit(step.get(1))
.getDurationUnit());
gdsmd.setTime(time);
// Calculate dataset availability delay
long startMillis = time.getStart().getTime();
long now = TimeUtil.newGmtCalendar().getTimeInMillis();
long delay = (now - startMillis) / TimeUtil.MILLIS_PER_MINUTE;
// There were some models where the availability delay was
// negative
dataSet.setAvailabilityDelay(Math.max(0, (int) delay));
if (statusHandler.isPriorityEnabled(Priority.DEBUG)) {
statusHandler.debug("Dataset Name: "
+ dataSet.getDataSetName());
statusHandler.debug("StartTime: " + time.getStart());
statusHandler.debug("Delay: "
+ dataSet.getAvailabilityDelay());
}
} catch (Exception le) {
logParsingException(timecon, "Time", collectionName, url);
}