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

import java.util.Collection;

import de.ivu.elect.business.entschaedigung.boundary.AbstractEntschaedigungDAO;
import de.ivu.elect.business.entschaedigung.control.EntschaedigungAggregator;
import de.ivu.elect.business.wahl.entity.Wahl;

public abstract class AbstractAuszahlung implements AuszahlungBase {

  private static final long serialVersionUID = 1L;

  protected AbstractAuszahlung() {
    super();
  }

  public boolean isBearbeitbar() {
    return !hasDateiExport();
  }

  public boolean hasDateiExport() {
    return getDateiExport() != null;
  }

  protected void preSetWahl(Wahl from, Wahl to) {
    // Do nothing.
  }

  protected void postSetWahl(Wahl from, Wahl to) {
    if (to != null) {
      setWahltermin(to.getWahltermin());
    }
  }

  public Collection<Entschaedigung> getEntschaedigungen(AbstractEntschaedigungDAO entschaedigungDAO) {
    return createEntschaedigungenAggregator(entschaedigungDAO).getEntschaedigungen();
  }

  public EntschaedigungAggregator createEntschaedigungenAggregator(AbstractEntschaedigungDAO entschaedigungDAO) {
    return EntschaedigungAggregator.entschaedigungenErstelltFuerAuszahlung(entschaedigungDAO, (Auszahlung) this);
  }
}
