Skip to content

Commit

Permalink
Merge pull request #576 from EBISPOT/dev
Browse files Browse the repository at this point in the history
  • Loading branch information
henrietteharmse authored Nov 14, 2023
2 parents a347700 + a6292e1 commit 0636f18
Show file tree
Hide file tree
Showing 32 changed files with 2,025 additions and 1,871 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
Expand All @@ -29,7 +30,9 @@

import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
Expand All @@ -48,12 +51,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getClasses(
@RequestParam(value = "boostFields", required = false) String boostFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam MultiValueMap<String,String> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String, Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand All @@ -74,12 +77,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getClasses(
@RequestParam(value = "boostFields", required = false) String boostFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam MultiValueMap<String,String> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String,Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
Expand All @@ -22,7 +23,9 @@

import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
Expand All @@ -42,12 +45,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getEntities(
@RequestParam(value = "facetFields", required = false) String facetFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam MultiValueMap<String,String> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String,Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand All @@ -68,12 +71,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getTerms(
@RequestParam(value = "facetFields", required = false) String facetFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam MultiValueMap<String,String> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String,Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
Expand All @@ -23,7 +24,9 @@

import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
Expand All @@ -42,12 +45,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getIndividuals(
@RequestParam(value = "boostFields", required = false) String boostFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam MultiValueMap<String,String> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String, Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand All @@ -67,12 +70,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getIndividuals(
@RequestParam(value = "boostFields", required = false) String boostFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam MultiValueMap<String,String> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String, Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
import uk.ac.ebi.spot.ols.repository.v2.V2OntologyRepository;

import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
Expand All @@ -47,12 +49,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getOntologies(
@RequestParam(value = "boostFields", required = false) String boostFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam Map<String, Collection<String>> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String,Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriUtils;
import uk.ac.ebi.spot.ols.controller.api.v2.helpers.DynamicQueryHelper;
Expand All @@ -19,7 +20,9 @@

import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
Expand All @@ -38,12 +41,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getProperties(
@RequestParam(value = "boostFields", required = false) String boostFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam Map<String, Collection<String>> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String,Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand All @@ -63,12 +66,12 @@ public HttpEntity<V2PagedAndFacetedResponse<V2Entity>> getProperties(
@RequestParam(value = "boostFields", required = false) String boostFields,
@RequestParam(value = "exactMatch", required = false, defaultValue = "false") boolean exactMatch,
@RequestParam(value = "includeObsoleteEntities", required = false, defaultValue = "false") boolean includeObsoleteEntities,
@RequestParam Map<String,String> searchProperties
@RequestParam MultiValueMap<String,String> searchProperties
) throws ResourceNotFoundException, IOException {

Map<String,String> properties = new HashMap<>();
Map<String,Collection<String>> properties = new HashMap<>();
if(!includeObsoleteEntities)
properties.put("isObsolete", "false");
properties.put("isObsolete", List.of("false"));
properties.putAll(searchProperties);

return new ResponseEntity<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,24 @@

import java.util.HashMap;
import java.util.Map;
import java.util.Collection;

public class DynamicQueryHelper {

public static Map<String,String> filterProperties(Map<String,String> properties) {
public static Map<String,Collection<String>> filterProperties(Map<String,Collection<String>> properties) {

Map<String,String> newProps = new HashMap<>();
Map<String,Collection<String>> newProps = new HashMap<>();

for(String k : properties.keySet()) {

String value = properties.get(k);

k = UriUtils.decode(k, "UTF-8");

if(k.equals("lang") || k.equals("search") || k.equals("searchFields")
|| k.equals("boostFields") || k.equals("page") || k.equals("size") || k.equals("exactMatch")
|| k.equals("includeObsoleteEntities"))
continue;

newProps.put(k, value);
newProps.put(k, properties.get(k));
}

return newProps;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
Expand All @@ -39,6 +40,7 @@ public class OlsSolrClient {
private Gson gson = new Gson();

private static final Logger logger = LoggerFactory.getLogger(OlsSolrClient.class);
public static final int MAX_ROWS = 1000;

public Map<String,Object> getCoreStatus() throws IOException {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
Expand Down Expand Up @@ -111,11 +113,13 @@ public QueryResponse runSolrQuery(SolrQuery query, Pageable pageable) {

if(pageable != null) {
query.setStart((int)pageable.getOffset());
query.setRows(pageable.getPageSize());
query.setRows(pageable.getPageSize() > MAX_ROWS ? MAX_ROWS : pageable.getPageSize());
}

System.out.println("solr query: " + query.toQueryString());
System.out.println("solr host: " + host);
logger.debug("solr rows: {} ", query.getRows());
logger.debug("solr query: {} ", query.toQueryString());
logger.debug("solr query urldecoded: {}",URLDecoder.decode(query.toQueryString()));
logger.debug("solr host: {}", host);

org.apache.solr.client.solrj.SolrClient mySolrClient = new HttpSolrClient.Builder(host + "/solr/ols4_entities").build();

Expand All @@ -139,6 +143,8 @@ public QueryResponse runSolrQuery(SolrQuery query, Pageable pageable) {

public QueryResponse dispatchSearch(SolrQuery query, String core) throws IOException, SolrServerException {
org.apache.solr.client.solrj.SolrClient mySolrClient = new HttpSolrClient.Builder(host + "/solr/" + core).build();
final int rows = query.getRows().intValue() > MAX_ROWS ? MAX_ROWS : query.getRows().intValue();
query.setRows(rows);
QueryResponse qr = mySolrClient.query(query);
mySolrClient.close();
return qr;
Expand Down
Loading

0 comments on commit 0636f18

Please sign in to comment.