use of org.springframework.data.domain.Sort in project ignite by apache.
the class IgniteSpringDataQueriesSelfTest method testQueryWithSort.
/**
*/
public void testQueryWithSort() {
List<Person> persons = repo.queryWithSort("^[a-z]+$", new Sort(Sort.Direction.DESC, "secondName"));
Person previous = persons.get(0);
for (Person person : persons) {
assertTrue(person.getSecondName().compareTo(previous.getSecondName()) <= 0);
assertTrue(person.getFirstName().matches("^[a-z]+$"));
previous = person;
}
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class DefaultWorkflowHistoricProcessInstanceService method find.
@Override
public Page<WorkflowHistoricProcessInstanceDto> find(WorkflowFilterDto filter, Pageable pageable, BasePermission... permission) {
String processDefinitionId = filter.getProcessDefinitionId();
String processInstanceId = filter.getProcessInstanceId();
Map<String, Object> equalsVariables = filter.getEqualsVariables();
HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery();
boolean trimmed = true;
if (processInstanceId != null) {
// Process variables will be included only for get by instance ID
trimmed = false;
query.includeProcessVariables();
query.processInstanceId(processInstanceId);
}
if (processDefinitionId != null) {
query.processDefinitionId(processDefinitionId);
}
if (filter.getSuperProcessInstanceId() != null) {
query.superProcessInstanceId(filter.getSuperProcessInstanceId());
}
if (filter.getProcessDefinitionKey() != null) {
// For case when we have only process id, we will convert him to key
query.processDefinitionKey(convertProcessIdToKey(filter.getProcessDefinitionKey()));
}
if (filter.getName() != null) {
// with case sensitive
query.variableValueLike(WorkflowHistoricProcessInstanceService.PROCESS_INSTANCE_NAME, "%" + filter.getName() + "%");
}
if (equalsVariables != null) {
for (Entry<String, Object> entry : equalsVariables.entrySet()) {
query.variableValueEquals(entry.getKey(), entry.getValue());
}
}
// TODO: refactor and use username/id from filter
if (!securityService.isAdmin()) {
// Applicant and Implementer is added to involved user after process
// (subprocess) started. This modification allow not use OR clause.
query.involvedUser(securityService.getCurrentId().toString());
}
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;
}
}
}
}
if (WorkflowHistoricProcessInstanceService.SORT_BY_START_TIME.equals(fieldForSort)) {
query.orderByProcessInstanceStartTime();
} else if (WorkflowHistoricProcessInstanceService.SORT_BY_END_TIME.equals(fieldForSort)) {
query.orderByProcessInstanceEndTime();
} else {
query.orderByProcessDefinitionId();
// there must be default order
query.asc();
}
if (ascSort) {
query.asc();
}
if (descSort) {
query.desc();
}
long count = query.count();
// it's possible that pageable is null
List<HistoricProcessInstance> processInstances = null;
if (pageable == null) {
processInstances = query.list();
} else {
processInstances = query.listPage((pageable.getPageNumber()) * pageable.getPageSize(), pageable.getPageSize());
}
List<WorkflowHistoricProcessInstanceDto> dtos = new ArrayList<>();
if (processInstances != null) {
for (HistoricProcessInstance instance : processInstances) {
dtos.add(toResource(instance, trimmed));
}
}
return new PageImpl<WorkflowHistoricProcessInstanceDto>(dtos, pageable, count);
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class DefaultWorkflowHistoricProcessInstanceService method search.
/**
* Search process history. Process variables will be included only for get
* specific process history. It means filter.processInstanceId is filled.
*
* @param filter
* @return
*/
@Override
public ResourcesWrapper<WorkflowHistoricProcessInstanceDto> search(WorkflowFilterDto filter) {
Pageable pageable = null;
// get pageable setting from filter - backward compatibility
if (StringUtils.isNotEmpty(filter.getSortByFields())) {
Sort sort = null;
if (filter.isSortAsc()) {
sort = new Sort(Direction.ASC, filter.getSortByFields());
} else {
sort = new Sort(Direction.DESC, filter.getSortByFields());
}
pageable = new PageRequest(filter.getPageNumber(), filter.getPageSize(), sort);
} else {
pageable = new PageRequest(filter.getPageNumber(), filter.getPageSize());
}
Page<WorkflowHistoricProcessInstanceDto> page = this.find(filter, pageable);
return new ResourcesWrapper<>(page.getContent(), page.getTotalElements(), page.getTotalPages(), filter.getPageNumber(), filter.getPageSize());
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class DefaultWorkflowHistoricTaskInstanceService method search.
@Override
public ResourcesWrapper<WorkflowHistoricTaskInstanceDto> search(WorkflowFilterDto filter) {
Pageable pageable = null;
// get pageable setting from filter - backward compatibility
if (StringUtils.isNotEmpty(filter.getSortByFields())) {
Sort sort = null;
if (filter.isSortAsc()) {
sort = new Sort(Direction.ASC, filter.getSortByFields());
} else {
sort = new Sort(Direction.DESC, filter.getSortByFields());
}
pageable = new PageRequest(filter.getPageNumber(), filter.getPageSize(), sort);
} else {
pageable = new PageRequest(filter.getPageNumber(), filter.getPageSize());
}
Page<WorkflowHistoricTaskInstanceDto> page = this.find(filter, pageable);
return new ResourcesWrapper<>(page.getContent(), page.getTotalElements(), page.getTotalPages(), filter.getPageNumber(), filter.getPageSize());
}
use of org.springframework.data.domain.Sort in project CzechIdMng by bcvsolutions.
the class DefaultWorkflowHistoricTaskInstanceService method find.
@Override
public Page<WorkflowHistoricTaskInstanceDto> find(WorkflowFilterDto filter, Pageable pageable, BasePermission... permission) {
String processDefinitionId = filter.getProcessDefinitionId();
String processInstanceId = filter.getProcessInstanceId();
HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
query.includeProcessVariables();
if (filter.getId() != null) {
query.taskId(filter.getId().toString());
}
if (processInstanceId != null) {
query.processInstanceId(processInstanceId);
}
if (processDefinitionId != null) {
query.processDefinitionId(processDefinitionId);
}
if (filter.getProcessDefinitionKey() != null) {
query.processDefinitionKey(filter.getProcessDefinitionKey());
}
// historic task instance ... admin can see all historic tasks every time
if (!securityService.isAdmin()) {
// TODO Now we don't have detail for historic task. When we need detail, then we will need create different projection (detail can't be read by applicant)
String loggedUserId = securityService.getCurrentId().toString();
query.taskInvolvedUser(loggedUserId);
}
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;
}
}
}
}
if (WorkflowHistoricTaskInstanceService.SORT_BY_CREATE_TIME.equals(fieldForSort)) {
query.orderByTaskCreateTime();
} else if (WorkflowHistoricTaskInstanceService.SORT_BY_END_TIME.equals(fieldForSort)) {
query.orderByHistoricTaskInstanceEndTime();
} else {
query.orderByProcessDefinitionId();
// there must be default order
query.asc();
}
if (ascSort) {
query.asc();
}
if (descSort) {
query.desc();
}
long count = query.count();
List<HistoricTaskInstance> processInstances = null;
if (pageable == null) {
processInstances = query.list();
} else {
processInstances = query.listPage((pageable.getPageNumber()) * pageable.getPageSize(), pageable.getPageSize());
}
List<WorkflowHistoricTaskInstanceDto> dtos = new ArrayList<>();
if (processInstances != null) {
for (HistoricTaskInstance instance : processInstances) {
dtos.add(toResource(instance));
}
}
return new PageImpl<WorkflowHistoricTaskInstanceDto>(dtos, pageable, count);
}
Aggregations