# HG changeset patch # User Raimund Renkert # Date 1447857498 -3600 # Node ID 7133f611492046ff2659191322322e5201b22b04 # Parent 7033810468d95dded9973e03d8b7d90a3a15f302 Added 'order by' for multiple columns. diff -r 7033810468d9 -r 7133f6114920 src/main/java/de/intevation/lada/util/data/QueryBuilder.java --- a/src/main/java/de/intevation/lada/util/data/QueryBuilder.java Wed Nov 18 15:37:32 2015 +0100 +++ b/src/main/java/de/intevation/lada/util/data/QueryBuilder.java Wed Nov 18 15:38:18 2015 +0100 @@ -7,12 +7,15 @@ */ package de.intevation.lada.util.data; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Expression; +import javax.persistence.criteria.Order; import javax.persistence.criteria.Path; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; @@ -301,6 +304,24 @@ } /** + * Order result by the specified column name + * + * @param ids Map of column names and boolean for asc/desc. + */ + public void orderBy(Map ids) { + List order = new ArrayList(); + for (String id : ids.keySet()) { + if (ids.get(id)) { + order.add(this.builder.asc(this.root.get(id))); + } + else { + order.add(this.builder.desc(this.root.get(id))); + } + } + this.query.orderBy(order); + } + + /** * Get an empty instance of this builder to create subfilters. * * @return An empty instance of this builder.