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

import java.io.Serializable;

import de.ivu.elect.business.exchange.control.AbstractMandantExchangeContext;
import de.ivu.elect.business.exchange.control.ContextMitImportInstanceTracker;
import de.ivu.elect.business.exchange.control.ImportInstanceTracker;
import de.ivu.elect.business.mandant.entity.Mandant;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahltermin;

public class EntschaedigungExchangeContext extends AbstractMandantExchangeContext implements ContextMitImportInstanceTracker, Serializable {

  private static final long serialVersionUID = 1L;

  private final Wahl wahl;

  private final Wahltermin wahltermin;

  private ImportInstanceTracker importInstanceTracker;

  public EntschaedigungExchangeContext(Mandant mandant) {
    this(null, null, mandant);
  }

  public EntschaedigungExchangeContext(Wahl wahl, Wahltermin wahltermin) {
    this(wahl, wahltermin, wahl != null ? wahl.getMandant() : wahltermin.getMandant());
  }

  public EntschaedigungExchangeContext(Wahl wahl, Wahltermin wahltermin, Mandant mandant) {
    super(mandant);

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

    this.importInstanceTracker = ImportInstanceTracker.DEAKTIVIERT;
  }

  public boolean hasWahl() {
    return getWahl() != null;
  }

  public Wahl getWahl() {
    return wahl;
  }

  public boolean hasWahltermin() {
    return getWahltermin() != null;
  }

  public Wahltermin getWahltermin() {
    return wahltermin;
  }

  @Override
  public ImportInstanceTracker getImportInstanceTracker() {
    return importInstanceTracker;
  }

  @Override
  public void setImportInstanceTracker(ImportInstanceTracker importInstanceTracker) {
    this.importInstanceTracker = importInstanceTracker;
  }
}
