1
Comment puis-je implémenter un ressort de pagination?Tri, filtrage et pagination Reposant à l'aide du ressort
un conseil?
public class ClienteServiceImpl implements ClienteService {
public List<Cliente> findAllClientes(final String ragioneSociale, final String partitaIva, String sortBy, String sortOrder, Integer startResult, Integer maxRows) {
Sort sort = null;
Specification<Cliente> specification = null;
if(sortBy != null){
// sorting
sort = new Sort(Direction.fromString(sortOrder), sortBy);
}
if(ragioneSociale != null || partitaIva != null){
// filtering
specification = new Specification<Cliente>() {
public Predicate toPredicate(Root<Cliente> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate p1 = ragioneSociale != null ? cb.like(root.<String>get("ragioneSociale"), ragioneSociale + "%") : cb.isNotNull(root.<Long>get("id"));
Predicate p2 = partitaIva != null ? cb.like(root.<String>get("partitaIva"), partitaIva + "%") : cb.isNotNull(root.<Long>get("id"));
return cb.and(p1,p2);
}
};
}
List<Cliente> clientes = new ArrayList<Cliente>();
if(sort == null && specification == null) clientes = clienteDAO.findAll();
else if(sort != null && specification == null) clientes = clienteDAO.findAll(sort);
else if(sort == null && specification != null) clientes = clienteDAO.findAll(specification);
else if(sort != null && specification != null) clientes = clienteDAO.findAll(specification, sort);
return clientes;
}