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: }