package Testate.Stream;

import java.util.*;

public class Student implements Comparable<Student> {
	 private String name;
	    private String wohnort;
	    private String studiengang;
	    private List<Prüfung> prüfungen;

	    // Konstruktor
	    public Student(String name, String wohnort, String studiengang) {
	        this.name = name;
	        this.wohnort = wohnort;
	        this.studiengang = studiengang;
	        this.prüfungen = new ArrayList<>();
	    }

	    // Getter und Setter
	    public String getName() {
	        return name;
	    }

	    public void setName(String name) {
	        this.name = name;
	    }

	    public String getWohnort() {
	        return wohnort;
	    }

	    public void setWohnort(String wohnort) {
	        this.wohnort = wohnort;
	    }

	    public String getStudiengang() {
	        return studiengang;
	    }

	    public void setStudiengang(String studiengang) {
	        this.studiengang = studiengang;
	    }

	    public List<Prüfung> getPrüfungen() {
	        return prüfungen;
	    }

	    // Methoden
	    public void addPrüfung(Prüfung prüfung) {
	        this.prüfungen.add(prüfung);
	    }

	    @Override
	    public String toString() {
	        return "Student{" +
	                "name='" + name + '\'' +
	                ", wohnort='" + wohnort + '\'' +
	                ", studiengang='" + studiengang + '\'' +
	                ", prüfungen=" + prüfungen +
	                '}';
	    }

		@Override
		public int compareTo(Student o) {
			// Zuerst nach Studiengang sortieren
		    int nameVergleich = this.name.compareTo(o.getName());
		    
		    // Wenn die Studiengänge gleich sind, nach Name sortieren
		    if (nameVergleich == 0) 
		        return this.studiengang.compareTo(o.getStudiengang()); 

		    return nameVergleich;
		}
}
