package org.opencb.opencga.storage.hadoop.variant;
import com.google.common.collect.BiMap;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.Mapper;
import org.opencb.opencga.storage.core.metadata.StudyConfiguration;
import org.opencb.opencga.storage.hadoop.variant.converters.HBaseToVariantConverter;
import org.opencb.opencga.storage.hadoop.variant.index.VariantTableHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
/**
* Created by mh719 on 22/12/2016.
*/
public class AbstractPhoenisMapReduce<PHOENIXIN, KEYOUT, VALUEOUT> extends Mapper<NullWritable, PHOENIXIN, KEYOUT, VALUEOUT> {
private Logger LOG = LoggerFactory.getLogger(this.getClass());
private final AtomicReference<OpencgaMapReduceHelper> mrHelper = new AtomicReference<>();
@Override
protected void setup(Context context) throws IOException, InterruptedException {
super.setup(context);
mrHelper.set(new OpencgaMapReduceHelper(context));
}
@Override
protected void cleanup(Context context) throws IOException, InterruptedException {
super.cleanup(context);
getMrHelper().cleanup();
}
public Logger getLog() {
return LOG;
}
public OpencgaMapReduceHelper getMrHelper() {
return mrHelper.get();
}
public VariantTableHelper getHelper() {
return getMrHelper().getHelper();
}
public long getTimestamp() {
return getMrHelper().getTimestamp();
}
public void setTimestamp(long timestamp) {
getMrHelper().setTimestamp(timestamp);
}
public BiMap<String, Integer> getIndexedSamples() {
return getMrHelper().getIndexedSamples();
}
public void setIndexedSamples(BiMap<String, Integer> indexedSamples) {
getMrHelper().setIndexedSamples(indexedSamples);
}
public StudyConfiguration getStudyConfiguration() {
return getMrHelper().getStudyConfiguration();
}
public void setStudyConfiguration(StudyConfiguration studyConfiguration) {
getMrHelper().setStudyConfiguration(studyConfiguration);
}
public HBaseToVariantConverter getHbaseToVariantConverter() {
return getMrHelper().getHbaseToVariantConverter();
}
public void setHbaseToVariantConverter(HBaseToVariantConverter hbaseToVariantConverter) {
getMrHelper().setHbaseToVariantConverter(hbaseToVariantConverter);
}
public void startTime() {
getMrHelper().startTime();
}
public void endTime(String name) {
getMrHelper().endTime(name);
}
public Map<String, Long> getTimes() {
return getMrHelper().getTimes();
}
}