package hip.ch6.sort.secondary; import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.io.WritableComparator; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; public class PersonModified implements WritableComparable<PersonModified> { private String firstName; private String lastName; public PersonModified() { } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public void readFields(DataInput in) throws IOException { this.firstName = in.readUTF(); this.lastName = in.readUTF(); } @Override public void write(DataOutput out) throws IOException { out.writeUTF(firstName); out.writeUTF(lastName); } @Override public int compareTo(PersonModified other) { int cmp = this.firstName.compareTo(other.firstName); if (cmp != 0) { return cmp; } return this.lastName.compareTo(other.lastName); } public void set(String lastName, String firstName) { this.lastName = lastName; this.firstName = firstName; } public static class PersonKeyComparator extends WritableComparator { public PersonKeyComparator() { super(PersonModified.class); } public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) { return compareBytes(b1, s1, l1, b2, s2, l2); } } static { // register this comparator WritableComparator.define(PersonModified.class, new PersonKeyComparator()); } }