
package de.ivu.elect.sitzberechnung.verteilung;

import de.ivu.elect.sitzberechnung.Gebiet;
import de.ivu.elect.sitzberechnung.Liste;
import de.ivu.elect.sitzberechnung.Listenverbindung;
import de.ivu.elect.sitzberechnung.SitzberechnungEntity;
import de.ivu.elect.sitzberechnung.SitzberechnungLokalisierung;

public class ListeInVerteilung implements SitzberechnungEntity {

  private final Liste liste;

  private final Listenverbindung listenverbindung;

  public ListeInVerteilung(Liste liste) {
    this(liste, null);
  }

  public ListeInVerteilung(Listenverbindung listenverbindung) {
    this(null, listenverbindung);
  }

  private ListeInVerteilung(Liste liste, Listenverbindung listenverbindung) {
    super();

    this.liste = liste;

    this.listenverbindung = listenverbindung;
  }

  @Override
  public String getKey() {
    if (liste != null) {
      return liste.getKey();
    }

    return listenverbindung.getKey();
  }

  public String getName(SitzberechnungLokalisierung sitzberechnungLokalisierung) {
    if (liste != null) {
      return sitzberechnungLokalisierung.getName(liste);
    }

    return sitzberechnungLokalisierung.getName(listenverbindung);
  }

  public boolean isEinzelbewerber() {
    return liste != null && liste.isEinzelbewerber();
  }

  public Gebiet getGebiet() {
    if (liste != null) {
      return liste.getGebiet();
    }

    return null;
  }

  public Liste getListe() {
    return liste;
  }

  public Listenverbindung getListenverbindung() {
    return listenverbindung;
  }
}
