@Override
public void map(final NullWritable key, final FaunusElement value, final Mapper<NullWritable, FaunusElement, LongWritable, FaunusVertex>.Context context) throws IOException, InterruptedException {
if (value instanceof FaunusEdge) {
final long outId = ((FaunusEdge) value).getVertexId(OUT);
final long inId = ((FaunusEdge) value).getVertexId(IN);
FaunusVertex vertex = this.map.get(outId);
if (null == vertex) {
vertex = new FaunusVertex(outId);
this.map.put(outId, vertex);
}
vertex.addEdge(OUT, WritableUtils.clone((FaunusEdge) value, context.getConfiguration()));
this.counter++;
vertex = this.map.get(inId);
if (null == vertex) {
vertex = new FaunusVertex(inId);
this.map.put(inId, vertex);
}
vertex.addEdge(IN, WritableUtils.clone((FaunusEdge) value, context.getConfiguration()));
context.getCounter(Counters.EDGES_PROCESSED).increment(1l);
this.counter++;
} else {
final long id = value.getIdAsLong();
FaunusVertex vertex = this.map.get(id);
if (null == vertex) {
vertex = new FaunusVertex(id);
this.map.put(id, vertex);
}
vertex.getProperties().putAll(value.getProperties());
vertex.addEdges(BOTH, WritableUtils.clone((FaunusVertex) value, context.getConfiguration()));
this.counter++;
}
if (this.counter > MAX_MAP_SIZE)
this.flush(context);
}