Skip to content
Snippets Groups Projects
Commit de42449c authored by srosse's avatar srosse
Browse files

OO-3111: implement taxonomy order by for items

parent 3646f05e
No related branches found
No related tags found
No related merge requests found
...@@ -127,7 +127,7 @@ public class QItemQueriesDAO { ...@@ -127,7 +127,7 @@ public class QItemQueriesDAO {
} }
if(orderBy != null && orderBy.length > 0 && orderBy[0] != null && !OrderBy.marks.name().equals(orderBy[0].getKey())) { if(orderBy != null && orderBy.length > 0 && orderBy[0] != null && !OrderBy.marks.name().equals(orderBy[0].getKey())) {
appendOrderBy(sb, "item", orderBy); appendOrderBy(sb, "item", "taxonomyLevel", orderBy);
} }
TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager() TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager()
...@@ -210,7 +210,7 @@ public class QItemQueriesDAO { ...@@ -210,7 +210,7 @@ public class QItemQueriesDAO {
if(StringHelper.containsNonWhitespace(format)) { if(StringHelper.containsNonWhitespace(format)) {
sb.append(" and item.format=:format"); sb.append(" and item.format=:format");
} }
appendOrderBy(sb, "item", orderBy); appendOrderBy(sb, "item", "taxonomyLevel", orderBy);
TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager() TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Object[].class) .createQuery(sb.toString(), Object[].class)
...@@ -306,7 +306,7 @@ public class QItemQueriesDAO { ...@@ -306,7 +306,7 @@ public class QItemQueriesDAO {
if(StringHelper.containsNonWhitespace(params.getFormat())) { if(StringHelper.containsNonWhitespace(params.getFormat())) {
sb.append(" and item.format=:format"); sb.append(" and item.format=:format");
} }
appendOrderBy(sb, "item", orderBy); appendOrderBy(sb, "item", "taxonomyLevel", orderBy);
TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager() TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Object[].class) .createQuery(sb.toString(), Object[].class)
...@@ -380,7 +380,7 @@ public class QItemQueriesDAO { ...@@ -380,7 +380,7 @@ public class QItemQueriesDAO {
if(StringHelper.containsNonWhitespace(format)) { if(StringHelper.containsNonWhitespace(format)) {
sb.append(" and item.format=:format"); sb.append(" and item.format=:format");
} }
appendOrderBy(sb, "item", orderBy); appendOrderBy(sb, "item", "taxonomyLevel", orderBy);
TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager() TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Object[].class) .createQuery(sb.toString(), Object[].class)
...@@ -456,7 +456,7 @@ public class QItemQueriesDAO { ...@@ -456,7 +456,7 @@ public class QItemQueriesDAO {
if(StringHelper.containsNonWhitespace(params.getFormat())) { if(StringHelper.containsNonWhitespace(params.getFormat())) {
sb.append(" and item.format=:format"); sb.append(" and item.format=:format");
} }
appendOrderBy(sb, "item", orderBy); appendOrderBy(sb, "item", "taxonomyLevel", orderBy);
TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager() TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Object[].class) .createQuery(sb.toString(), Object[].class)
...@@ -623,7 +623,7 @@ public class QItemQueriesDAO { ...@@ -623,7 +623,7 @@ public class QItemQueriesDAO {
} }
if(orderBy != null && orderBy.length > 0 && orderBy[0] != null && !OrderBy.marks.name().equals(orderBy[0].getKey())) { if(orderBy != null && orderBy.length > 0 && orderBy[0] != null && !OrderBy.marks.name().equals(orderBy[0].getKey())) {
appendOrderBy(sb, "item", orderBy); appendOrderBy(sb, "item", "taxonomyLevel", orderBy);
} }
TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager() TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager()
...@@ -710,14 +710,14 @@ public class QItemQueriesDAO { ...@@ -710,14 +710,14 @@ public class QItemQueriesDAO {
} }
} }
private void appendOrderBy(StringBuilder sb, String dbRef, SortKey... orderBy) { private void appendOrderBy(StringBuilder sb, String itemDbRef, String taxonomyDbRef, SortKey... orderBy) {
if(orderBy != null && orderBy.length > 0 && orderBy[0] != null) { if(orderBy != null && orderBy.length > 0 && orderBy[0] != null) {
String sortKey = orderBy[0].getKey(); String sortKey = orderBy[0].getKey();
boolean asc = orderBy[0].isAsc(); boolean asc = orderBy[0].isAsc();
sb.append(" order by "); sb.append(" order by ");
switch(sortKey) { switch(sortKey) {
case "itemType": case "itemType":
sb.append(dbRef).append(".type.type "); sb.append(itemDbRef).append(".type.type ");
appendAsc(sb, asc); appendAsc(sb, asc);
break; break;
case "marks": case "marks":
...@@ -732,12 +732,22 @@ public class QItemQueriesDAO { ...@@ -732,12 +732,22 @@ public class QItemQueriesDAO {
case "keywords": case "keywords":
case "coverage": case "coverage":
case "additionalInformations": case "additionalInformations":
sb.append("lower(").append(dbRef).append(".").append(sortKey).append(")"); sb.append("lower(").append(itemDbRef).append(".").append(sortKey).append(")");
appendAsc(sb, asc); appendAsc(sb, asc);
sb.append(" nulls last"); sb.append(" nulls last");
break; break;
case "taxonomyLevel":
sb.append("lower(").append(taxonomyDbRef).append(".displayName)");
appendAsc(sb, asc);
sb.append(" nulls last");
break;
case "taxonomyPath":
sb.append("lower(").append(taxonomyDbRef).append(".materializedPathIdentifiers)");
appendAsc(sb, asc);
sb.append(" nulls last");
break;
default: default:
sb.append(dbRef).append(".").append(sortKey); sb.append(itemDbRef).append(".").append(sortKey);
appendAsc(sb, asc); appendAsc(sb, asc);
sb.append(" nulls last"); sb.append(" nulls last");
break; break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment