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

import java.util.function.Function;

import de.ivu.elect.business.ergebnis.entity.GewinnerUnterlegenerStimmendifferenzSearchResult;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

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

  private final Function<GewinnerUnterlegenerStimmendifferenzSearchResult, Long> stimmenFct;

  private final String headerKey;

  public GewinnerUnterlegenerStimmendifferenzStimmenColumn(Function<GewinnerUnterlegenerStimmendifferenzSearchResult, Long> stimmenFct, Messages messages) {
    this("gewinner.unterlegener.stimmendifferenz.stimmen", stimmenFct,messages);
  }

  public GewinnerUnterlegenerStimmendifferenzStimmenColumn( String headerKey, Function<GewinnerUnterlegenerStimmendifferenzSearchResult, Long> stimmenFct, Messages messages) {
    super(messages);
    this.headerKey = headerKey;
    this.stimmenFct = stimmenFct;
  }

  @Override
  public Object getValue(GewinnerUnterlegenerStimmendifferenzSearchResult gewinnerUnterlegenerStimmendifferenzSearchResult) {
    return stimmenFct.apply(gewinnerUnterlegenerStimmendifferenzSearchResult);
  }

  @Override
  public String getHeader() {
    return getMessage(headerKey);
  }

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