use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class DefaultWorkflowProcessInstanceService method find.
@Override
public Page<WorkflowProcessInstanceDto> find(WorkflowFilterDto filter, Pageable pageable, BasePermission... permission) {
// we must call original method search because is there check flag checkRight
if (pageable != null) {
filter.setPageNumber(pageable.getPageNumber());
filter.setPageSize(pageable.getPageSize());
//
String fieldForSort = null;
boolean ascSort = false;
boolean descSort = false;
if (pageable != null) {
Sort sort = pageable.getSort();
if (sort != null) {
for (Order order : sort) {
if (!StringUtils.isEmpty(order.getProperty())) {
// TODO: now is implemented only one property sort
fieldForSort = order.getProperty();
if (order.getDirection() == Direction.ASC) {
ascSort = true;
} else if (order.getDirection() == Direction.DESC) {
descSort = true;
}
break;
}
}
}
}
filter.setSortAsc(ascSort);
filter.setSortDesc(descSort);
filter.setSortByFields(fieldForSort);
}
ResourcesWrapper<WorkflowProcessInstanceDto> search = this.search(filter);
//
ResourcePage pages = search.getPage();
List<WorkflowProcessInstanceDto> processes = (List<WorkflowProcessInstanceDto>) search.getResources();
//
return new PageImpl<WorkflowProcessInstanceDto>(processes, pageable, pages.getTotalElements());
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class IdmIdentityController method organizationPosition.
/**
* Get given identity's prime position in organization.
*
* @param backendId
* @return Positions from root to closest parent
*/
@ResponseBody
@RequestMapping(value = "/{backendId}/work-position", method = RequestMethod.GET)
@PreAuthorize("hasAuthority('" + CoreGroupPermission.IDENTITY_READ + "')")
@ApiOperation(value = "Identity prime position in organization.", nickname = "getIdentityPosition", tags = { IdmIdentityController.TAG }, authorizations = { @Authorization(value = SwaggerConfig.AUTHENTICATION_BASIC, scopes = { @AuthorizationScope(scope = CoreGroupPermission.IDENTITY_READ, description = "") }), @Authorization(value = SwaggerConfig.AUTHENTICATION_CIDMST, scopes = { @AuthorizationScope(scope = CoreGroupPermission.IDENTITY_READ, description = "") }) })
public ResponseEntity<?> organizationPosition(@ApiParam(value = "Identity's uuid identifier or username.", required = true) @PathVariable String backendId) {
IdmIdentityDto identity = getDto(backendId);
if (identity == null) {
throw new ResultCodeException(CoreResultCode.NOT_FOUND, ImmutableMap.of("entity", backendId));
}
//
IdmIdentityContractDto primeContract = identityContractService.getPrimeContract(identity.getId());
if (primeContract == null) {
return new ResponseEntity<Object>(HttpStatus.NO_CONTENT);
}
WorkPositionDto position = new WorkPositionDto(identity, primeContract);
if (primeContract.getWorkPosition() != null) {
IdmTreeNodeDto contractPosition = treeNodeService.get(primeContract.getWorkPosition());
position.getPath().addAll(treeNodeService.findAllParents(contractPosition.getId(), new Sort(Direction.ASC, "forestIndex.lft")));
position.getPath().add(contractPosition);
}
return new ResponseEntity<WorkPositionDto>(position, HttpStatus.OK);
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class RebuildTreeNodeIndexTaskExecutor method process.
@Override
public Boolean process() {
if (!configurationService.getBooleanValue(DefaultForestIndexService.PROPERTY_INDEX_ENABLED, true)) {
throw new ResultCodeException(CoreResultCode.FOREST_INDEX_DISABLED, ImmutableMap.of("property", DefaultForestIndexService.PROPERTY_INDEX_ENABLED));
}
IdmTreeTypeDto treeType = getTreeType();
String longRunningTaskId = configurationService.getValue(treeTypeService.getConfigurationPropertyName(treeTypeCode, IdmTreeTypeService.CONFIGURATION_PROPERTY_REBUILD));
if (StringUtils.hasLength(longRunningTaskId) && !longRunningTaskId.equals(getLongRunningTaskId().toString())) {
throw new ResultCodeException(CoreResultCode.FOREST_INDEX_RUNNING, ImmutableMap.of("type", IdmTreeNode.toForestTreeType(treeType.getId())));
}
//
LOG.info("Starting rebuilding tree node index for tree type code [{}].", treeTypeCode);
// clear all rgt, lft
try {
forestIndexService.dropIndexes(IdmTreeNode.toForestTreeType(treeType.getId()));
} finally {
configurationService.setBooleanValue(treeTypeService.getConfigurationPropertyName(treeTypeCode, IdmTreeTypeService.CONFIGURATION_PROPERTY_VALID), false);
}
try {
configurationService.setValue(treeTypeService.getConfigurationPropertyName(treeTypeCode, IdmTreeTypeService.CONFIGURATION_PROPERTY_REBUILD), getLongRunningTaskId().toString());
//
Page<IdmTreeNode> nodes = treeNodeRepository.findByTreeType_Id(treeType.getId(), new PageRequest(0, 100, new Sort("id")));
count = nodes.getTotalElements();
counter = 0L;
boolean canContinue = true;
while (canContinue) {
for (IdmTreeNode node : nodes) {
if (node.getForestIndex() == null) {
forestIndexService.index(node.getForestTreeType(), node.getId(), node.getParentId());
}
counter++;
canContinue = updateState();
if (!canContinue) {
break;
}
}
;
if (!nodes.hasNext()) {
break;
}
nodes = treeNodeRepository.findByTreeType_Id(treeType.getId(), nodes.nextPageable());
}
//
if (count.equals(counter)) {
configurationService.deleteValue(treeTypeService.getConfigurationPropertyName(treeTypeCode, IdmTreeTypeService.CONFIGURATION_PROPERTY_VALID));
LOG.info("Tree node index for tree type code [{}] was successfully rebuilt (index size [{}]).", treeTypeCode, counter);
return Boolean.TRUE;
}
//
LOG.warn("Tree node index for tree type code [{}] rebuild was canceled (index size [{}]).", treeTypeCode, counter);
return Boolean.FALSE;
} finally {
configurationService.deleteValue(treeTypeService.getConfigurationPropertyName(treeTypeCode, IdmTreeTypeService.CONFIGURATION_PROPERTY_REBUILD));
}
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class RemoveOldLogsTaskExecutor method process.
@Override
public Boolean process() {
if (days == null) {
LOG.warn("Parameter {} is not filled. This task will be skipped.", PARAMETER_DAYS);
return Boolean.TRUE;
}
//
IdmLoggingEventFilter filter = new IdmLoggingEventFilter();
filter.setTill(DateTime.now().minusDays(days.intValue()));
Page<IdmLoggingEventDto> loggingEvents = loggingEventService.find(filter, new PageRequest(0, 100, new Sort(IdmLoggingEvent_.timestmp.getName())));
//
Long exceptionCounter = 0l;
boolean canContinue = true;
this.count = loggingEvents.getTotalElements();
this.setCounter(0l);
//
while (canContinue) {
for (IdmLoggingEventDto event : loggingEvents) {
Long eventId = Long.valueOf(event.getId().toString());
//
LOG.debug("Event id: [{}] will be removed", event.getId());
loggingEventExceptionService.deleteByEventId(eventId);
loggingEventPropertyService.deleteAllByEventId(eventId);
loggingEventService.deleteAllById(eventId);
this.increaseCounter();
//
canContinue = updateState();
if (!canContinue) {
break;
}
}
//
loggingEvents = loggingEventService.find(filter, new PageRequest(0, 100, new Sort(IdmLoggingEvent_.timestmp.getName())));
//
if (loggingEvents.getContent().isEmpty()) {
break;
}
}
//
LOG.info("Removed logs older than [{}] days was successfully completed. Removed logs: [{}] and their exceptions [{}].", days, this.counter, exceptionCounter);
//
return Boolean.TRUE;
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class DefaultIdmFormDefinitionService method toDto.
@Override
protected IdmFormDefinitionDto toDto(IdmFormDefinition entity, IdmFormDefinitionDto dto) {
dto = super.toDto(entity, dto);
if (dto != null && !dto.isTrimmed()) {
// set mapped attributes
IdmFormAttributeFilter filter = new IdmFormAttributeFilter();
filter.setDefinitionId(dto.getId());
dto.setFormAttributes(formAttributeService.find(filter, new PageRequest(0, Integer.MAX_VALUE, new Sort(IdmFormAttribute_.seq.getName(), IdmFormAttribute_.name.getName()))).getContent());
}
return dto;
}
Aggregations