package mil.nga.giat.geowave.analytic.extract; import java.util.Calendar; import java.util.Date; import mil.nga.giat.geowave.core.geotime.TimeUtils; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.type.AttributeDescriptor; /** * * A default implementation that averages all time attributes. * */ public class TimeDimensionExtractor extends SimpleFeatureGeometryExtractor implements DimensionExtractor<SimpleFeature> { private static final String[] TIME_NAME = new String[] { "time" }; @Override public double[] getDimensions( SimpleFeature anObject ) { double[] timeVal = new double[1]; double count = 0.0; for (AttributeDescriptor attr : anObject.getFeatureType().getAttributeDescriptors()) { if (TimeUtils.isTemporal(attr.getType().getClass())) { Object o = anObject.getAttribute(attr.getName()); count += 1.0; if (o instanceof Date) { timeVal[0] += ((Date) o).getTime(); } else if (o instanceof Calendar) { timeVal[0] += ((Calendar) o).getTime().getTime(); } } } if (count > 0) { timeVal[0] = timeVal[0] / count; } return timeVal; } @Override public String[] getDimensionNames() { return TIME_NAME; } }