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

import de.ivu.elect.business.gebietsbaum.entity.GebietTK;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WesUebertragungsweg;

import javax.annotation.Nullable;

import java.util.Date;
import java.util.List;
import java.util.Set;

public class WahlWesExportContext extends WahlExportContext {

  private static final long serialVersionUID = 1L;

  private final List<Wahl> weitereWahlen;

  private final Set<GebietTK> gebiete;

  @Nullable
  private final String wesTemplateFile;

  private final String usbPath;

  private final WesUebertragungsweg uebertragungsweg;

  private final String wasUrl;

  private final Long restSocketTimeoutInSekunden;

  private final Long restConnectTimeoutInSekunden;

  private final Boolean restEnabledTrustmanager;

  private final String restProxyHost;

  private final Long restProxyPort;

  private final boolean wahlIdMitZeitstempel;

  private final Date now = new Date();

  public WahlWesExportContext(Wahl wahl,
                              List<Wahl> weitereWahlen,
                              Set<GebietTK> gebiete,
                              @Nullable String wesTemplateFile,
                              String usbPath,
                              WesUebertragungsweg uebertragungsweg,
                              String wasUrl,
                              Long restSocketTimeoutInSekunden,
                              Long restConnectTimeoutInSekunden,
                              Boolean restEnabledTrustmanager,
                              String restProxyHost,
                              Long restProxyPort, boolean wahlIdMitZeitstempel
                              ) {
    super(wahl);
    this.weitereWahlen = weitereWahlen;
    this.gebiete = gebiete;
    this.wesTemplateFile = wesTemplateFile;
    this.usbPath = usbPath;
    this.uebertragungsweg = uebertragungsweg;
    this.wasUrl = wasUrl;
    this.restSocketTimeoutInSekunden = restSocketTimeoutInSekunden;
    this.restConnectTimeoutInSekunden = restConnectTimeoutInSekunden;
    this.restEnabledTrustmanager = restEnabledTrustmanager;
    this.restProxyHost = restProxyHost;
    this.restProxyPort = restProxyPort;
    this.wahlIdMitZeitstempel = wahlIdMitZeitstempel;
  }

  public List<Wahl> getWeitereWahlen() {
    return weitereWahlen;
  }

  public Set<GebietTK> getGebiete() {
    return gebiete;
  }

  @Nullable
  public String getWesTemplateFile() {
    return wesTemplateFile;
  }

  public String getUsbPath() {
    return usbPath;
  }

  public WesUebertragungsweg getUebertragungsweg() {
    return uebertragungsweg;
  }

  public String getWasUrl() {
    return wasUrl;
  }

  public Long getRestSocketTimeoutInSekunden() {
    return restSocketTimeoutInSekunden;
  }

  public Long getRestConnectTimeoutInSekunden() {
    return restConnectTimeoutInSekunden;
  }

  public Boolean getRestEnabledTrustmanager() {
    return restEnabledTrustmanager;
  }

  public String getRestProxyHost() {
    return restProxyHost;
  }

  public Long getRestProxyPort() {
    return restProxyPort;
  }

  public Date getNow() {
    return now;
  }

  public boolean isWahlIdMitZeitstempel() {
    return wahlIdMitZeitstempel;
  }
}
