mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-13 13:03:11 +00:00
[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:

committed by
Tom Desair

parent
e36ded0244
commit
519f0a812c
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user