package org.ovirt.engine.core.bll; import javax.inject.Inject; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.RolesParameterBase; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.dao.PermissionDao; import org.ovirt.engine.core.dao.RoleDao; public class RemoveRoleCommand<T extends RolesParameterBase> extends RolesCommandBase<T> { @Inject private PermissionDao permissionDao; @Inject private RoleDao roleDao; public RemoveRoleCommand(T parameters, CommandContext commandContext) { super(parameters, commandContext); } @Override protected boolean validate() { boolean returnValue = true; if (getRole() == null) { returnValue = false; addValidationMessage(EngineMessage.ERROR_CANNOT_REMOVE_ROLE_INVALID_ROLE_ID); } else { if (checkIfRoleIsReadOnly(getReturnValue().getValidationMessages())) { returnValue = false; addValidationMessage(EngineMessage.VAR__TYPE__ROLE); addValidationMessage(EngineMessage.VAR__ACTION__REMOVE); } else { if (permissionDao.getAllForRole(getParameters().getRoleId()).size() != 0) { returnValue = false; addValidationMessage(EngineMessage.ERROR_CANNOT_REMOVE_ROLE_ATTACHED_TO_PERMISSION); } } } return returnValue; } @Override public AuditLogType getAuditLogTypeValue() { return getSucceeded() ? AuditLogType.USER_REMOVE_ROLE : AuditLogType.USER_REMOVE_ROLE_FAILED; } @Override protected void executeCommand() { // cache role for logging roleDao.remove(getRole().getId()); setSucceeded(true); } }