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

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;

import de.ivu.elect.business.dokumente.entity.DokumentVorlageArt;


import static java.util.stream.Collectors.toList;

@RequestScoped
public class DokumentKonverterLookup implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient Instance<DokumentKonverterMarker> dokumentKonverterMarkers;

  public DokumentKonverterLookup() {
    super();
  }

  public List<DokumentKonverter< ? , ? >> getAlleDokumentKonverter() {
    List<DokumentKonverter< ? , ? >> result = new ArrayList<>();

    for (DokumentKonverterMarker dokumentKonverterMarker : dokumentKonverterMarkers) {
      result.add((DokumentKonverter< ? , ? >) dokumentKonverterMarker);
    }

    return result;
  }

  public boolean isDokumentKonverterVorhanden() {
    return !dokumentKonverterMarkers.isUnsatisfied();
  }

  public List<DokumentVorlageArt> collectDokumentVorlageArten() {
    return getAlleDokumentKonverter().stream()
      .map(DokumentKonverter::getDokumentVorlageArt)
      .collect(toList());
  }

}
