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();
}
}
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);
}
Aggregations