
package de.ivu.elect.presentation.veranstaltung.form;

import static org.apache.commons.lang3.StringUtils.isNotBlank;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import de.ivu.elect.business.veranstaltung.entity.SchulungArt;
import de.ivu.elect.business.veranstaltung.entity.VeranstaltungConstants;
import de.ivu.elect.jee.presentation.dynamicform.AbstractEnumProperty;

public abstract class AbstractSchulungArtProperty extends AbstractEnumProperty<SchulungArt> {

  public AbstractSchulungArtProperty() {
    super();
  }

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

  @Override
  public String getDefaultLabel() {
    return getMessage(VeranstaltungConstants.MESSAGE_KEY_SCHULUNG_ART_EINZAHL);
  }

  @Override
  public List<SchulungArt> getValues() {
    return Stream.of(SchulungArt.values()) //
        .filter(this::nurLokalisierteValues) //
        .sorted(Enum::compareTo) //
        .collect(Collectors.toList());
  }

  private boolean nurLokalisierteValues(SchulungArt schulungArt) {
    return isNotBlank(getMessage(schulungArt));
  }
}
