// TerminTest.java
package comparator;

import java.util.Arrays;
import java.util.Comparator;

/**
 * TerminTest ist eine Main-Klasse, die Sortierkriterien verwendet.
 * Beispielprogramm zur Programmiertechnik 1, Teil 5.
 * @author H.Drachenfels
 * @version 18.6.2024
 */
public final class TerminTest {
    private TerminTest() { }

    /**
     * main ist der Startpunkt des Programms.
     * @param args wird nicht verwendet.
     */
    public static void main(String[] args) {
        Termin[] termine = {
            new Termin(Datum.valueOf(11, 11, 2024), "Zahnarzt"),
            new Termin(Datum.valueOf(11, 1, 2025), "ZahnArzt"),
            new Termin(Datum.heute(), "Vorlesung"),
            new Termin(Datum.heute(), "Uebung"),
            new Termin(Datum.valueOf(31, 12, 2024), "Party")
        };

        Comparator<Termin> sortierKriterium;
        sortierKriterium = Comparator
                           .comparing(Termin::wann)
                           .thenComparing(Termin::was,
                                          String.CASE_INSENSITIVE_ORDER);
        Arrays.sort(termine, sortierKriterium);

        System.out.println("Termine nach Datum:");
        for (Termin t : termine) {
            System.out.println(t);
        }

        sortierKriterium = Comparator
                           .comparing(Termin::was,
                                      String.CASE_INSENSITIVE_ORDER)
                           .thenComparing(Termin::wann);
        Arrays.sort(termine, sortierKriterium);

        System.out.println("Termine nach Beschreibung:");
        for (Termin t : termine) {
            System.out.println(t);
        }
    }
}

