package de.ivu.elect.business.statistik.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.statistik.control.StatistikLaufExportContext;
import de.ivu.elect.business.statistik.control.StatsitikLaufExportExchange;
import de.ivu.elect.business.statistik.entity.StatistikLauf;

/**
 *  on 31.01.2017.
 */
@Stateless
public class StatistikLaufExporter extends AbstractExporter<List<StatistikLauf>, StatistikLaufExportContext> {

  @Inject
  StatsitikLaufExportExchange statsitikLaufExportExchange;

  @Inject
  StatistikLaufDAO statistikLaufDAO;

  @Override
  protected ExportExchange<List<StatistikLauf>, StatistikLaufExportContext> getExchange() {
    return statsitikLaufExportExchange;
  }

  @Override
  protected List<StatistikLauf> getExportObject(StatistikLaufExportContext statistikLaufExportContext) {
    if (statistikLaufExportContext.getStatistikLaeufe().isEmpty()) {
      if (statistikLaufExportContext.getWahl() != null) {
        return statistikLaufDAO.findByWahl(statistikLaufExportContext.getWahl());
      } else if (statistikLaufExportContext.getWahltermin() != null) {
        return statistikLaufDAO.findByWahlterminNichtWahl(statistikLaufExportContext.getWahltermin());
      }
    }
    return statistikLaufDAO.attachAll(statistikLaufExportContext.getStatistikLaeufe());
  }

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