
package de.ivu.elect.presentation.ergebniskonflikt.table;

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

import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonflikt;
import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonfliktCustomDataFormatter;
import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonfliktLosoption;
import de.ivu.elect.business.gruppe.boundary.AbstractPolitischeGruppeDAO;
import de.ivu.elect.business.kandidatur.boundary.AbstractKandidaturDAO;
import de.ivu.elect.business.sitzberechnung.entity.OsvLegacyKonfliktCustomData;
import de.ivu.elect.business.wahlvorschlag.boundary.AbstractWahlvorschlagDAO;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

public class NlErgebnisKonfliktLosoptionenVerfuegbarColumn extends AbstractErgebnisKonfliktColumn<ErgebnisKonflikt> {

  private static final long serialVersionUID = 1L;

  protected NlErgebnisKonfliktLosoptionenVerfuegbarColumn(Messages messages, ErgebnisKonfliktCustomDataFormatter ergebnisKonfliktCustomDataFormatter, AbstractPolitischeGruppeDAO politischeGruppeDAO,
      AbstractWahlvorschlagDAO wahlvorschlagDAO, AbstractKandidaturDAO kandidaturDAO) {
    super("NlErgebnisKonfliktLosoptionenVerfuegbarColumn", messages, "entity.mehrzahl.ERGEBNIS_KONFLIKT.LOSOPTION", ColumnType.STRING,
        ergebnisKonflikt -> ergebnisKonflikt.getCustomData(OsvLegacyKonfliktCustomData.class)
            .getLosoptionenVerfuegbar(ergebnisKonfliktCustomDataFormatter, wahlvorschlagDAO, kandidaturDAO, null, politischeGruppeDAO, null).stream().map(ErgebnisKonfliktLosoption::getLosoptionName)
            .collect(joining("\n\n")));
  }

  @Override
  public String getStyle() {
    return "white-space: pre-wrap";
  }
}
