1   package kanta;
2   
3   import java.util.Comparator;
4   
5   /**
6    * Luokka joka vertaa kahta tietuetta keskenään 
7    */
8   public class TietueVertailija implements Comparator<Tietue> {
9   
10      private final int kenttanro;
11  
12  
13      /**
14       * Alustetaan vertailija vertailemaan tietyn kentän perusteella
15       * @param k vertailtavan kentän indeksi.
16       */
17      public TietueVertailija(int k) {
18          this.kenttanro = k;
19      }
20  
21  
22      /**
23       * Vertaa kahta tietuetta keskenään.
24       * @param t1 1. verrattava jäsen
25       * @param t2 2. verrattava jäsen
26       * @return <0 jos t1 < t2, == 0 jos t1 == t2 ja muuten >0
27       * @example
28       * <pre name="test">
29       * #THROWS CloneNotSupportedException 
30       *    PohjaTietue t1 = new PohjaTietue(new Kentta[]{new IntKentta("id"), 
31       *                      new IntKentta("int"), new JonoKentta("string"), },1); 
32       *    PohjaTietue t2 = t1.clone();
33       *    PohjaTietue t3 = t1.clone();
34       *    t1.parse("1|2|bbb|");                   
35       *    t2.parse("2|12|aaa|");                   
36       *    t3.parse("3|2|aaa|");
37       *                       
38       *    TietueVertailija v0 = new TietueVertailija(0);  
39       *    v0.compare(t1,t2) < 0 === true;  
40       *    v0.compare(t2,t3) < 0 === true;  
41       *    v0.compare(t2,t1) > 0 === true;
42       *      
43       *    TietueVertailija v1 = new TietueVertailija(1);  
44       *    v1.compare(t1,t2) < 0 === true;  
45       *    v1.compare(t2,t3) > 0 === true;  
46       *    v1.compare(t1,t3) === 0;
47       *      
48       *    TietueVertailija v2 = new TietueVertailija(2);
49       *    v2.compare(t1,t2) > 0 === true;  
50       *    v2.compare(t2,t3) === 0;  
51       *    v2.compare(t2,t1) < 0 === true;  
52       * </pre>
53       */
54      @Override
55      public int compare(Tietue t1, Tietue t2) {
56          String s1 = t1.getAvain(kenttanro);
57          String s2 = t2.getAvain(kenttanro);
58  
59          return s1.compareTo(s2);
60      }
61  
62  }
63