
package de.ivu.elect.presentation.security;

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.system.entity.ElectSimplePrincipal;

public class BearbeitenGebietSecurity extends AbstractGebietSecurity {

  private static final long serialVersionUID = 1L;

  @Inject
  private EinsehenGebietSecurity einsehenGebietSecurity;

  public BearbeitenGebietSecurity() {
    super();
  }

  /**
   * Das Recht zum Bearbeiten setzt das Recht zum Einsehen voraus...
   */
  @Override
  public boolean isRechtVorhanden(Gebiet gebiet) {
    return einsehenGebietSecurity.isRechtVorhanden(gebiet) && super.isRechtVorhanden(gebiet);
  }

  @Override
  protected String getNotwendigeRolle(Gebiet gebiet) {
    return gebiet.getRollenNameFuerBearbeiten();
  }

  @Override
  protected UseCasePermission getRechtAlleGebiete() {
    return UseCasePermission.GEBIET_ALLE_BEARBEITEN;
  }

  @Override
  protected String getSecurityPermissionMissingForGebietMsgKey() {
    return GebietSecurityException.BEARBEITEN_SECURITY_PERMISSION_MISSING_FOR_GEBIET_MSG_KEY;
  }

  @Override
  protected String getSecurityPermissionMissingForGebieteMsgKey() {
    return GebietSecurityException.BEARBEITEN_SECURITY_PERMISSION_MISSING_FOR_GEBIETE_MSG_KEY;
  }

  @Override
  public void setAlternativerPrincipal(ElectSimplePrincipal alternativerPrincipal) {
    super.setAlternativerPrincipal(alternativerPrincipal);
    einsehenGebietSecurity.setAlternativerPrincipal(alternativerPrincipal); // ELECTBB-480
  }
}
