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

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.wahl.entity.WahlOderWahlterminPK;

// ELECT-8738
public abstract class AbstractWahlOderWahlterminMultipleCronTimerAsync extends AbstractElectMultipleCronTimerAsync<WahlOderWahlterminPK> {

  private static final Logger LOG = LoggerFactory.getLogger(AbstractWahlOderWahlterminMultipleCronTimerAsync.class);

  @Inject
  private transient WahlWahlterminVorhanden wahlWahlterminVorhanden;

  @Override
  protected void handle(WahlOderWahlterminPK wahlOderWahlterminPK) throws Exception {
    if (wahlWahlterminVorhanden.isVorhanden(wahlOderWahlterminPK)) {
      handleWahlOderWahltermin(wahlOderWahlterminPK);
    } else {
      LOG.info("Wahl oder Wahltermin nicht mehr vorhanden, Timer nicht ausgeführt: " + wahlOderWahlterminPK);
    }
  }

  protected abstract void handleWahlOderWahltermin(WahlOderWahlterminPK oderWahlterminPK) throws Exception;
}
