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

import java.util.function.Function;

import de.ivu.elect.business.ergebnis.entity.GewinnerUnterlegenerStimmendifferenzSearchResult;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.kandidatur.entity.Direktkandidatur;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.table.ColorColumnEntryWrapper;

/**
 *  on 02.06.2015.
 */
public class GewinnerUnterlegenerStimmendifferenzGruppeFarbeColumn extends AbstractGewinnerUnterlegenerStimmendifferenzColumn {

  private final Function<GewinnerUnterlegenerStimmendifferenzSearchResult, Direktkandidatur> direktkandidaturFct;


  private final ColorColumnEntryWrapper<Gruppe> gruppeFarbeColumn;

  public GewinnerUnterlegenerStimmendifferenzGruppeFarbeColumn(Function<GewinnerUnterlegenerStimmendifferenzSearchResult, Direktkandidatur> direktkandidaturFct, Messages messages, ColorColumnEntryWrapper<Gruppe> gruppeFarbeColumn) {
    super(messages);
    this.direktkandidaturFct = direktkandidaturFct;
    this.gruppeFarbeColumn = gruppeFarbeColumn;
  }

  @Override
  public Object getValue(GewinnerUnterlegenerStimmendifferenzSearchResult gewinnerUnterlegenerStimmendifferenzSearchResult) {
    return gruppeFarbeColumn.getDisplayValue(getDirektkandidatur(gewinnerUnterlegenerStimmendifferenzSearchResult).getGruppe());
  }

  protected Direktkandidatur getDirektkandidatur(GewinnerUnterlegenerStimmendifferenzSearchResult gewinnerUnterlegenerStimmendifferenzSearchResult){
    return direktkandidaturFct.apply(gewinnerUnterlegenerStimmendifferenzSearchResult);
  }

  @Override
  public String getHeader() {
    return "";
  }

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