[DS-3489] added the facetLimit property to the buildFacetQueries for dates, reversed the order of the returned list to show the oldest pair first

This commit is contained in:
Raf Ponsaerts
2018-02-20 15:30:11 +01:00
committed by Tom Desair
parent e36ded0244
commit 519f0a812c
18 changed files with 118 additions and 100 deletions

View File

@@ -9,6 +9,7 @@ package org.dspace.discovery;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
@@ -330,7 +331,6 @@ public class DiscoverQuery {
// Example: 2001 and a gap from 10 we need the following result: 2010 - 2000 ; 2000 - 1990 hence the top
// year
int topYear = getTopYear(newestYear, gap);
if (gap == 1) {
//We need a list of our years
//We have a date range add faceting for our field
@@ -338,7 +338,8 @@ public class DiscoverQuery {
this.addFacetField(new DiscoverFacetField(facet.getIndexFieldName(), facet.getType(), 10,
facet.getSortOrderSidebar()));
} else {
List<String> facetQueries = buildFacetQueriesWithGap(newestYear, oldestYear, dateFacet, gap, topYear);
List<String> facetQueries = buildFacetQueriesWithGap(newestYear, oldestYear, dateFacet, gap, topYear,
facet.getFacetLimit());
for (String facetQuery : CollectionUtils.emptyIfNull(facetQueries)) {
this.addFacetQuery(facetQuery);
}
@@ -347,10 +348,9 @@ public class DiscoverQuery {
}
private List<String> buildFacetQueriesWithGap(int newestYear, int oldestYear, String dateFacet, int gap,
int topYear) {
int topYear, int facetLimit) {
List<String> facetQueries = new LinkedList<>();
//Create facet queries but limit them to 11 (11 == when we need to show a "show more" url)
for (int year = topYear; year > oldestYear && (facetQueries.size() < 11); year -= gap) {
for (int year = topYear; year > oldestYear && (facetQueries.size() < facetLimit); year -= gap) {
//Add a filter to remove the last year only if we aren't the last year
int bottomYear = year - gap;
//Make sure we don't go below our last year found
@@ -368,10 +368,12 @@ public class DiscoverQuery {
}
facetQueries.add(dateFacet + ":[" + bottomYear + " TO " + currentTop + "]");
}
Collections.reverse(facetQueries);
return facetQueries;
}
private int getTopYear(int newestYear, int gap) {
return (int) (Math.ceil((float) (newestYear) / gap) * gap);
}
}