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