import java.io.IOException;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reporter;

/*
  Phase 1: As read in edges, note whether labeled as from
  matrix A or matrix B.
  Key for A edge is toNode.
  Key for B edge is fromNode.
 */

public class P1Mapper extends MapReduceBase implements Mapper {

    public void map(WritableComparable key, Writable values,
		    OutputCollector output, Reporter reporter) throws IOException {
	try {
	    GraphEdge e = new GraphEdge(values.toString());
	    IntWritable k;
	    if (e.tag.equals("A"))
		k = new IntWritable(e.toNode);
	    else
		k = new IntWritable(e.fromNode);
	    output.collect(k, new Text(e.toString()));
	} catch (BadGraphException e) {}
    }
}

