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

import java.util.function.Function;

import de.ivu.elect.business.ergebnis.entity.ParteienwechselSearchResult;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.gruppe.table.AbstractGruppeColumn;

/**
 *  on 26.10.2015.
 */
public class ParteienwechselParteiColumn extends AbstractParteienwechselColumn {

  private final Function<ParteienwechselSearchResult, PolitischeGruppe> politischeGruppeFunction;

  private final AbstractGruppeColumn gruppeKurznameColumn;

  public ParteienwechselParteiColumn(Messages messages, AbstractGruppeColumn gruppeKurznameColumn, Function<ParteienwechselSearchResult, PolitischeGruppe> politischeGruppeFunction) {
    super(messages);
    this.politischeGruppeFunction = politischeGruppeFunction;
    this.gruppeKurznameColumn = gruppeKurznameColumn;
  }

  @Override
  public Object getValue(ParteienwechselSearchResult result) {
    return gruppeKurznameColumn.getDisplayValue(politischeGruppeFunction.apply(result));
  }

  @Override
  public String getHeader() {
    return getMessage("parteienwechsel.header.partei");
  }

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