package de.ivu.elect.business.stimmzettel.entity;

import java.io.Serializable;
import java.util.Collections;
import java.util.Map;

import de.ivu.elect.business.gebietsbaum.entity.GebietTK;
import de.ivu.elect.business.wahl.entity.WahlTK;

public class WesStimmzettelAusDateiInformationen implements Serializable {

  public static final WesStimmzettelAusDateiInformationen KEIN_STATUS = new WesStimmzettelAusDateiInformationen(null, StimmzettelTeam.UNBEKANNT, null, null,
      null, false, null, null, Collections.emptyMap());

  private static final long serialVersionUID = 1L;

  private final String dateiname;
  private final StimmzettelTeam stimmzettelTeam;
  private final Long version;
  private final Boolean signaturGueltig;
  private final Long anzahlStimmzettel;
  private final boolean wahlUndGebietStimmenUeberein;

  private final WahlTK wahlTK;

  private final GebietTK gebietTK;
  private final Map<StimmzettelTeam, Long> enthalteneStimmzettelTeamsAnzahlStimmzettel;

  public WesStimmzettelAusDateiInformationen(String dateiname, StimmzettelTeam stimmzettelTeam, Long version, Boolean signaturGueltig, Long anzahlStimmzettel,
                                             boolean wahlUndGebietStimmenUeberein, WahlTK wahlTK, GebietTK gebietTK, Map<StimmzettelTeam, Long> enthalteneStimmzettelTeamsAnzahlStimmzettel) {
    this.dateiname = dateiname;
    this.stimmzettelTeam = stimmzettelTeam;
    this.version = version;
    this.signaturGueltig = signaturGueltig;
    this.anzahlStimmzettel = anzahlStimmzettel;
    this.wahlUndGebietStimmenUeberein = wahlUndGebietStimmenUeberein;
    this.wahlTK = wahlTK;
    this.gebietTK = gebietTK;
    this.enthalteneStimmzettelTeamsAnzahlStimmzettel = enthalteneStimmzettelTeamsAnzahlStimmzettel;
  }

  public String getDateiname() {
    return dateiname;
  }

  public StimmzettelTeam getStimmzettelTeam() {
    return stimmzettelTeam;
  }

  public Long getVersion() {
    return version;
  }

  public Boolean getSignaturGueltig() {
    return signaturGueltig;
  }

  public Long getAnzahlStimmzettel() {
    return anzahlStimmzettel;
  }

  public boolean isWahlUndGebietStimmenUeberein() {
    return wahlUndGebietStimmenUeberein;
  }

  public WahlTK getWahlTK() {
    return wahlTK;
  }

  public GebietTK getGebietTK() {
    return gebietTK;
  }

  public Map<StimmzettelTeam, Long> getEnthalteneStimmzettelTeamsAnzahlStimmzettel() {
    return enthalteneStimmzettelTeamsAnzahlStimmzettel;
  }

  @Override
  public String toString() {
    return "WesStimmzettelAusDateiInformationen{" +
        "dateiname='" + dateiname + '\'' +
        ", stimmzettelTeam=" + stimmzettelTeam +
        ", version=" + version +
        ", signaturGueltig=" + signaturGueltig +
        ", anzahlStimmzettel=" + anzahlStimmzettel +
        ", wahlUndGebietStimmenUeberein=" + wahlUndGebietStimmenUeberein +
        ", wahlTK=" + wahlTK +
        ", gebietTK=" + gebietTK +
        '}';
  }
}
