Search in sources :

Example 1 with RoleCatalogueEvent

use of eu.bcvsolutions.idm.core.model.event.RoleCatalogueEvent in project CzechIdMng by bcvsolutions.

the class RoleCatalogueDeleteBulkAction method processDto.

@Override
protected OperationResult processDto(IdmRoleCatalogueDto roleCatalogue) {
    boolean forceDelete = getParameterConverter().toBoolean(getProperties(), EntityEventProcessor.PROPERTY_FORCE_DELETE, false);
    if (!forceDelete) {
        return super.processDto(roleCatalogue);
    }
    // force delete
    try {
        // force delete can execute role catalogue admin only
        getService().checkAccess(roleCatalogue, IdmBasePermission.ADMIN);
        // 
        RoleCatalogueEvent roleCatalogueEvent = new RoleCatalogueEvent(RoleCatalogueEventType.DELETE, roleCatalogue, new ConfigurationMap(getProperties()).toMap());
        roleCatalogueService.publish(roleCatalogueEvent);
        // 
        return new OperationResult.Builder(OperationState.EXECUTED).build();
    } catch (ResultCodeException ex) {
        return new OperationResult.Builder(OperationState.EXCEPTION).setException(ex).build();
    } catch (Exception ex) {
        Throwable resolvedException = ExceptionUtils.resolveException(ex);
        if (resolvedException instanceof ResultCodeException) {
            return // 
            new OperationResult.Builder(OperationState.EXCEPTION).setException(// 
            (ResultCodeException) resolvedException).build();
        }
        return new OperationResult.Builder(OperationState.EXCEPTION).setCause(ex).build();
    }
}
Also used : ResultCodeException(eu.bcvsolutions.idm.core.api.exception.ResultCodeException) OperationResult(eu.bcvsolutions.idm.core.api.entity.OperationResult) ConfigurationMap(eu.bcvsolutions.idm.core.api.domain.ConfigurationMap) RoleCatalogueEvent(eu.bcvsolutions.idm.core.model.event.RoleCatalogueEvent) ResultCodeException(eu.bcvsolutions.idm.core.api.exception.ResultCodeException)

Example 2 with RoleCatalogueEvent

use of eu.bcvsolutions.idm.core.model.event.RoleCatalogueEvent in project CzechIdMng by bcvsolutions.

the class RoleCatalogueDeleteProcessor method process.

@Override
public EventResult<IdmRoleCatalogueDto> process(EntityEvent<IdmRoleCatalogueDto> event) {
    IdmRoleCatalogueDto roleCatalogue = event.getContent();
    UUID roleCatalogueId = roleCatalogue.getId();
    Assert.notNull(roleCatalogueId, "Role catalogue id is required.");
    boolean forceDelete = getBooleanProperty(PROPERTY_FORCE_DELETE, event.getProperties());
    // 
    if (!forceDelete) {
        if (service.findChildrenByParent(roleCatalogueId, PageRequest.of(0, 1)).getTotalElements() != 0) {
            throw new ResultCodeException(CoreResultCode.ROLE_CATALOGUE_DELETE_FAILED_HAS_CHILDREN, ImmutableMap.of("roleCatalogue", roleCatalogue.getCode()));
        }
    } else {
        // 
        // remove children at first recursively
        List<IdmRoleCatalogueDto> children = service.findChildrenByParent(roleCatalogueId, null).getContent();
        for (int counter = 0; counter < children.size(); counter++) {
            RoleCatalogueEvent roleCatalogueEvent = new RoleCatalogueEvent(RoleCatalogueEventType.DELETE, children.get(counter));
            // ~ propagate force and priority from parent event
            service.publish(roleCatalogueEvent, event);
            // children can have unlimited children => clear session
            clearSession();
        }
    }
    // 
    // remove assigned roles into role catalogue
    List<IdmRoleCatalogueRoleDto> rolesInCatalogue = roleCatalogueRoleService.findAllByRoleCatalogue(roleCatalogue.getId());
    for (int counter = 0; counter < rolesInCatalogue.size(); counter++) {
        roleCatalogueRoleService.delete(rolesInCatalogue.get(counter));
        // 
        if (counter % 100 == 0) {
            clearSession();
        }
    }
    // 
    service.deleteInternal(event.getContent());
    // 
    return new DefaultEventResult<>(event, this);
}
Also used : IdmRoleCatalogueRoleDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleCatalogueRoleDto) ResultCodeException(eu.bcvsolutions.idm.core.api.exception.ResultCodeException) DefaultEventResult(eu.bcvsolutions.idm.core.api.event.DefaultEventResult) IdmRoleCatalogueDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleCatalogueDto) UUID(java.util.UUID) RoleCatalogueEvent(eu.bcvsolutions.idm.core.model.event.RoleCatalogueEvent)

Aggregations

ResultCodeException (eu.bcvsolutions.idm.core.api.exception.ResultCodeException)2 RoleCatalogueEvent (eu.bcvsolutions.idm.core.model.event.RoleCatalogueEvent)2 ConfigurationMap (eu.bcvsolutions.idm.core.api.domain.ConfigurationMap)1 IdmRoleCatalogueDto (eu.bcvsolutions.idm.core.api.dto.IdmRoleCatalogueDto)1 IdmRoleCatalogueRoleDto (eu.bcvsolutions.idm.core.api.dto.IdmRoleCatalogueRoleDto)1 OperationResult (eu.bcvsolutions.idm.core.api.entity.OperationResult)1 DefaultEventResult (eu.bcvsolutions.idm.core.api.event.DefaultEventResult)1 UUID (java.util.UUID)1