Package mil.nga.giat.geowave.vector

Source Code of mil.nga.giat.geowave.vector.AccumuloDataStatisticsStoreExt

package mil.nga.giat.geowave.vector;

import mil.nga.giat.geowave.accumulo.AccumuloOperations;
import mil.nga.giat.geowave.accumulo.metadata.AccumuloDataStatisticsStore;
import mil.nga.giat.geowave.accumulo.util.TransformerWriter;
import mil.nga.giat.geowave.accumulo.util.VisibilityTransformer;
import mil.nga.giat.geowave.index.ByteArrayId;

import org.apache.accumulo.core.client.IteratorSetting;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.hadoop.io.Text;
import org.apache.log4j.Logger;

/**
* This extension supports transforming the visibility of statistics associated
* with transactions.
*
*
*/
public class AccumuloDataStatisticsStoreExt extends
    AccumuloDataStatisticsStore
{

  private final static Logger LOGGER = Logger.getLogger(AccumuloDataStatisticsStoreExt.class);
  private AccumuloOperations accumuloOperations;

  public AccumuloDataStatisticsStoreExt(
      AccumuloOperations accumuloOperations ) {
    super(
        accumuloOperations);
    this.accumuloOperations = accumuloOperations;
  }

  public void transformVisibility(
      final ByteArrayId adapterId,
      final VisibilityTransformer visibilityTransformer,
      String... authorizations ) {
    Scanner scanner;

    try {
      scanner = createSortScanner(
          adapterId,
          authorizations);

      TransformerWriter writer = new TransformerWriter(
          scanner,
          getAccumuloTablename(),
          accumuloOperations,
          visibilityTransformer);
      writer.transform();
      scanner.close();
    }
    catch (TableNotFoundException e) {
      LOGGER.error(
          "Table not found during transaction commit: " + getAccumuloTablename(),
          e);
    }
  }

  private Scanner createSortScanner(
      final ByteArrayId adapterId,
      String... authorizations )
      throws TableNotFoundException {
    Scanner scanner = null;

    scanner = accumuloOperations.createScanner(
        getAccumuloTablename(),
        authorizations);

    final IteratorSetting[] settings = getScanSettings();
    if ((settings != null) && (settings.length > 0)) {
      for (final IteratorSetting setting : settings) {
        scanner.addScanIterator(setting);
      }
    }
    final String columnFamily = getAccumuloColumnFamily();
    final String columnQualifier = getAccumuloColumnQualifier(adapterId);
    scanner.fetchColumn(
        new Text(
            columnFamily),
        new Text(
            columnQualifier));

    // scanner.setRange(Range.);
    return scanner;
  }

}
TOP

Related Classes of mil.nga.giat.geowave.vector.AccumuloDataStatisticsStoreExt

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.