
package de.ivu.elect.business.wahlvorschlag.entity;

import java.util.function.BiFunction;

public class WahlvorschlagStimmzettelPositionFormatter implements WahlvorschlagStimmzettelPositionFormatterKonfiguration {

  public static final WahlvorschlagStimmzettelPositionFormatter EMPTY = new WahlvorschlagStimmzettelPositionFormatter((formatterKonfiguration, position) -> "",
      (formatterKonfiguration, position) -> "", false);

  private final BiFunction<WahlvorschlagStimmzettelPositionFormatterKonfiguration, Long, String> positionFormatter;

  private final BiFunction<WahlvorschlagStimmzettelPositionFormatterKonfiguration, Long, String> kennzahlFormatter;

  private final boolean waehlerBenannteWahlvorschlaegeErfassbar;

  public WahlvorschlagStimmzettelPositionFormatter(BiFunction<WahlvorschlagStimmzettelPositionFormatterKonfiguration, Long, String> positionFormatter,
      BiFunction<WahlvorschlagStimmzettelPositionFormatterKonfiguration, Long, String> kennzahlFormatter, boolean waehlerBenannteWahlvorschlaegeErfassbar) {
    super();

    this.positionFormatter = positionFormatter;
    this.kennzahlFormatter = kennzahlFormatter;

    this.waehlerBenannteWahlvorschlaegeErfassbar = waehlerBenannteWahlvorschlaegeErfassbar;
  }

  public String formatPositionVorgegeben(Long position) {
    return positionFormatter.apply(this, position);
  }

  public String formatPosition(Long position) {
    return positionFormatter.apply(this, position);
  }

  public String formatKennzahl(Long position) {
    return kennzahlFormatter.apply(this, position);
  }

  @Override
  public boolean isWaehlerBenannteWahlvorschlaegeErfassbar() {
    return waehlerBenannteWahlvorschlaegeErfassbar;
  }
}
