|
|
@ -160,22 +160,16 @@ public class JpaRelationDao extends JpaAbstractDaoListeningExecutorService imple |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public ListenableFuture<List<EntityRelation>> findRelations(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType, TimePageLink pageLink) { |
|
|
public ListenableFuture<List<EntityRelation>> findRelations(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType, TimePageLink pageLink) { |
|
|
Specification<RelationEntity> timeSearchSpec = JpaAbstractSearchTimeDao.<RelationEntity>getTimeSearchPageSpec(pageLink, "toId"); |
|
|
Specification<RelationEntity> timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "toId"); |
|
|
Specification<RelationEntity> fieldsSpec = getEntityFieldsSpec(from, relationType, typeGroup, childType); |
|
|
Specification<RelationEntity> fieldsSpec = getEntityFieldsSpec(from, relationType, typeGroup, childType); |
|
|
Pageable pageable = new PageRequest(0, pageLink.getLimit(), |
|
|
Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC; |
|
|
new Sort( |
|
|
Pageable pageable = new PageRequest(0, pageLink.getLimit(), sortDirection, "toId"); |
|
|
new Order(ASC, "relationTypeGroup"), |
|
|
|
|
|
new Order(ASC, "relationType"), |
|
|
|
|
|
new Order(ASC, "toType")) |
|
|
|
|
|
); |
|
|
|
|
|
return service.submit(() -> |
|
|
return service.submit(() -> |
|
|
DaoUtil.convertDataList(relationRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable).getContent())); |
|
|
DaoUtil.convertDataList(relationRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable).getContent())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private Specification<RelationEntity> getEntityFieldsSpec(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType) { |
|
|
private Specification<RelationEntity> getEntityFieldsSpec(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType) { |
|
|
return new Specification<RelationEntity>() { |
|
|
return (root, criteriaQuery, criteriaBuilder) -> { |
|
|
@Override |
|
|
|
|
|
public Predicate toPredicate(Root<RelationEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { |
|
|
|
|
|
List<Predicate> predicates = new ArrayList<>(); |
|
|
List<Predicate> predicates = new ArrayList<>(); |
|
|
if (from != null) { |
|
|
if (from != null) { |
|
|
Predicate fromIdPredicate = criteriaBuilder.equal(root.get("fromId"), UUIDConverter.fromTimeUUID(from.getId())); |
|
|
Predicate fromIdPredicate = criteriaBuilder.equal(root.get("fromId"), UUIDConverter.fromTimeUUID(from.getId())); |
|
|
@ -196,7 +190,6 @@ public class JpaRelationDao extends JpaAbstractDaoListeningExecutorService imple |
|
|
predicates.add(childTypePredicate); |
|
|
predicates.add(childTypePredicate); |
|
|
} |
|
|
} |
|
|
return criteriaBuilder.and(predicates.toArray(new Predicate[0])); |
|
|
return criteriaBuilder.and(predicates.toArray(new Predicate[0])); |
|
|
} |
|
|
|
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|