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

import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.business.wahl.entity.Wahl;

import javax.ejb.Stateless;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Stateless
public class GruppeLogoFuerStimmzettelPruefer implements Serializable {

  private static final Logger LOG = LoggerFactory.getLogger(GruppeLogoFuerStimmzettelPruefer.class);

  @Inject
  private transient PolitischeGruppeDAO politischeGruppeDAO;

  public List<Gruppe> bestimmeGruppenMitLogoNichtStimmzettelKonform(Wahl wahl) {
    if (wahl == null) {
      return Collections.emptyList();
    }
    List<Gruppe> result = new ArrayList<>();
    for (PolitischeGruppe gruppe : politischeGruppeDAO.findByWahl(wahl)) {
      if (gruppe.isLogoVorhanden()) {
        try {
          ImageIO.read(gruppe.getLogo().getStreamedContent().getStream());
        } catch (IOException e) {
          LOG.warn("Das Logo der Gruppe " + gruppe.getKurzname() + " ist nicht stimmzettelkonform: ", e);
          result.add(gruppe);
        }
      }
    }
    return result;
  }
}
