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

import static java.util.Objects.nonNull;

import java.util.List;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.GebietConstants;
import de.ivu.elect.presentation.AbstractEntitySelectOneMenuProperty;

public class ErgebnisDocumentExportViewGebietProperty<T extends Gebiet> extends AbstractEntitySelectOneMenuProperty<T> {

  private T gebiet;

  public ErgebnisDocumentExportViewGebietProperty(List<T> gebiete) {
    super(gebiete, true);

    // Eager-Loading...
    gebiete.forEach(this::getItemLabel);
  }

  @Override
  public T getValue() {
    return this.gebiet;
  }

  @Override
  public void setValue(T gebiet) {
    this.gebiet = gebiet;
  }

  @Override
  public String getItemLabel(Gebiet gebiet) {
    if (nonNull(gebiet)) {
      return gebiet.getNameMitNummer();
    }

    return "";
  }

  @Override
  public String getNoSelectionLabel() {
    return getMessage("by.ergebnis.exportieren.context.property.gebiet.watermark");
  }

  @Override
  protected String getMessageKeyEntityEinzahl() {
    return GebietConstants.MESSAGE_KEY_ENTITY_EINZAHL;
  }
}
