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

import java.io.Serializable;
import java.util.Date;

public class LetzterEingang implements Serializable {

  private static final long serialVersionUID = 1L;

  public static final LetzterEingang KEIN_EINGANG = new LetzterEingang(null, -1, null, "", null, false, null) {

    private static final long serialVersionUID = 1L;

    @Override
    public boolean isEingangVorhanden() {
      return false;
    }
  };

  public static final LetzterEingang UNBEKANNT = new LetzterEingang(null, -2, null, "", null, false, null) {

    private static final long serialVersionUID = 1L;

    @Override
    public boolean isEingangVorhanden() {
      return false;
    }

    @Override
    public boolean isUnbekannt() {
      return true;
    }
  };

  private final ErgebniseingangPK ergebniseingangPK;

  private final long eingangssequenznummer;

  private final Ergebniseingangsfehlerstatus ergebniseingangsfehlerstatus;

  private final String erfasser;

  private final Date zeitstempel;

  private final boolean inErgebnisUebernehmbar;

  private final Ergebniseingabestufe ergebniseingabestufe;

  public LetzterEingang(ErgebniseingangPK ergebniseingangPK, long eingangssequenznummer, Ergebniseingangsfehlerstatus ergebniseingangsfehlerstatus, String erfasser, Date zeitstempel,
      boolean inErgebnisUebernehmbar, Ergebniseingabestufe ergebniseingabestufe) {
    super();

    this.ergebniseingangPK = ergebniseingangPK;
    this.eingangssequenznummer = eingangssequenznummer;
    this.ergebniseingangsfehlerstatus = ergebniseingangsfehlerstatus;
    this.erfasser = erfasser;
    this.zeitstempel = zeitstempel;
    this.inErgebnisUebernehmbar = inErgebnisUebernehmbar;
    this.ergebniseingabestufe = ergebniseingabestufe;
  }

  public ErgebniseingangPK getErgebniseingangPK() {
    return ergebniseingangPK;
  }

  public long getEingangssequenznummer() {
    return eingangssequenznummer;
  }

  public Ergebniseingangsfehlerstatus getErgebniseingangsfehlerstatus() {
    return ergebniseingangsfehlerstatus;
  }

  public String getErfasser() {
    return erfasser;
  }

  public Date getZeitstempel() {
    return zeitstempel;
  }

  public boolean isInErgebnisUebernehmbar() {
    return inErgebnisUebernehmbar;
  }

  public boolean isUnbekannt() {
    return false;
  }

  public boolean isEingangVorhanden() {
    return true;
  }

  public Ergebniseingabestufe getErgebniseingabestufe() {
    return ergebniseingabestufe;
  }

  @Override
  public String toString() {
    return "LetzterEingang{" + "ergebniseingangPK=" + ergebniseingangPK + ", eingangssequenznummer=" + eingangssequenznummer + ", ergebniseingangsfehlerstatus=" + ergebniseingangsfehlerstatus
        + ", erfasser=" + erfasser + ", zeitstempel=" + zeitstempel + ", inErgebnisUebernehmbar=" + inErgebnisUebernehmbar + ", unbekannt=" + isUnbekannt() + ", eingangVorhanden="
        + isEingangVorhanden() + ", ergebniseingabestufe=" + ergebniseingabestufe + '}';
  }
}
