
package de.ivu.elect.business.gebietsbaum.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.gebietsbaum.control.GebietGeometrieExportExchange;
import de.ivu.elect.business.gebietsbaum.entity.GebietGeometrieExportContext;
import de.ivu.elect.business.gebietsbaum.entity.GebietPolygonPoint;
import de.ivu.elect.business.gebietsbaum.entity.GebietPolygonPointMeta;
import de.ivu.elect.business.wahl.boundary.WahlDAO;

@Stateless
public class GebietGeometrieExporter
    extends
    AbstractExporter<List<GebietPolygonPoint>, GebietGeometrieExportContext> {

  @Inject
  GebietPolygonPointMeta meta;

  @Inject
  GebietGeometrieExportExchange gebietGeometrieExportExchange;

  @Inject
  WahlDAO wahlDAO;

  @Inject
  GebietPolygonPointDAO gebietPolygonPointDAO;

  @Inject
  GebietDAO gebietDAO;

  @Override
  protected ExportExchange<List<GebietPolygonPoint>, GebietGeometrieExportContext> getExchange() {
    return gebietGeometrieExportExchange;
  }

  @Override
  protected List<GebietPolygonPoint> getExportObject(GebietGeometrieExportContext gebietGeometrieExportContext) {
    if (gebietGeometrieExportContext.getWahl() != null) {
      return gebietPolygonPointDAO.findByWahl(gebietGeometrieExportContext.getWahl());
    }
    return gebietPolygonPointDAO.findByWahltermin(gebietGeometrieExportContext.getWahltermin());
  }

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