mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
DS-3489: Update search objects response document
This commit is contained in:
@@ -8,10 +8,8 @@ import org.dspace.app.rest.model.SearchFacetValueRest;
|
||||
import org.dspace.app.rest.model.SearchResultsRest;
|
||||
import org.dspace.app.rest.parameter.SearchFilter;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.discovery.DiscoverQuery;
|
||||
import org.dspace.discovery.DiscoverResult;
|
||||
import org.dspace.discovery.configuration.DiscoveryConfiguration;
|
||||
import org.dspace.discovery.configuration.DiscoveryConfigurationParameters;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -19,12 +17,12 @@ import org.springframework.stereotype.Component;
|
||||
public class DiscoverFacetResultsConverter {
|
||||
|
||||
|
||||
public FacetResultsRest convert(Context context, String facetName, DiscoverQuery discoverQuery, String dsoScope, List<SearchFilter> searchFilters, DiscoverResult searchResult, DiscoveryConfiguration configuration, Pageable page){
|
||||
public FacetResultsRest convert(Context context, String facetName, String query, String dsoType, String dsoScope, List<SearchFilter> searchFilters, DiscoverResult searchResult, DiscoveryConfiguration configuration, Pageable page){
|
||||
FacetResultsRest facetResultsRest = new FacetResultsRest();
|
||||
|
||||
addToFacetResultList(facetName, searchResult, facetResultsRest, page);
|
||||
|
||||
setRequestInformation(context, facetName, discoverQuery, dsoScope, searchFilters, searchResult, configuration, facetResultsRest, page);
|
||||
setRequestInformation(context, facetName, query, dsoType, dsoScope, searchFilters, searchResult, configuration, facetResultsRest, page);
|
||||
|
||||
return facetResultsRest;
|
||||
}
|
||||
@@ -50,11 +48,11 @@ public class DiscoverFacetResultsConverter {
|
||||
return searchFacetValueRest;
|
||||
}
|
||||
|
||||
private void setRequestInformation(Context context, String facetName, DiscoverQuery discoverQuery, String dsoScope, List<SearchFilter> searchFilters, DiscoverResult searchResult, DiscoveryConfiguration configuration, FacetResultsRest facetResultsRest, Pageable page) {
|
||||
private void setRequestInformation(Context context, String facetName, String query, String dsoType, String dsoScope, List<SearchFilter> searchFilters, DiscoverResult searchResult, DiscoveryConfiguration configuration, FacetResultsRest facetResultsRest, Pageable page) {
|
||||
facetResultsRest.setName(facetName);
|
||||
facetResultsRest.setQuery(discoverQuery.getQuery());
|
||||
facetResultsRest.setQuery(query);
|
||||
facetResultsRest.setScope(dsoScope);
|
||||
facetResultsRest.setQuery(discoverQuery.getQuery());
|
||||
facetResultsRest.setDsoType(dsoType);
|
||||
facetResultsRest.setPage(page);
|
||||
|
||||
if(!searchResult.getFacetResult(facetName).isEmpty()){
|
||||
@@ -66,11 +64,7 @@ public class DiscoverFacetResultsConverter {
|
||||
facetResultsRest.setHasMore(true);
|
||||
}
|
||||
|
||||
if(!discoverQuery.getFacetFields().isEmpty()){
|
||||
DiscoveryConfigurationParameters.SORT sort2 = discoverQuery.getFacetFields().get(0).getSortOrder();
|
||||
SearchResultsRest.Sorting sort = new SearchResultsRest.Sorting(sort2.name());
|
||||
facetResultsRest.setSort(sort);
|
||||
}
|
||||
facetResultsRest.setSort(SearchResultsRest.Sorting.fromPage(page));
|
||||
|
||||
facetResultsRest.setSearchFilters(searchFilters);
|
||||
SearchFilterToAppliedFilterConverter searchFilterToAppliedFilterConverter = new SearchFilterToAppliedFilterConverter();
|
||||
|
@@ -7,17 +7,20 @@
|
||||
*/
|
||||
package org.dspace.app.rest.converter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.dspace.app.rest.model.*;
|
||||
import org.dspace.app.rest.model.DSpaceObjectRest;
|
||||
import org.dspace.app.rest.model.SearchFacetEntryRest;
|
||||
import org.dspace.app.rest.model.SearchFacetValueRest;
|
||||
import org.dspace.app.rest.model.SearchResultEntryRest;
|
||||
import org.dspace.app.rest.model.SearchResultsRest;
|
||||
import org.dspace.app.rest.parameter.SearchFilter;
|
||||
import org.dspace.authority.AuthorityValue;
|
||||
import org.dspace.authority.service.AuthorityValueService;
|
||||
import org.dspace.content.DSpaceObject;
|
||||
import org.dspace.core.Constants;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.discovery.DiscoverQuery;
|
||||
import org.dspace.discovery.DiscoverResult;
|
||||
import org.dspace.discovery.configuration.DiscoveryConfiguration;
|
||||
import org.dspace.discovery.configuration.DiscoverySearchFilterFacet;
|
||||
@@ -26,9 +29,6 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* TODO TOM UNIT TEST
|
||||
*/
|
||||
@@ -39,12 +39,12 @@ public class DiscoverResultConverter {
|
||||
private List<DSpaceObjectConverter> converters;
|
||||
|
||||
|
||||
public SearchResultsRest convert(final Context context, final DiscoverQuery discoverQuery, final String configurationName, final String scope,
|
||||
public SearchResultsRest convert(final Context context, final String query, final String dsoType, final String configurationName, final String scope,
|
||||
final List<SearchFilter> searchFilters, final Pageable page, final DiscoverResult searchResult, final DiscoveryConfiguration configuration) {
|
||||
|
||||
SearchResultsRest resultsRest = new SearchResultsRest();
|
||||
|
||||
setRequestInformation(context, discoverQuery, configurationName, scope, searchFilters, page, resultsRest);
|
||||
setRequestInformation(context, query, dsoType, configurationName, scope, searchFilters, page, resultsRest);
|
||||
|
||||
addSearchResults(searchResult, resultsRest);
|
||||
|
||||
@@ -120,14 +120,11 @@ public class DiscoverResultConverter {
|
||||
return null;
|
||||
}
|
||||
|
||||
private void setRequestInformation(final Context context, final DiscoverQuery discoverQuery, final String configurationName, final String scope,
|
||||
private void setRequestInformation(final Context context, final String query, final String dsoType, final String configurationName, final String scope,
|
||||
final List<SearchFilter> searchFilters, final Pageable page, final SearchResultsRest resultsRest) {
|
||||
resultsRest.setQuery(discoverQuery.getQuery());
|
||||
resultsRest.setQuery(query);
|
||||
resultsRest.setConfigurationName(configurationName);
|
||||
|
||||
if(discoverQuery.getDSpaceObjectFilter() >= 0) {
|
||||
resultsRest.setDsoType(Constants.typeText[discoverQuery.getDSpaceObjectFilter()]);
|
||||
}
|
||||
resultsRest.setDsoType(dsoType);
|
||||
|
||||
resultsRest.setScope(scope);
|
||||
|
||||
|
@@ -11,12 +11,15 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
|
||||
/**
|
||||
* TODO TOM UNIT TEST
|
||||
*/
|
||||
public class SearchResultsRest extends DiscoveryResultsRest {
|
||||
|
||||
@JsonIgnore
|
||||
private long totalNumberOfResults;
|
||||
|
||||
@JsonIgnore
|
||||
@@ -138,5 +141,16 @@ public class SearchResultsRest extends DiscoveryResultsRest {
|
||||
public void setOrder(final String order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
public static Sorting fromPage(final Pageable page) {
|
||||
if (page != null) {
|
||||
Sort sort = page.getSort();
|
||||
if (sort != null && sort.iterator().hasNext()) {
|
||||
Sort.Order order = sort.iterator().next();
|
||||
return new Sorting(order.getProperty(), order.getDirection().name());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -7,6 +7,12 @@
|
||||
*/
|
||||
package org.dspace.app.rest.model.hateoas;
|
||||
|
||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonUnwrapped;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.dspace.app.rest.DiscoveryRestController;
|
||||
@@ -16,15 +22,8 @@ import org.dspace.app.rest.model.SearchResultsRest;
|
||||
import org.dspace.app.rest.utils.Utils;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.hateoas.Link;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||
|
||||
/**
|
||||
* TODO TOM UNIT TEST
|
||||
*/
|
||||
@@ -34,14 +33,13 @@ public class SearchResultsResource extends HALResource {
|
||||
@JsonUnwrapped
|
||||
private final SearchResultsRest data;
|
||||
|
||||
@JsonUnwrapped
|
||||
private EmbeddedPage embeddedSearchResults;
|
||||
|
||||
public SearchResultsResource(final SearchResultsRest data, final Pageable page, final Utils utils) {
|
||||
this.data = data;
|
||||
|
||||
|
||||
addLinks(data);
|
||||
|
||||
addEmbeds(data, page, utils);
|
||||
|
||||
}
|
||||
|
||||
public SearchResultsRest getData(){
|
||||
@@ -72,15 +70,8 @@ public class SearchResultsResource extends HALResource {
|
||||
PageImpl<SearchResultEntryResource> page = new PageImpl<SearchResultEntryResource>(entryResources,
|
||||
pageable, data.getTotalNumberOfResults());
|
||||
|
||||
embedResource("searchResults", new EmbeddedPage(buildBaseLink(data), page, entryResources));
|
||||
}
|
||||
|
||||
private void addLinks(final SearchResultsRest data) {
|
||||
//Create the self link using our Controller
|
||||
String baseLink = buildBaseLink(data);
|
||||
|
||||
Link link = new Link(baseLink, Link.REL_SELF);
|
||||
add(link);
|
||||
embeddedSearchResults = new EmbeddedPage(buildBaseLink(data), page, entryResources);
|
||||
embedResource("searchResults", entryResources);
|
||||
}
|
||||
|
||||
private String buildBaseLink(final SearchResultsRest data) {
|
||||
|
@@ -88,29 +88,22 @@ public class DiscoveryRestRepository extends AbstractDSpaceRestRepository {
|
||||
discoverQuery = queryBuilder.buildQuery(context, scopeObject, configuration, query, searchFilters, dsoType, page);
|
||||
searchResult = searchService.search(context, scopeObject, discoverQuery);
|
||||
|
||||
//TODO set "hasMore" property on facets
|
||||
|
||||
} catch (InvalidRequestException e) {
|
||||
log.warn("Received an invalid request", e);
|
||||
} catch (SearchServiceException e) {
|
||||
log.error("Error while searching with Discovery", e);
|
||||
}
|
||||
|
||||
return discoverResultConverter.convert(context, discoverQuery, configurationName, dsoScope, searchFilters, page, searchResult, configuration);
|
||||
return discoverResultConverter.convert(context, query, dsoType, configurationName, dsoScope, searchFilters, page, searchResult, configuration);
|
||||
}
|
||||
|
||||
public FacetConfigurationRest getFacetsConfiguration(final String dsoScope, final String configurationName) {
|
||||
//TODO
|
||||
Context context = obtainContext();
|
||||
|
||||
DSpaceObject scopeObject = scopeResolver.resolveScope(context, dsoScope);
|
||||
DiscoveryConfiguration configuration = searchConfigurationService.getDiscoveryConfigurationByNameOrDso(configurationName, scopeObject);
|
||||
|
||||
|
||||
return discoverFacetConfigurationConverter.convert(configuration);
|
||||
//TODO Call DiscoveryConfigurationConverter on configuration to convert this API model to the REST model
|
||||
|
||||
//TODO Return REST model
|
||||
}
|
||||
|
||||
public SearchSupportRest getSearchSupport() {
|
||||
@@ -137,7 +130,8 @@ public class DiscoveryRestRepository extends AbstractDSpaceRestRepository {
|
||||
log.error("Error while searching with Discovery", e);
|
||||
//TODO TOM handle search exception
|
||||
}
|
||||
FacetResultsRest facetResultsRest = discoverFacetResultsConverter.convert(context, facetName, discoverQuery, dsoScope, searchFilters, searchResult, configuration, page);
|
||||
|
||||
FacetResultsRest facetResultsRest = discoverFacetResultsConverter.convert(context, facetName, query, dsoType, dsoScope, searchFilters, searchResult, configuration, page);
|
||||
return facetResultsRest;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user