package datawave.ingest.mapreduce.handler.summary; import com.google.common.collect.Multimap; import datawave.ingest.data.RawRecordContainer; import datawave.ingest.data.Type; import datawave.ingest.data.TypeRegistry; import datawave.ingest.data.config.NormalizedContentInterface; import datawave.ingest.data.config.ingest.IngestHelperInterface; import datawave.ingest.mapreduce.handler.DataTypeHandler; import datawave.ingest.mapreduce.job.BulkIngestKey; import datawave.ingest.metadata.RawRecordMetadata; import datawave.webservice.common.logging.ThreadConfigurableLogger; import org.apache.accumulo.core.data.Value; import org.apache.accumulo.core.security.ColumnVisibility; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.mapreduce.StatusReporter; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.log4j.Logger; public abstract class CoreSummaryDataTypeHandler<KEYIN> implements DataTypeHandler<KEYIN> { private static final Logger log = ThreadConfigurableLogger.getLogger(CoreSummaryDataTypeHandler.class); private Configuration mConf = null; protected abstract Multimap<BulkIngestKey,Value> createEntries(RawRecordContainer record, Multimap<String,NormalizedContentInterface> fields, ColumnVisibility vis, long timestampe, IngestHelperInterface iHelper); @Override public void setup(TaskAttemptContext context) { Configuration conf = context.getConfiguration(); TypeRegistry.getInstance(conf); mConf = conf; } @Override public Multimap<BulkIngestKey,Value> processBulk(KEYIN key, RawRecordContainer record, Multimap<String,NormalizedContentInterface> fields, StatusReporter reporter) { IngestHelperInterface iHelper = this.getHelper(record.getDataType()); return createEntries(record, fields, getVisibility(), System.currentTimeMillis(), iHelper); } // Since this is a summary use null column visibility private ColumnVisibility getVisibility() { return null; } @Override public IngestHelperInterface getHelper(Type datatype) { return datatype.getIngestHelper(mConf); } @Override public void close(TaskAttemptContext context) { // do nothing } @Override public RawRecordMetadata getMetadata() { return null; // do nothing } }