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

import java.util.ArrayList;
import java.util.List;

import javax.faces.convert.Converter;

import de.ivu.elect.business.gebietsbaum.control.WurzelgebietExchangeFilter;
import de.ivu.elect.jee.faces.StringEmptyToNullConverter;
import de.ivu.elect.jee.presentation.dynamicform.AbstractSelectOneMenuProperty;
import de.ivu.elect.util.CaseAndDiacriticIgnoringComparator;

public class WurzelgebietExchangeFilterGebietNummerSelectOneMenu extends AbstractSelectOneMenuProperty<String> {

  private final WurzelgebietExchangeFilter wurzelgebietFilter;

  public WurzelgebietExchangeFilterGebietNummerSelectOneMenu(WurzelgebietExchangeFilter wurzelgebietFilter) {
    this.wurzelgebietFilter = wurzelgebietFilter;
  }

  @Override
  public List<String> getValues() {
    List<String> result = new ArrayList<>(wurzelgebietFilter.getVerfuegbareWurzelgebietNummernInDatei());
    result.sort(CaseAndDiacriticIgnoringComparator.DEFAULT_INSTANCE);
    return result;
  }

  @Override
  public String getValue() {
    return wurzelgebietFilter.getSelectedWurzelgebietNummer();
  }

  @Override
  public void setValue(String value) {
    wurzelgebietFilter.setSelectedWurzelgebietNummer(value);
  }

  @Override
  public String getItemLabel(String item) {
    return item;
  }

  @Override
  public String getDefaultLabel() {
    return getMessage("import.bestaetigen.wurzelgebiet.filter.gebiet.nummer.select.one.menu.label");
  }

  @Override
  public boolean getDefaultRequired() {
    return true;
  }

  @Override
  public Converter getDefaultConverter() {
    return new StringEmptyToNullConverter();
  }
}
