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

import static java.util.Arrays.asList;

import java.util.List;

import de.ivu.elect.business.personenpruefung.control.wahlrecht.WahlrechtPflichtangabe;
import de.ivu.elect.jee.presentation.dynamicform.LambdaEnumSelectManyProperty;
import de.ivu.elect.jee.presentation.dynamicform.Property;
import de.ivu.elect.jee.presentation.dynamicform.PropertyType;

public class PflichtangabenPersonPruefungKonfigurationCustomData extends AbstractEnumSelectManyPersonPruefungKonfigurationCustomData<WahlrechtPflichtangabe> {

  private static final long serialVersionUID = 1L;

  public PflichtangabenPersonPruefungKonfigurationCustomData(List<WahlrechtPflichtangabe> defaultValues) {
    super(defaultValues);
  }

  @Override
  protected Class<WahlrechtPflichtangabe> getEnumClass() {
    return WahlrechtPflichtangabe.class;
  }

  @Override
  protected List<WahlrechtPflichtangabe> getPropertyValues() {
    return asList(WahlrechtPflichtangabe.values());
  }

  @Override
  protected String getPropertyLabelMsgKey() {
    return "PflichtangabenPersonPruefungKonfiguration.label";
  }

  @Override
  protected Property createProperty() {
    return new LambdaEnumSelectManyProperty<>(PropertyType.SELECT_MANY_CHECKBOX_MENU, getPropertyLabel(), isPropertyValueRequired(), this::setValues, this::getValues, getEnumClass(),
        getPropertyValues()) {

      @Override
      protected String getItemLabelMessageKey(WahlrechtPflichtangabe value) {
        if (value == null) {
          return super.getItemLabelMessageKey(value);
        }

        return value.getLabelMsgKey();
      }
    };
  }
}
