package org.texttechnologylab.project.gruppe_05_1.domain.mdb;

import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;

public abstract class Mdb {

    private String                  id;
    private List<MdbName>              namen;
    private BiografischeAngaben     bio;
    private List<Wahlperiode>       wahlperioden;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public List<MdbName> getNamen() {
        return namen;
    }

    public void setNamen(List<MdbName> namen) {
        this.namen = namen;
    }

    public BiografischeAngaben getBio() {
        return bio;
    }

    public void setBio(BiografischeAngaben bio) {
        this.bio = bio;
    }

    public List<Wahlperiode> getWahlperioden() {
        return wahlperioden;
    }

    public void setWahlperioden(List<Wahlperiode> wahlperioden) {
        this.wahlperioden = wahlperioden;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Mdb mdb)) return false;
        return Objects.equals(id, mdb.id) && Objects.equals(namen, mdb.namen) && Objects.equals(bio, mdb.bio) && Objects.equals(wahlperioden, mdb.wahlperioden);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, namen, bio, wahlperioden);
    }

    @Override
    public String toString() {
        return new StringJoiner(", ", Mdb.class.getSimpleName() + "[", "]")
                .add("id='" + id + "'")
                .add("namen=" + namen)
                .add("bio=" + bio)
                .add("wahlperioden=" + wahlperioden)
                .toString();
    }
}
