
package de.ivu.elect.dokumente.ergebnis;

import de.ivu.document.generator.template.annotations.DocumentSimpleField;
import de.ivu.elect.business.gebietsbaum.boundary.WahlverwaltungGebietInformation;
import de.ivu.elect.business.gebietsbaum.entity.CoreWahlverwaltungGebietInformationArt;

public class ErgebnisDocumentDatenGebietDocument extends ErgebnisDocumentGebietDocument {

  private static final long serialVersionUID = 1L;

  public static final String PSEUDO_GEMEINDE_GESAMT_NAME = "Gesamt";

  public static final String PSEUDO_GEMEINDE_GESAMT_NUMMER = "";

  public static final WahlverwaltungGebietInformation PSEUDO_GEMEINDE_GESAMT_INFORMATION = new WahlverwaltungGebietInformation(CoreWahlverwaltungGebietInformationArt.GEMEINDE.toArt(),
      PSEUDO_GEMEINDE_GESAMT_NAME, PSEUDO_GEMEINDE_GESAMT_NUMMER, "");

  @DocumentSimpleField("Art")
  public String art;

  @DocumentSimpleField("Ist-Ergebniseingabestatus-Komplett-Eingabe-Beendet")
  public boolean isErgebniseingabestatusKomplettEingabeBeendet;

  @DocumentSimpleField("Ist-Ergebniseingabestatus-Komplett-Gesperrt")
  public boolean isErgebniseingabestatusKomplettGesperrt;

  @DocumentSimpleField("Ist-Ergebniseingabestatus-Komplett-Abgeschlossen")
  public boolean isErgebniseingabestatusKomplettAbgeschlossen;

  @DocumentSimpleField("Ist-Ergebniseingabestatus-Komplett-Freigegeben")
  public boolean isErgebniseingabestatusKomplettFreigegeben;

  @DocumentSimpleField("Ist-Ergebniseingabestatus-Komplett-Ausbleibend")
  public boolean isErgebniseingabestatusKomplettAusbleibend;

  @DocumentSimpleField("Ist-Pseudo-Gemeinde-Gesamt")
  public boolean isPseudoGemeindeGesamt;

  public ErgebnisDocumentDatenGebietDocument() {
    this("", "", "", "", "");
  }

  public ErgebnisDocumentDatenGebietDocument(WahlverwaltungGebietInformation gebietInformation) {
    this(gebietInformation.getArt(), gebietInformation.getName(), gebietInformation.getNummer(), gebietInformation.getNummer(), gebietInformation.getKuerzel());
  }

  public ErgebnisDocumentDatenGebietDocument(String art, String name, String nummer, String nummerFormatiert, String kuerzel) {
    super(name, nummer, nummerFormatiert, kuerzel);

    this.art = art;

    this.isErgebniseingabestatusKomplettEingabeBeendet = false;
    this.isErgebniseingabestatusKomplettGesperrt = false;
    this.isErgebniseingabestatusKomplettAbgeschlossen = false;
    this.isErgebniseingabestatusKomplettFreigegeben = false;
    this.isErgebniseingabestatusKomplettAusbleibend = false;

    this.isPseudoGemeindeGesamt = PSEUDO_GEMEINDE_GESAMT_NAME.equals(name) && PSEUDO_GEMEINDE_GESAMT_NUMMER.equals(nummer);
  }

  @Override
  public ErgebnisDocumentDatenGebietDocument copy() {
    return copy(new ErgebnisDocumentDatenGebietDocument());
  }

  protected ErgebnisDocumentDatenGebietDocument copy(ErgebnisDocumentDatenGebietDocument target) {
    super.copy(target);

    target.art = art;

    target.isErgebniseingabestatusKomplettEingabeBeendet = isErgebniseingabestatusKomplettEingabeBeendet;
    target.isErgebniseingabestatusKomplettGesperrt = isErgebniseingabestatusKomplettGesperrt;
    target.isErgebniseingabestatusKomplettAbgeschlossen = isErgebniseingabestatusKomplettAbgeschlossen;
    target.isErgebniseingabestatusKomplettFreigegeben = isErgebniseingabestatusKomplettFreigegeben;
    target.isErgebniseingabestatusKomplettAusbleibend = isErgebniseingabestatusKomplettAusbleibend;

    target.isPseudoGemeindeGesamt = isPseudoGemeindeGesamt;

    return target;
  }
}
