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

import java.util.Collection;

import de.ivu.elect.business.ergebnis.boundary.AbstractStimmenDAO;
import de.ivu.elect.business.ergebnis.entity.Ergebnis;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.presentation.table.AbstractColumnEntry;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

public class GruppeHatVorperiodenStimmenColumn extends AbstractColumnEntry<Gruppe> {

  private final Collection<Ergebnis> ergebnisseVorperiode;

  private final AbstractStimmenDAO stimmenDAO;

  public GruppeHatVorperiodenStimmenColumn(Messages messages, Collection<Ergebnis> ergebnisseVorperiode, AbstractStimmenDAO stimmenDAO) {
    super(messages);
    this.ergebnisseVorperiode = ergebnisseVorperiode;
    this.stimmenDAO = stimmenDAO;
  }

  @Override
  public Object getValue(Gruppe gruppe) {
    for (Ergebnis ergebnis : ergebnisseVorperiode) {
      if (stimmenDAO.findByCountByErgebnisAndGruppe(ergebnis, gruppe) > 0L) {
        return true;
      }
    }

    return false;
  }

  @Override
  public String getHeader() {
    return getMessage("gruppe.column.vorperioden.stimmen.vorhanden");
  }

  @Override
  public ColumnType getType() {
    return ColumnType.BOOLEAN;
  }
}
