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

import de.ivu.elect.business.konfiguration.entity.CustomParameterLoaderContext;


import static java.util.Objects.nonNull;

public class WahlParameterLoaderContext implements CustomParameterLoaderContext<WahlParameterWerte> {

  private final Wahltermin wahltermin;

  private final Wahl wahl;

  private final WahlParameterWerte template;

  public WahlParameterLoaderContext(Wahltermin wahltermin, WahlParameterWerte template) {
    this(wahltermin, null, template);
  }

  public WahlParameterLoaderContext(Wahl wahl, WahlParameterWerte template) {
    this(wahl.getWahltermin(), wahl, template);
  }

  private WahlParameterLoaderContext(Wahltermin wahltermin, Wahl wahl, WahlParameterWerte template) {
    super();

    this.wahltermin = wahltermin;
    this.wahl = wahl;

    this.template = template;
  }

  @Override
  public WahlParameterWerte getTemplate() {
    return template;
  }

  public Wahltermin getWahltermin() {
    return wahltermin;
  }

  public boolean hasWahl() {
    return nonNull(wahl);
  }

  public boolean hasWahltermin() {
    return nonNull(wahltermin);
  }

  public Wahl getWahl() {
    return wahl;
  }

  @Override
  public String toString() {
    return "WahlParameterLoaderContext{" +
        "wahltermin=" + wahltermin +
        ", wahl=" + wahl +
        ", template=" + template +
        ", hasWahl=" + hasWahl() +
        ", hasWahltermin=" + hasWahltermin() +
        '}';
  }
}
