]> git.somenet.org - pub/jan/adbs.git/blob - ex2/mapreduce/TextPair.java
almost complete ex3.3
[pub/jan/adbs.git] / ex2 / mapreduce / TextPair.java
1 // Originally based on an example from "Hadoop: The Definitive Guide" by Tom White.
2 // https://github.com/tomwhite/hadoop-book/blob/master/ch05-io/src/main/java/oldapi/TextPair.java
3 // Copyright (C) 2014 Tom White
4 //
5 // Adapted by Filip Darmanovic and Cem Okulmus
6 // Created as a template for  Advanced Database Systems 2019
7
8 import java.io.*;
9 import org.apache.hadoop.io.*;
10
11 public class TextPair implements WritableComparable<TextPair> {
12
13     private Text first;
14     private Text second;
15
16     public TextPair() {
17         set(new Text(), new Text());
18     }    
19     
20     public TextPair(TextPair copy) {
21         set(new Text(copy.getFirst().toString()), 
22                         new Text(copy.getSecond().toString()));
23     }
24
25     public TextPair(String first, String second) {
26         set(new Text(first), new Text(second));
27     }
28
29     public TextPair(Text first, Text second) {
30         set(first, second);
31     }
32
33     public void set(Text first, Text second) {
34         this.first = first;
35         this.second = second;
36     }
37
38     public void set(String first,String second){
39         set(new Text(first),new Text(second));
40     }
41
42     public Text getFirst() {
43         return first;
44     }
45
46     public Text getSecond() {
47         return second;
48     }
49  
50
51     @Override
52     public void write(DataOutput out) throws IOException {
53         first.write(out);
54         second.write(out);
55     }
56
57     @Override
58     public void readFields(DataInput in) throws IOException {
59         first.readFields(in);
60         second.readFields(in);
61     }
62
63     @Override
64     public int hashCode() {
65         return (1013 * first.hashCode()) ^ (1009 * second.hashCode()); // any large prime numbers should do
66     }
67
68     @Override
69     public boolean equals(Object o) {
70         if (o instanceof TextPair) {
71             TextPair tp = (TextPair) o;
72             return first.equals(tp.first) && second.equals(tp.second);
73         }
74         return false;
75     }
76
77     @Override
78     public String toString() {
79         return first + "," + second;
80     }
81
82     @Override
83     public int compareTo(TextPair tp) {
84         int cmp = first.compareTo(tp.first);
85         if (cmp != 0) {
86             return cmp;
87         }
88         return second.compareTo(tp.second);
89     }
90 }