Skip to content

Commit

Permalink
Disabled showing Accesioned sort option by cfg (#568)
Browse files Browse the repository at this point in the history
* Disabled showing `Accesioned sort option` by cfg

* Fixed when the `sort.options.filtered` property is empty
  • Loading branch information
milanmajchrak authored Mar 26, 2024
1 parent 8cb0431 commit dcf8431
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
*/
package org.dspace.app.rest.converter;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.dspace.app.rest.model.SearchConfigurationRest;
import org.dspace.app.rest.projection.Projection;
Expand All @@ -19,6 +21,8 @@
import org.dspace.discovery.configuration.DiscoverySearchFilterFacet;
import org.dspace.discovery.configuration.DiscoverySortConfiguration;
import org.dspace.discovery.configuration.DiscoverySortFieldConfiguration;
import org.dspace.services.ConfigurationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
Expand All @@ -29,6 +33,9 @@
public class DiscoverConfigurationConverter
implements DSpaceConverter<DiscoveryConfiguration, SearchConfigurationRest> {

@Autowired
ConfigurationService configurationService;

@Override
public SearchConfigurationRest convert(DiscoveryConfiguration configuration, Projection projection) {
SearchConfigurationRest searchConfigurationRest = new SearchConfigurationRest();
Expand Down Expand Up @@ -70,6 +77,12 @@ private void addSortOptions(SearchConfigurationRest searchConfigurationRest,
if (searchSortConfiguration != null) {
for (DiscoverySortFieldConfiguration discoverySearchSortConfiguration : CollectionUtils
.emptyIfNull(searchSortConfiguration.getSortFields())) {
List<String> filteredSortOptions = Arrays.asList(ArrayUtils.nullToEmpty((
configurationService.getArrayProperty("sort.options.filtered", new String[0]))));
if (filteredSortOptions.contains(discoverySearchSortConfiguration.getMetadataField())) {
return;
}

SearchConfigurationRest.SortOption sortOption = new SearchConfigurationRest.SortOption();
if (StringUtils.isBlank(discoverySearchSortConfiguration.getMetadataField())) {
sortOption.setName(DiscoverySortConfiguration.SCORE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -966,6 +966,9 @@ public void discoverFacetsDateTestWithSearchFilter() throws Exception {

@Test
public void discoverSearchTest() throws Exception {
// Hide the sorting option for dc.date.accessioned, but ensure it is still configured
// for loading recent submissions on the browsing page.
// This sort filtering is configured by `sort.options.filtered` property

//When calling this root endpoint
getClient().perform(get("/api/discover/search"))
Expand Down Expand Up @@ -1011,9 +1014,7 @@ public void discoverSearchTest() throws Exception {
SortOptionMatcher.sortOptionMatcher(
"dc.date.issued", DiscoverySortFieldConfiguration.SORT_ORDER.asc.name()),
SortOptionMatcher.sortOptionMatcher(
"dc.date.issued", DiscoverySortFieldConfiguration.SORT_ORDER.desc.name()),
SortOptionMatcher.sortOptionMatcher(
"dc.date.accessioned", DiscoverySortFieldConfiguration.SORT_ORDER.desc.name())
"dc.date.issued", DiscoverySortFieldConfiguration.SORT_ORDER.desc.name())
)));
}

Expand All @@ -1025,7 +1026,7 @@ public void checkSortOrderInPersonOrOrgunitConfigurationTest() throws Exception
.andExpect(jsonPath("$.type", is("discover")))
.andExpect(jsonPath("$._links.objects.href", containsString("api/discover/search/objects")))
.andExpect(jsonPath("$._links.self.href", containsString("api/discover/search")))
.andExpect(jsonPath("$.sortOptions", contains(
.andExpect(jsonPath("$.sortOptions", containsInAnyOrder(
SortOptionMatcher.sortOptionMatcher("dspace.entity.type",
DiscoverySortFieldConfiguration.SORT_ORDER.desc.name()),
SortOptionMatcher.sortOptionMatcher("organization.legalName",
Expand All @@ -1035,14 +1036,6 @@ public void checkSortOrderInPersonOrOrgunitConfigurationTest() throws Exception
SortOptionMatcher.sortOptionMatcher("organisation.address.addressLocality",
DiscoverySortFieldConfiguration.SORT_ORDER.asc.name()),
SortOptionMatcher.sortOptionMatcher("organisation.foundingDate",
DiscoverySortFieldConfiguration.SORT_ORDER.desc.name()),
SortOptionMatcher.sortOptionMatcher("dc.date.accessioned",
DiscoverySortFieldConfiguration.SORT_ORDER.desc.name()),
SortOptionMatcher.sortOptionMatcher("person.familyName",
DiscoverySortFieldConfiguration.SORT_ORDER.asc.name()),
SortOptionMatcher.sortOptionMatcher("person.givenName",
DiscoverySortFieldConfiguration.SORT_ORDER.asc.name()),
SortOptionMatcher.sortOptionMatcher("person.birthDate",
DiscoverySortFieldConfiguration.SORT_ORDER.desc.name())
)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.dspace.discovery.configuration.DiscoverySearchFilter;
import org.dspace.discovery.configuration.DiscoverySortConfiguration;
import org.dspace.discovery.configuration.DiscoverySortFieldConfiguration;
import org.dspace.services.ConfigurationService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -45,6 +46,9 @@ public class DiscoverConfigurationConverterTest {
@Mock
private DiscoveryConfiguration discoveryConfiguration;

@Mock
private ConfigurationService configurationService;

@Before
public void setUp() throws Exception {
}
Expand Down
7 changes: 6 additions & 1 deletion dspace/config/clarin-dspace.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -259,4 +259,9 @@ build.version.file.path = ${dspace.dir}/config/VERSION_D.txt

#### Item View ####
# Show handle and doi as identifiers - show only DOI if it exists instead of handle by default
item-page.show-handle-and-doi = false
item-page.show-handle-and-doi = false


#### Searching properties ####
# Filter sort options for the search
sort.options.filtered = dc.date.accessioned

0 comments on commit dcf8431

Please sign in to comment.