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

import java.util.ArrayList;
import java.util.Collections;
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.internet.control.InternetKonfigurationExportExchange;
import de.ivu.elect.business.internet.entity.InternetKonfigurationExchangeContext;
import de.ivu.elect.business.internet.entity.InternetKonfigurationExchangeObject;
import de.ivu.elect.business.internet.entity.InternetSeite;

@Stateless
public class InternetKonfigurationExporter extends AbstractExporter<InternetKonfigurationExchangeObject, InternetKonfigurationExchangeContext> {

  @Inject
  private transient InternetSeiteDAO internetSeiteDAO;

  @Inject
  private transient InternetKonfigurationExportExchange exportExchange;

  public InternetKonfigurationExporter() {
    super();
  }

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

  @Override
  public ExportExchange<InternetKonfigurationExchangeObject, InternetKonfigurationExchangeContext> getExchange() {
    return exportExchange;
  }

  @Override
  public InternetKonfigurationExchangeObject getExportObject(InternetKonfigurationExchangeContext context) {
    if (context.getWahl() == null) {
      return new InternetKonfigurationExchangeObject(Collections.emptyList());
    }

    List<InternetSeite> seiten = new ArrayList<>(internetSeiteDAO.findByWahl(context.getWahl()));

    if (context.isNurAktiveExportieren()) {
      seiten.removeIf(i->!i.getStatus().isAktiv());
    }

    return new InternetKonfigurationExchangeObject(seiten);
  }

}
