package org.wikipedia.miner.extract.steps.pageDepth;
import java.io.IOException;
import org.apache.avro.mapred.AvroCollector;
import org.apache.avro.mapred.AvroMapper;
import org.apache.avro.mapred.Pair;
import org.apache.hadoop.mapred.Reporter;
import org.wikipedia.miner.extract.model.struct.PageDepthSummary;
public class SubsequentDepthMapper extends AvroMapper<Pair<Integer, PageDepthSummary>, Pair<Integer, PageDepthSummary>> {
@Override
public void map(Pair<Integer, PageDepthSummary> pair,
AvroCollector<Pair<Integer, PageDepthSummary>> collector,
Reporter reporter) throws IOException {
Integer id = pair.key() ;
PageDepthSummary depthSummary = pair.value() ;
if (depthSummary.getDepthForwarded()) {
//if we have already processed this in previous iterations, just pass it along directly
InitialDepthMapper.collect(id, depthSummary, collector);
return ;
}
if (depthSummary.getDepth() == null) {
//if we haven't reached this node yet, just pass it along directly
InitialDepthMapper.collect(id, depthSummary, collector);
return ;
}
InitialDepthMapper.shareDepth(depthSummary, collector, reporter) ;
InitialDepthMapper.collect(id, depthSummary, collector);
}
}