/** See {@link OrcidApiServiceDelegator}{@link #searchByQuery(Map)} */ @Override @VisibilityControl public Response searchByQuery(Map<String, List<String>> queryMap) { OrcidMessage orcidMessage = orcidSearchManager.findOrcidsByQuery(queryMap); List<OrcidSearchResult> searchResults = orcidMessage.getOrcidSearchResults() != null ? orcidMessage.getOrcidSearchResults().getOrcidSearchResult() : null; List<OrcidSearchResult> filteredResults = new ArrayList<OrcidSearchResult>(); OrcidSearchResults orcidSearchResults = new OrcidSearchResults(); if (searchResults != null) { orcidSearchResults.setNumFound(orcidMessage.getOrcidSearchResults().getNumFound()); if (searchResults.size() > 0) { for (OrcidSearchResult searchResult : searchResults) { OrcidSearchResult filteredSearchResult = new OrcidSearchResult(); OrcidProfile filteredProfile = new OrcidProfile(); filteredSearchResult.setRelevancyScore(searchResult.getRelevancyScore()); filteredProfile.setOrcid(searchResult.getOrcidProfile().getOrcid()); filteredProfile.setOrcidId(searchResult.getOrcidProfile().getOrcidId()); filteredProfile.setOrcidIdentifier(searchResult.getOrcidProfile().getOrcidIdentifier()); filteredProfile.setOrcidBio(searchResult.getOrcidProfile().getOrcidBio()); filteredSearchResult.setOrcidProfile(filteredProfile); filteredResults.add(filteredSearchResult); } } } orcidSearchResults.getOrcidSearchResult().addAll(filteredResults); return getOrcidSearchResultsResponse(orcidSearchResults, queryMap.toString()); }
@Override @VisibilityControl(removeAttributes = false) @AccessControl(requiredScope = ScopePathType.READ_PUBLIC, enableAnonymousAccess = true) @NonLocked public Response findFullDetailsFromPublicCache(String orcid) { try { OrcidMessage orcidMessage = orcidSearchManager.findPublicProfileById(orcid); return getOrcidMessageResponse(orcidMessage, orcid); } catch (OrcidSearchException e) { LOGGER.warn("Error searching, so falling back to DB", e); return findFullDetails(orcid); } }
@Override @VisibilityControl(removeAttributes = false) @AccessControl(requiredScope = ScopePathType.READ_PUBLIC, enableAnonymousAccess = true) @NonLocked public Response findExternalIdentifiersFromPublicCache(String orcid) { try { OrcidMessage orcidMessage = orcidSearchManager.findPublicProfileById(orcid); if (orcidMessage != null) { OrcidProfile orcidProfile = orcidMessage.getOrcidProfile(); if (orcidProfile != null) { orcidProfile.downgradeToExternalIdentifiersOnly(); } } return getOrcidMessageResponse(orcidMessage, orcid); } catch (OrcidSearchException e) { LOGGER.warn("Error searching, so falling back to DB", e); return findExternalIdentifiers(orcid); } }