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

import static java.util.Arrays.asList;

import java.util.EnumSet;
import java.util.List;

import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.security.entity.EntityMitSperrmerkmal;
import de.ivu.elect.jee.presentation.Icons;

public enum Sperrmerkmal {

  UNBEKANNT {

    @Override
    public String getIcon(Icons icons) {
      return icons.getIconQuestion();
    }

    @Override
    public UseCasePermission getBenoetigtesRecht() {
      return UseCasePermission.OHNE;
    }
  },
  KEINE_SPERRE {

    @Override
    public String getIcon(Icons icons) {
      return icons.getIconBooleanFalse();
    }

    @Override
    public UseCasePermission getBenoetigtesRecht() {
      return UseCasePermission.OHNE;
    }
  },
  AUSKUNFTSSPERRE {

    @Override
    public String getIcon(Icons icons) {
      return icons.getIconLock();
    }

    @Override
    public UseCasePermission getBenoetigtesRecht() {
      return UseCasePermission.PERSONENREGISTER_PERSON_MIT_SPERRMERKMAL_LESEN;
    }
  };

  private Sperrmerkmal() {
  }

  public abstract String getIcon(Icons icons);

  public abstract UseCasePermission getBenoetigtesRecht();

  public static boolean isGesetzt(EntityMitSperrmerkmal entity) {
    return entity.getSperrmerkmal() != null && !EnumSet.of(Sperrmerkmal.UNBEKANNT, Sperrmerkmal.KEINE_SPERRE).contains(entity.getSperrmerkmal());
  }

  public static List<Sperrmerkmal> valuesSorted() {
    return asList(Sperrmerkmal.values());
  }
}
