}
}
- /**
- * Null save method which compiles an order by clause from the given list of OrderHints
- *
- * @param orderHints can be NULL
- * @return a StringBuffer holding the hql orderby clause
- */
- protected StringBuffer orderByClause(List<OrderHint> orderHints, String aliasName) {
-
- StringBuffer orderString = new StringBuffer();
-
- StringBuffer aliasPrefix = new StringBuffer(" ");
- if(aliasName != null && !aliasName.isEmpty()){
- aliasPrefix.append(aliasName).append(".");
- }
-
- if(orderHints != null && !orderHints.isEmpty()) {
- for(OrderHint orderHint : orderHints) {
- orderString.append((orderString.length() < 2) ? " ORDER BY " : "," );
- orderString.append(aliasPrefix).append(orderHint.toHql());
- }
- }
- return orderString;
- }
protected void addOrder(Criteria criteria, List<OrderHint> orderHints) {
if(orderHints != null){
}
/**
- * @param hql
- * @param orderHints
+ * Null save method which compiles an order by clause from the given list of OrderHints
+ *
+ * @param orderHints can be NULL
+ * @return a StringBuffer holding the hql orderby clause
*/
- protected void addOrder(StringBuilder hql, String alias, List<OrderHint> orderHints) {
- boolean orderByAdded = false;
- String fieldPrefix = "";
- if(alias != null){
- fieldPrefix = alias + ".";
+ protected StringBuilder orderByClause(String aliasName, List<OrderHint> orderHints) {
+
+ StringBuilder orderString = new StringBuilder();
+
+ StringBuffer aliasPrefix = new StringBuffer(" ");
+ if(aliasName != null && !aliasName.isEmpty()){
+ aliasPrefix.append(aliasName).append(".");
}
- if(orderHints != null && !orderHints.isEmpty()){
- for(OrderHint oh : orderHints){
- if(oh != null){
- if(!orderByAdded){
- hql.append(" order by ");
- }
- hql.append(fieldPrefix + oh.toHql() + (orderByAdded ? ", ": " "));
- orderByAdded = true;
- }
- }
+ if(orderHints != null && !orderHints.isEmpty()) {
+ for(OrderHint orderHint : orderHints) {
+ orderString.append((orderString.length() < 2) ? " ORDER BY " : "," );
+ orderString.append(aliasPrefix).append(orderHint.toHql());
+ }
}
+ return orderString;
}
+ /**
+ * @param hql
+ * @param orderHints
+ */
+ protected void addOrder(StringBuilder hql, String alias, List<OrderHint> orderHints) {
+ hql.append(orderByClause(alias, orderHints));
+ }
+
// ---------------------------- //
}
Optional<String> infraGenericEpithet, Optional<String> specificEpithet,
Optional<String> infraSpecificEpithet, Rank rank, Integer pageSize, Integer pageIndex, List<OrderHint> orderHints) {
- StringBuilder hql = prepareFindTaxonNameParts(false, genusOrUninomial, infraGenericEpithet, specificEpithet, infraSpecificEpithet, rank);
+ StringBuilder hql = prepareFindTaxonNameParts(false, genusOrUninomial, infraGenericEpithet,
+ specificEpithet, infraSpecificEpithet, rank);
addOrder(hql, "n", orderHints);
Query query = getSession().createQuery(hql.toString());
if(rank != null){
query.setParameter("rank", rank);
}
setPagingParameter(query, pageSize, pageIndex);
- List<?> result = query.list();
- return (List<TaxonNameParts>) result;
+ @SuppressWarnings("unchecked")
+ List<TaxonNameParts> result = query.list();
+ return result;
}
String queryString = "FROM SpecimenOrObservationBase specimens "\r
+ " WHERE specimens.recordBasis = :type ";\r
\r
- queryString += orderByClause(orderHints, "specimens");\r
+ queryString += orderByClause("specimens", orderHints);\r
\r
Query query = getSession().createQuery(queryString);\r
query.setParameter("type", type);\r
String queryString = "FROM DeterminationEvent determination "\r
+ " WHERE determination.identifiedUnit = :specimen";\r
\r
- queryString += orderByClause(orderHints, "determination");\r
+ queryString += orderByClause("determination", orderHints);\r
\r
Query query = getSession().createQuery(queryString);\r
query.setParameter("specimen", specimen);\r
String queryString = "FROM SpecimenTypeDesignation designations "\r
+ " WHERE designations.typeSpecimen = :specimen";\r
\r
- queryString += orderByClause(orderHints, "designations");\r
+ queryString += orderByClause("designations", orderHints);\r
\r
Query query = getSession().createQuery(queryString);\r
query.setParameter("specimen", specimen);\r
//DISTINCT is necessary if more than one description exists for a taxon because we create the cross product of all taxon descriptions and description elements\r
String queryString = "FROM IndividualsAssociation associations WHERE associations.associatedSpecimenOrObservation = :specimen";\r
\r
- queryString += orderByClause(orderHints, "associations");\r
+ queryString += orderByClause("associations", orderHints);\r
\r
Query query = getSession().createQuery(queryString);\r
query.setParameter("specimen", specimen);\r
String queryString = "FROM DescriptionBase descriptions "\r
+ " WHERE descriptions.describedSpecimenOrObservation = :specimen";\r
\r
- queryString += orderByClause(orderHints, "descriptions");\r
+ queryString += orderByClause("descriptions", orderHints);\r
\r
Query query = getSession().createQuery(queryString);\r
query.setParameter("specimen", specimen);\r
String queryString = "FROM SpecimenOrObservationBase sob "\r
+ "WHERE sob.gatheringEvent.uuid = :gatheringEventUuid";\r
\r
- queryString += orderByClause(orderHints, "sob");\r
+ queryString += orderByClause("sob", orderHints);\r
\r
Query query = getSession().createQuery(queryString);\r
query.setParameter("gatheringEventUuid", gatheringEventUuid);\r
String queryString = prepareTaxonRelationshipQuery(type, includePublished, direction, false);
- queryString += orderByClause(orderHints, "rel");
+ queryString += orderByClause("rel", orderHints);
Query query = getSession().createQuery(queryString);
query.setParameter("relatedTaxon", taxon);