package javacodebook.collections.collection.sort;

public class User implements java.lang.Comparable {

    private String name;
    private String strasse;
    private String plz;
    private String ort;

    public User(String name, String strasse, String plz, String ort) {
        this.name = name;
        this.strasse = strasse;
        this.plz = plz;
        this.ort = ort;
    }

    public String getName() {
        return name;
    }

    public String getOrt() {
        return ort;
    }

    //die weiteren get()- und set()-Methoden sind für dieses Beispiel nicht
    //relevant

    /*
     * Vergleiche zwei User-Objekte anhand des Namens
     */
    public int compareTo(Object o) {
        //Wenn das übergebenen Objekt nicht der Klasse User angehört, macht der
        //Vergleich keinen Sinn
        if(!(o instanceof User))
            throw new RuntimeException("Ungültiger Typ für Vergleich");

        User user = (User)o;
        //Der Name des eigenen User-Objekts wird unter Nichtbeachtung von
        //Gross- und Kleinschreibung mit dem Namen des übergebenen User-Objekts
        //verglichen und der Vergleichswert wird zurückgegeben
        return this.name.compareToIgnoreCase(user.getName());
    }

    public String toString() {
        return name + " - " + strasse + " - " + plz + " " + ort;
    }
}
