
package de.ivu.elect.interfaces.was.replikation;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

import de.ivu.elect.interfaces.core.Wahl;
import de.ivu.elect.interfaces.was.stimmeingabe.ErfassteStimmen;
import de.ivu.elect.interfaces.was.wahlbeteiligung.ErfassteWahlbeteiligung;
import de.ivu.elect.interfaces.was.wahlbeteiligung.WahlbeteiligungAuswertungUpdate;
import de.ivu.elect.interfaces.was.wahlbeteiligung.WahlbeteiligungVerlauf;

/**
 */
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ReplikationNachricht {

  @XmlElement(required = true)
  private long nummer;

  @XmlElement(required = true)
  private Date zeitstempel;

  @XmlElement(required = true)
  private ReplikationTyp typ;

  @XmlElement(required = false, namespace = "http://www.ivu.de/ELECT")
  private Wahl wahl;

  @XmlElement(required = false)
  private WahlUpdate wahlUpdate;

  @XmlElement(required = false, namespace = "http://www.ivu.de/ELECT/WAHLBETEILIGUNG")
  private WahlbeteiligungAuswertungUpdate wahlbeteiligungAuswertungUpdate;

  @XmlElement(required = false, namespace = "http://www.ivu.de/ELECT/WAHLBETEILIGUNG")
  private ErfassteWahlbeteiligung erfassteWahlbeteiligung;

  @XmlElement(required = false, namespace = "http://www.ivu.de/ELECT/WAHLBETEILIGUNG")
  private WahlbeteiligungVerlauf wahlbeteiligungVerlauf;

  @XmlElement(required = false, namespace = "http://www.ivu.de/ELECT/STIMMEINGABE")
  private ErfassteStimmen erfassteStimmen;

  @XmlElementWrapper(name = "gebietUpdates", nillable = false, required = true)
  @XmlElement(required = false, name = "gebietUpdate", nillable = true)
  private List<GebietUpdate> gebietUpdates = new ArrayList<>();

  @XmlElement(required = false)
  private SystemUpdate systemUpdate;

  public ErfassteStimmen getErfassteStimmen() {
    return erfassteStimmen;
  }

  public void setErfassteStimmen(ErfassteStimmen erfassteStimmen) {
    this.erfassteStimmen = erfassteStimmen;
  }

  public List<GebietUpdate> getGebietUpdates() {
    return gebietUpdates;
  }

  public void setGebietUpdates(List<GebietUpdate> gebietUpdates) {
    this.gebietUpdates = gebietUpdates;
  }

  public long getNummer() {
    return nummer;
  }

  public void setNummer(long nummer) {
    this.nummer = nummer;
  }

  public SystemUpdate getSystemUpdate() {
    return systemUpdate;
  }

  public void setSystemUpdate(SystemUpdate systemUpdate) {
    this.systemUpdate = systemUpdate;
  }

  public ReplikationTyp getTyp() {
    return typ;
  }

  public void setTyp(ReplikationTyp typ) {
    this.typ = typ;
  }

  public Wahl getWahl() {
    return wahl;
  }

  public void setWahl(Wahl wahl) {
    this.wahl = wahl;
  }

  public Date getZeitstempel() {
    return zeitstempel;
  }

  public void setZeitstempel(Date zeitstempel) {
    this.zeitstempel = zeitstempel;
  }

  public WahlUpdate getWahlUpdate() {
    return wahlUpdate;
  }

  public void setWahlUpdate(WahlUpdate wahlUpdate) {
    this.wahlUpdate = wahlUpdate;
  }

  public WahlbeteiligungAuswertungUpdate getWahlbeteiligungAuswertungUpdate() {
    return wahlbeteiligungAuswertungUpdate;
  }

  public void setWahlbeteiligungAuswertungUpdate(WahlbeteiligungAuswertungUpdate wahlbeteiligungAuswertungUpdate) {
    this.wahlbeteiligungAuswertungUpdate = wahlbeteiligungAuswertungUpdate;
  }

  public ErfassteWahlbeteiligung getErfassteWahlbeteiligung() {
    return erfassteWahlbeteiligung;
  }

  public void setErfassteWahlbeteiligung(ErfassteWahlbeteiligung erfassteWahlbeteiligung) {
    this.erfassteWahlbeteiligung = erfassteWahlbeteiligung;
  }

  public WahlbeteiligungVerlauf getWahlbeteiligungVerlauf() {
    return wahlbeteiligungVerlauf;
  }

  public void setWahlbeteiligungVerlauf(WahlbeteiligungVerlauf wahlbeteiligungVerlauf) {
    this.wahlbeteiligungVerlauf = wahlbeteiligungVerlauf;
  }
}
