package de.ivu.elect.business.stimmeingabe.boundary;

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;

import de.ivu.elect.business.exchange.control.AbstractExporter;
import de.ivu.elect.business.exchange.control.ExportExchange;
import de.ivu.elect.business.exchange.entity.DateiExportArt;
import de.ivu.elect.business.stimmeingabe.control.StimmeingabePlausiKonfigurationExportContext;
import de.ivu.elect.business.stimmeingabe.control.StimmeingabePlausiKonfigurationExportExchange;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabePlausiKonfiguration;
import de.ivu.elect.business.wahl.boundary.WahlDAO;

@Stateless
public class StimmeingabePlausiKonfigurationExporter extends AbstractExporter<List<StimmeingabePlausiKonfiguration>, StimmeingabePlausiKonfigurationExportContext> {

  @Inject
  private transient StimmeingabePlausiKonfigurationExportExchange exportExchange;

  @Inject
  private transient WahlDAO wahlDAO;

  @Inject
  private transient StimmeingabePlausiKonfigurationDAO stimmeingabePlausiKonfigurationDAO;

  @Override
  protected ExportExchange<List<StimmeingabePlausiKonfiguration>, StimmeingabePlausiKonfigurationExportContext> getExchange() {
    return exportExchange;
  }

  @Override
  protected List<StimmeingabePlausiKonfiguration> getExportObject(StimmeingabePlausiKonfigurationExportContext stimmeingabePlausiKonfigurationExportContext) {
    return stimmeingabePlausiKonfigurationDAO.findByWahl(wahlDAO.attach(stimmeingabePlausiKonfigurationExportContext.getWahl()));
  }

  @Override
  protected DateiExportArt getDateiExportArt() {
    return DateiExportArt.STIMMEINGABE_PLAUSI_KONFIGURATION_EXPORT;
  }
}
