
package de.ivu.elect.business.ergebnis.control;

import de.ivu.elect.business.ergebnis.entity.WasExportDatenqualitaet;
import de.ivu.elect.business.ergebnis.entity.WasExportErgebnisBezeichnung;
import de.ivu.elect.business.exchange.control.AbstractWahlExchangeContext;
import de.ivu.elect.business.wahl.entity.Wahl;

/**
 * Kontext für Ergebnis-Exporte.
 */
public abstract class AbstractErgebnisExportContext extends AbstractWahlExchangeContext {

  private static final long serialVersionUID = 1L;

  private String ursprungsname;
  private String ursprungsserver;
  private ErgebnisVerwendung ergebnisVerwendungEndgueltig;
  private ErgebnisVerwendung ergebnisVerwendungVergleichswerte;
  private WasExportErgebnisBezeichnung wasExportEingabeartEndgueltig;
  private WasExportErgebnisBezeichnung wasExportEingabeartVergleichswerte;
  private WasExportDatenqualitaet wasExportDatenqualitaet;

  public AbstractErgebnisExportContext(Wahl wahl) {
    super(wahl);
  }

  public String getUrsprungsname() {
    return ursprungsname;
  }

  public String getUrsprungsserver() {
    return ursprungsserver;
  }

  public ErgebnisVerwendung getErgebnisVerwendungEndgueltig() {
    return ergebnisVerwendungEndgueltig;
  }

  public ErgebnisVerwendung getErgebnisVerwendungVergleichswerte() {
    return ergebnisVerwendungVergleichswerte;
  }

  public WasExportErgebnisBezeichnung getWasExportEingabeartEndgueltig() {
    return wasExportEingabeartEndgueltig;
  }

  public WasExportErgebnisBezeichnung getWasExportEingabeartVergleichswerte() {
    return wasExportEingabeartVergleichswerte;
  }

  public WasExportDatenqualitaet getWasExportDatenqualitaet() {
    return wasExportDatenqualitaet;
  }

  public void setUrsprungsname(String ursprungsname) {
    this.ursprungsname = ursprungsname;
  }

  public static class ErgebnisExportContextBuilder {

    private final AbstractErgebnisExportContext context;

    public ErgebnisExportContextBuilder(Wahl wahl, AbstractErgebnisExportContext context) {
      this.context = context;
    }

    public AbstractErgebnisExportContext build() {
//      if (context.getErgebnisVerwendungEndgueltig() == null) {
//        throw new IllegalExchangeContextException("ergebnisVerwendungEndgueltig darf nicht null sein.");
//      }
//      if (context.getWahl() == null) {
//        throw new IllegalExchangeContextException("wahl darf nicht null sein.");
//      }
//      if (context.getErgebnisVerwendungEndgueltig() == null) {
//        throw new IllegalExchangeContextException("ergebnisVerwendungEndgueltig darf nicht null sein.");
//      }
//      if (context.getErgebnisVerwendungVergleichswerte() == null) {
//        throw new IllegalExchangeContextException("ergebnisVerwendungVergleichswerte darf nicht null sein.");
//      }
//      if (context.getWasExportEingabeartEndgueltig() == null) {
//        throw new IllegalExchangeContextException("wasExportEingabeartEndgueltig darf nicht null sein.");
//      }
//      if (context.getWasExportEingabeartVergleichswerte() == null) {
//        throw new IllegalExchangeContextException("wasExportEingabeartVergleichswerte darf nicht null sein.");
//      }
//      if (context.getWasExportDatenqualitaet() == null) {
//        throw new IllegalExchangeContextException("wasExportDatenqualitaet darf nicht null sein.");
//      }
//      if (context.getUrsprungsserver() == null) {
//        throw new IllegalExchangeContextException("ursprungsserver darf nicht null sein.");
//      }
      return context;
    }

    public void setErgebnisVerwendungEndgueltig(ErgebnisVerwendung ergebnisVerwendungEndgueltig) {
      context.ergebnisVerwendungEndgueltig = ergebnisVerwendungEndgueltig;
    }

    public void setErgebnisVerwendungVergleichswerte(ErgebnisVerwendung ergebnisVerwendungVergleichswerte) {
      context.ergebnisVerwendungVergleichswerte = ergebnisVerwendungVergleichswerte;
    }

    public void setWasExportEingabeartEndgueltig(WasExportErgebnisBezeichnung wasExportEingabeartEndgueltig) {
      context.wasExportEingabeartEndgueltig = wasExportEingabeartEndgueltig;
    }

    public void setWasExportEingabeartVergleichswerte(WasExportErgebnisBezeichnung wasExportEingabeartVergleichswerte) {
      context.wasExportEingabeartVergleichswerte = wasExportEingabeartVergleichswerte;
    }

    public void setWasExportDatenqualitaet(WasExportDatenqualitaet wasExportDatenqualitaet) {
      context.wasExportDatenqualitaet = wasExportDatenqualitaet;
    }

    public void setUrsprungsname(String ursprungsname) {
      context.ursprungsname = ursprungsname;
    }

    public void setUrsprungsserver(String ursprungsserver) {
      context.ursprungsserver = ursprungsserver;
    }
  }
}
