package de.ivu.elect.business.gebietsbaum.control;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

import javax.annotation.Nullable;

public class WurzelgebietExchangeFilter implements Serializable {

  private static final long serialVersionUID = 1L;

  private final Set<String> verfuegbareWurzelgebietNummernInDatei;

  @Nullable
  private String selectedWurzelgebietNummer;

  public WurzelgebietExchangeFilter() {
    this.verfuegbareWurzelgebietNummernInDatei = new HashSet<>();
  }

  public boolean isWurzelgebietInDateiImportieren(String wurzelgebietNummer) {
    return Objects.equals(getSelectedWurzelgebietNummer(), wurzelgebietNummer);
  }

  public boolean isMehrereWurzelgebieteInDateiVorhanden() {
    return verfuegbareWurzelgebietNummernInDatei.size() > 1;
  }

  public void addWurzelgebietNummerInDatei(String wurzelgebietNummer) {
    verfuegbareWurzelgebietNummernInDatei.add(wurzelgebietNummer);
  }

  public Set<String> getVerfuegbareWurzelgebietNummernInDatei() {
    return verfuegbareWurzelgebietNummernInDatei;
  }

  @Nullable
  public String getSelectedWurzelgebietNummer() {
    if (selectedWurzelgebietNummer == null && !verfuegbareWurzelgebietNummernInDatei.isEmpty()) {
      // HINT: Gibt's nur ein Wurzelgebiet, kann man sich die Auswahl eh sparen. Und sonst haben wir eine sinnvolle
      //   Vorbelegung, sodass man auch schon was in der Import-Vorschau sieht (insb. die Anzahl an Gebieten).
      selectedWurzelgebietNummer = verfuegbareWurzelgebietNummernInDatei.iterator().next();
    }

    return selectedWurzelgebietNummer;
  }

  public void setSelectedWurzelgebietNummer(String selectedWurzelgebietNummer) {
    this.selectedWurzelgebietNummer = selectedWurzelgebietNummer;
  }
}
