// Update the next value time.
nextValueTime = time + 1000 * 60 * 60;
for (DataPointRT dp : dataPoints) {
PointValueTime pvt = dp.getPointValue();
if (pvt != null && pvt.getTime() >= time)
// This value is in the past. Ignore it.
continue;
EnvCanPointLocatorVO plvo = dp.getVO().getPointLocator();
if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.TEMP && !Double.isNaN(temp))
pvt = new PointValueTime(temp, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.DEW_POINT_TEMP
&& !Double.isNaN(dptemp))
pvt = new PointValueTime(dptemp, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.REL_HUM && !Double.isNaN(relhum))
pvt = new PointValueTime(relhum, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.WIND_DIR
&& !Double.isNaN(winddir))
pvt = new PointValueTime(winddir, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.WIND_SPEED
&& !Double.isNaN(windspd))
pvt = new PointValueTime(windspd, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.VISIBILITY
&& !Double.isNaN(visibility))
pvt = new PointValueTime(visibility, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.STN_PRESS
&& !Double.isNaN(stnpress))
pvt = new PointValueTime(stnpress, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.HUMIDEX && !Double.isNaN(humidex))
pvt = new PointValueTime(humidex, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.WIND_CHILL
&& !Double.isNaN(windchill))
pvt = new PointValueTime(windchill, time);
else if (plvo.getAttributeId() == EnvCanPointLocatorVO.Attributes.WEATHER && weather != null)
pvt = new PointValueTime(weather, time);
else
continue;
dp.updatePointValue(pvt);
}