
package de.ivu.elect.presentation.security;

import java.io.Serializable;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;

import de.ivu.elect.business.security.entity.EntityMitSperrmerkmal;

@RequestScoped
public class SperrmerkmalSecurity implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient SperrmerkmalSecurityDefinition sperrmerkmalSecurityDefinition;

  public SperrmerkmalSecurity() {
    super();
  }

  protected SperrmerkmalSecurity(SperrmerkmalSecurityDefinition sperrmerkmalSecurityDefinition) {
    super();

    this.sperrmerkmalSecurityDefinition = sperrmerkmalSecurityDefinition;
  }

  public boolean isSperreVorhandenUndHervorzuheben(Object entity) {
    return isSperreVorhanden(entity) && isSperreHervorzuheben((EntityMitSperrmerkmal) entity);
  }

  public boolean isSperreVorhandenUndNichtEinsehbar(Object entity) {
    return isSperreVorhanden(entity) && !isSperreEinsehbar((EntityMitSperrmerkmal) entity);
  }

  public boolean isSperreVorhandenUndNichtBearbeitbar(Object entity) {
    return isSperreVorhanden(entity) && !isSperreBearbeitbar((EntityMitSperrmerkmal) entity);
  }

  private boolean isSperreVorhanden(Object entity) {
    return sperrmerkmalSecurityDefinition.isSperreVorhanden(entity);
  }

  private boolean isSperreHervorzuheben(EntityMitSperrmerkmal entityMitSperrmerkmal) {
    return sperrmerkmalSecurityDefinition.isSperreHervorzuheben(entityMitSperrmerkmal);
  }

  private boolean isSperreEinsehbar(EntityMitSperrmerkmal entityMitSperrmerkmal) {
    return sperrmerkmalSecurityDefinition.isSperreEinsehbar(entityMitSperrmerkmal);
  }

  private boolean isSperreBearbeitbar(EntityMitSperrmerkmal entityMitSperrmerkmal) {
    return sperrmerkmalSecurityDefinition.isSperreBearbeitbar(entityMitSperrmerkmal);
  }
}
