Package mil.nga.giat.geowave.vector.adapter

Source Code of mil.nga.giat.geowave.vector.adapter.FeatureTimestampHandler

package mil.nga.giat.geowave.vector.adapter;

import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.type.AttributeDescriptor;

import mil.nga.giat.geowave.index.ByteArrayId;
import mil.nga.giat.geowave.store.TimeUtils;
import mil.nga.giat.geowave.store.adapter.IndexFieldHandler;
import mil.nga.giat.geowave.store.data.PersistentValue;
import mil.nga.giat.geowave.store.data.field.FieldVisibilityHandler;
import mil.nga.giat.geowave.store.dimension.Time;
import mil.nga.giat.geowave.store.dimension.Time.Timestamp;

/**
* This class handles the internal responsibility of persisting single timestamp
* instants based on a temporal attribute (a Java binding class of Date or
* Calendar for an attribute)to and from a GeoWave common index field for
* SimpleFeature data.
*
*/
public class FeatureTimestampHandler implements
    IndexFieldHandler<SimpleFeature, Time, Object>
{
  private final FeatureAttributeHandler nativeTimestampHandler;
  private final FieldVisibilityHandler<SimpleFeature, Object> visibilityHandler;

  public FeatureTimestampHandler(
      AttributeDescriptor timestampAttrDesc ) {
    this(
        timestampAttrDesc,
        null);
  }

  public FeatureTimestampHandler(
      AttributeDescriptor timestampAttrDesc,
      FieldVisibilityHandler<SimpleFeature, Object> visibilityHandler ) {
    this.nativeTimestampHandler = new FeatureAttributeHandler(
        timestampAttrDesc);
    this.visibilityHandler = visibilityHandler;
  }

  @Override
  public ByteArrayId[] getNativeFieldIds() {
    return new ByteArrayId[] {
      nativeTimestampHandler.getFieldId()
    };
  }

  @Override
  public Time toIndexValue(
      SimpleFeature row ) {
    Object object = nativeTimestampHandler.getFieldValue(row);
    byte[] visibility;
    if (visibilityHandler != null) {
      visibility = visibilityHandler.getVisibility(
          row,
          nativeTimestampHandler.getFieldId(),
          object);
    }
    else {
      visibility = new byte[] {};
    }
    return new Timestamp(
        TimeUtils.getTimeMillis(object),
        visibility);
  }

  @SuppressWarnings("unchecked")
  @Override
  public PersistentValue<Object>[] toNativeValues(
      Time indexValue ) {
    Class<?> bindingClass = nativeTimestampHandler.attrDesc.getType().getBinding();
    Object obj = TimeUtils.getTimeValue(
        bindingClass,
        (long) indexValue.toNumericData().getCentroid());
    return new PersistentValue[] {
      new PersistentValue<Object>(
          nativeTimestampHandler.getFieldId(),
          obj)
    };
  }
}
TOP

Related Classes of mil.nga.giat.geowave.vector.adapter.FeatureTimestampHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.