01: // PLIK: 04_Interfejsy/KompOs.java
02: 
03: import java.util.Comparator;
04: 
05: public class KompOs implements Comparator {
06: 
07:     public static enum Komp { PO_NAME,    PO_ROKU,
08:                               PO_NAMERev, PO_ROKURev };
09:     private Komp komp;
10: 
11:     public KompOs(Komp komp) {
12:         this.komp = komp;
13:     }
14: 
15:     public int compare(Object _os1, Object _os2) {
16:         Osoba os1 = (Osoba)_os1;
17:         Osoba os2 = (Osoba)_os2;
18:         int roznicaRok  = os1.getRok() - os2.getRok();
19:         int roznicaName =
20:                 os1.getName().compareTo(os2.getName());
21: 
22:         switch (komp) {
23: 
24:             case PO_NAME:
25:                 if (roznicaName != 0)
26:                     return roznicaName;
27:                 else
28:                     return roznicaRok;
29: 
30:             case PO_NAMERev:
31:                 if (roznicaName != 0)
32:                     return -roznicaName;
33:                 else
34:                     return roznicaRok;
35: 
36:             case PO_ROKU:
37:                 if (roznicaRok != 0)
38:                     return roznicaRok;
39:                 else
40:                     return roznicaName;
41: 
42:             case PO_ROKURev:
43:                 if (roznicaRok != 0)
44:                     return -roznicaRok;
45:                 else
46:                     return roznicaName;
47:         }
48: 
49:         throw new UnsupportedOperationException();
50:     }
51: }