From ccd7d069cb8e1df800a4924a67b430852fc02d5a Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Thu, 4 Jan 2024 11:23:13 +0200 Subject: [PATCH] reference refactor --- .../java/eu/eudat/audit/AuditableAction.java | 1 + .../reference/ReferenceServiceImpl.java | 17 +-- .../reference/external/RemoteFetcher.java | 101 +++++++++--------- .../controllers/v2/ReferenceController.java | 39 +++---- .../logic/managers/DataRepositoryManager.java | 6 +- .../managers/ExternalDatasetManager.java | 2 +- .../eudat/logic/managers/FunderManager.java | 2 +- .../eu/eudat/logic/managers/GrantManager.java | 2 +- .../eudat/logic/managers/LicenseManager.java | 2 +- .../logic/managers/OrganisationsManager.java | 4 +- .../eudat/logic/managers/ProjectManager.java | 2 +- .../logic/managers/PublicationManager.java | 2 +- .../eudat/logic/managers/RegistryManager.java | 2 +- .../logic/managers/ResearcherManager.java | 2 +- .../eudat/logic/managers/ServiceManager.java | 2 +- .../eudat/logic/managers/TaxonomyManager.java | 2 +- .../logic/managers/ValidationManager.java | 2 +- .../services/ExternalValidationService.java | 2 +- 18 files changed, 97 insertions(+), 95 deletions(-) diff --git a/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java b/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java index 52d640878..a252c748a 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java +++ b/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java @@ -50,6 +50,7 @@ public class AuditableAction { public static final EventId Reference_Lookup = new EventId(7001, "Reference_Lookup"); public static final EventId Reference_Persist = new EventId(7002, "Reference_Persist"); public static final EventId Reference_Delete = new EventId(7003, "Reference_Delete"); + public static final EventId Reference_Search = new EventId(7004, "Reference_Search"); public static final EventId DescriptionTemplate_Query = new EventId(8000, "DescriptionTemplate_Query"); public static final EventId DescriptionTemplate_Lookup = new EventId(8001, "DescriptionTemplate_Lookup"); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java index 39308fb9f..3bef463ac 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java @@ -197,9 +197,15 @@ public class ReferenceServiceImpl implements ReferenceService { @Override public List searchReference(ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { + int initialOffset = 0; + if (lookup.getPage() != null && !lookup.getPage().isEmpty()){ + initialOffset = lookup.getPage().getOffset(); + lookup.getPage().setOffset(0); + } + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(lookup.getLike()); - List> remoteRepos = remoteFetcher.get(lookup.getType(), externalReferenceCriteria, lookup.getKey()); + List> remoteRepos = remoteFetcher.getReferences(lookup.getType(), externalReferenceCriteria, lookup.getKey()); List externalModels = this.builderFactory.builder(ReferenceSearchBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), remoteRepos); List models = this.fetchFromDb(lookup); @@ -208,16 +214,15 @@ public class ReferenceServiceImpl implements ReferenceService { models = models.stream().filter(x -> x.getLabel().toLowerCase().contains(lookup.getLike().toLowerCase())).collect(Collectors.toList()); models.sort(Comparator.comparing(Reference::getLabel)); + + if (lookup.getPage() != null && !lookup.getPage().isEmpty()){ + models = models.stream().skip(initialOffset).limit(lookup.getPage().getSize()).toList(); + } return models; } private List fetchFromDb(ReferenceSearchLookup lookup){ - - List fields = Arrays.asList(Reference._id, Reference._label, Reference._description, Reference._abbreviation, Reference._source, - Reference._isActive, Reference._createdAt, Reference._updatedAt, Reference._type, Reference._definition, Reference._reference, Reference._sourceType ); - lookup.setProject(new BaseFieldSet(fields)); - ReferenceQuery query = lookup.enrich(this.queryFactory).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic); List data = query.collectAs(lookup.getProject()); return this.builderFactory.builder(ReferenceBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), data); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcher.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcher.java index 2fa985e21..3810661c5 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcher.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcher.java @@ -12,14 +12,12 @@ import eu.eudat.service.reference.external.config.entities.GenericUrls; import eu.eudat.service.reference.external.models.ExternalRefernceResult; import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; import eu.eudat.service.reference.external.criteria.FetchStrategy; -import eu.eudat.service.storage.StorageFileService; import gr.cite.tools.exception.MyNotFoundException; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.Unmarshaller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.Cacheable; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; import org.springframework.http.client.reactive.ReactorClientHttpConnector; @@ -29,7 +27,6 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.reactive.function.client.WebClient; import reactor.netty.http.client.HttpClient; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.StringReader; import java.lang.reflect.Method; @@ -41,19 +38,25 @@ import java.util.stream.Collectors; public class RemoteFetcher { private static final Logger logger = LoggerFactory.getLogger(RemoteFetcher.class); - private final WebClient client; + private WebClient webClient; private final ExternalUrlConfigProvider externalUrlConfigProvider; @Autowired public RemoteFetcher(ExternalUrlConfigProvider externalUrlConfigProvider) { this.externalUrlConfigProvider = externalUrlConfigProvider; - this.client = WebClient.builder().codecs(clientCodecConfigurer -> { - clientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON)); - clientCodecConfigurer.defaultCodecs().maxInMemorySize(2 * ((int) Math.pow(1024, 3))); //GK: Why here??? - } - ).clientConnector(new ReactorClientHttpConnector(HttpClient.create().followRedirect(true))).build(); + } + + private WebClient getWebClient(){ + if (this.webClient == null) { + this.webClient = WebClient.builder().codecs(clientCodecConfigurer -> { + clientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON)); + clientCodecConfigurer.defaultCodecs().maxInMemorySize(2 * ((int) Math.pow(1024, 3))); //GK: Why here??? + } + ).clientConnector(new ReactorClientHttpConnector(HttpClient.create().followRedirect(true))).build(); + } + return webClient; } - public List> get(ReferenceType referenceType, ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException { + public List> getReferences(ReferenceType referenceType, ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException { FetchStrategy fetchStrategy = null; GenericUrls exGenericUrls = this.getExternalUrls(referenceType); List urlConfigs = key != null && !key.isEmpty() ? exGenericUrls.getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) @@ -67,26 +70,26 @@ public class RemoteFetcher { } public GenericUrls getExternalUrls(ReferenceType referenceType) { - switch (referenceType){ - case Taxonomies: return this.externalUrlConfigProvider.getExternalUrls().getTaxonomies(); - case Licenses: return this.externalUrlConfigProvider.getExternalUrls().getLicenses(); - case Publications: return this.externalUrlConfigProvider.getExternalUrls().getPublications(); - case Journals: return this.externalUrlConfigProvider.getExternalUrls().getJournals(); - case PubRepositories: return this.externalUrlConfigProvider.getExternalUrls().getPubRepositories(); - case DataRepositories: return this.externalUrlConfigProvider.getExternalUrls().getRepositories(); - case Registries: return this.externalUrlConfigProvider.getExternalUrls().getRegistries(); - case Services: return this.externalUrlConfigProvider.getExternalUrls().getServices(); - case Grants: return this.externalUrlConfigProvider.getExternalUrls().getGrants(); - case Organizations: return this.externalUrlConfigProvider.getExternalUrls().getOrganisations(); - case Datasets: return this.externalUrlConfigProvider.getExternalUrls().getDatasets(); - case Funder: return this.externalUrlConfigProvider.getExternalUrls().getFunders(); - case Project: return this.externalUrlConfigProvider.getExternalUrls().getProjects(); - case Researcher: return this.externalUrlConfigProvider.getExternalUrls().getResearchers(); - default: throw new IllegalArgumentException("Type not found" + referenceType); - } + return switch (referenceType) { + case Taxonomies -> this.externalUrlConfigProvider.getExternalUrls().getTaxonomies(); + case Licenses -> this.externalUrlConfigProvider.getExternalUrls().getLicenses(); + case Publications -> this.externalUrlConfigProvider.getExternalUrls().getPublications(); + case Journals -> this.externalUrlConfigProvider.getExternalUrls().getJournals(); + case PubRepositories -> this.externalUrlConfigProvider.getExternalUrls().getPubRepositories(); + case DataRepositories -> this.externalUrlConfigProvider.getExternalUrls().getRepositories(); + case Registries -> this.externalUrlConfigProvider.getExternalUrls().getRegistries(); + case Services -> this.externalUrlConfigProvider.getExternalUrls().getServices(); + case Grants -> this.externalUrlConfigProvider.getExternalUrls().getGrants(); + case Organizations -> this.externalUrlConfigProvider.getExternalUrls().getOrganisations(); + case Datasets -> this.externalUrlConfigProvider.getExternalUrls().getDatasets(); + case Funder -> this.externalUrlConfigProvider.getExternalUrls().getFunders(); + case Project -> this.externalUrlConfigProvider.getExternalUrls().getProjects(); + case Researcher -> this.externalUrlConfigProvider.getExternalUrls().getResearchers(); + default -> throw new IllegalArgumentException("Type not found" + referenceType); + }; } - public Integer findEntries(ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException { + public Integer countEntries(ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException { List urlConfigs = key != null && !key.isEmpty() ? this.externalUrlConfigProvider.getExternalUrls().getValidations().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) : this.externalUrlConfigProvider.getExternalUrls().getValidations().getUrls(); @@ -116,22 +119,22 @@ public class RemoteFetcher { // throw new MyNotFoundException("No Repository urls found in configuration"); urlConfigs.sort(Comparator.comparing(UrlConfiguration::getOrdinal)); - urlConfigs.forEach(urlConfiguration -> { - ifFunderQueryExist(urlConfiguration, externalReferenceCriteria); - if (urlConfiguration.getType() == null || urlConfiguration.getType().equals("External")) { - try { - String auth = null; - if (urlConfiguration.getAuth() != null) { - auth = this.getAuthentication(urlConfiguration.getAuth()); - } - results.addAll(getAllResultsFromUrl(urlConfiguration.getUrl(), fetchStrategy, urlConfiguration.getData(), urlConfiguration.getPaginationPath(), externalReferenceCriteria, urlConfiguration.getLabel(), urlConfiguration.getKey(), urlConfiguration.getContentType(), urlConfiguration.getFirstpage(), urlConfiguration.getRequestBody(), urlConfiguration.getRequestType(), urlConfiguration.getFilterType(), urlConfiguration.getQueries(), auth)); - } catch (Exception e) { - logger.error(e.getLocalizedMessage(), e); - } - } else if (urlConfiguration.getType() != null && urlConfiguration.getType().equals("Internal")) { - results.addAll(getAllResultsFromMockUpJson(urlConfiguration.getUrl(), externalReferenceCriteria.getLike())); - } - }); + for (UrlConfiguration urlConfiguration : urlConfigs) { + applyFunderQuery(urlConfiguration, externalReferenceCriteria); + if (urlConfiguration.getType() == null || urlConfiguration.getType().equals("External")) { + try { + String auth = null; + if (urlConfiguration.getAuth() != null) { + auth = this.getAuthentication(urlConfiguration.getAuth()); + } + results.addAll(getAllResultsFromUrl(urlConfiguration.getUrl(), fetchStrategy, urlConfiguration.getData(), urlConfiguration.getPaginationPath(), externalReferenceCriteria, urlConfiguration.getLabel(), urlConfiguration.getKey(), urlConfiguration.getContentType(), urlConfiguration.getFirstpage(), urlConfiguration.getRequestBody(), urlConfiguration.getRequestType(), urlConfiguration.getFilterType(), urlConfiguration.getQueries(), auth)); + } catch (Exception e) { + logger.error(e.getLocalizedMessage(), e); + } + } else if (urlConfiguration.getType() != null && urlConfiguration.getType().equals("Internal")) { + results.addAll(getAllResultsFromMockUpJson(urlConfiguration.getUrl(), externalReferenceCriteria.getLike())); + } + } /* for (UrlConfiguration urlConfig : urlConfigs) { ifFunderQueryExist(urlConfig, externalUrlCriteria); if (urlConfig.getType() == null || urlConfig.getType().equals("External")) { @@ -145,7 +148,7 @@ public class RemoteFetcher { private String getAuthentication(AuthenticationConfiguration authenticationConfiguration) { HttpMethod method = HttpMethod.valueOf(authenticationConfiguration.getAuthMethod()); - Map reponse = this.client.method(method).uri(authenticationConfiguration.getAuthUrl()) + Map response = this.getWebClient().method(method).uri(authenticationConfiguration.getAuthUrl()) .contentType(MediaType.APPLICATION_JSON) .bodyValue(this.parseBodyString(authenticationConfiguration.getAuthRequestBody())) .exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference>() { @@ -153,7 +156,7 @@ public class RemoteFetcher { - return authenticationConfiguration.getType() + " " + reponse.get(authenticationConfiguration.getAuthTokenPath()); + return authenticationConfiguration.getType() + " " + response.get(authenticationConfiguration.getAuthTokenPath()); } private List> getAllWithData(List urlConfigs, ExternalReferenceCriteria externalReferenceCriteria) { @@ -166,7 +169,7 @@ public class RemoteFetcher { urlConfigs.sort(Comparator.comparing(UrlConfiguration::getOrdinal)); urlConfigs.forEach(urlConfiguration -> { - ifFunderQueryExist(urlConfiguration, externalReferenceCriteria); + applyFunderQuery(urlConfiguration, externalReferenceCriteria); if (urlConfiguration.getType() == null || urlConfiguration.getType().equals("External")) { try { results.addAll(getAllResultsFromUrlWithData(urlConfiguration.getUrl(), urlConfiguration.getData(), externalReferenceCriteria, urlConfiguration.getContentType(), urlConfiguration.getFirstpage(), urlConfiguration.getRequestBody(), urlConfiguration.getRequestType(), urlConfiguration.getQueries())); @@ -179,7 +182,7 @@ public class RemoteFetcher { } - private void ifFunderQueryExist(UrlConfiguration urlConfiguration, ExternalReferenceCriteria externalReferenceCriteria) { + private void applyFunderQuery(UrlConfiguration urlConfiguration, ExternalReferenceCriteria externalReferenceCriteria) { if (urlConfiguration.getFunderQuery() != null) { if (externalReferenceCriteria.getFunderId() != null && !urlConfiguration.getFunderQuery().startsWith("dmp:")) { urlConfiguration.setUrl(urlConfiguration.getUrl().replace("{funderQuery}", urlConfiguration.getFunderQuery())); @@ -366,7 +369,7 @@ public class RemoteFetcher { // entity = new HttpEntity<>(jsonBody, headers); - response = this.client.method(HttpMethod.valueOf(requestType)).uri(urlString).headers(httpHeaders -> { + response = this.getWebClient().method(HttpMethod.valueOf(requestType)).uri(urlString).headers(httpHeaders -> { if (contentType != null && !contentType.isEmpty()) { httpHeaders.setAccept(Collections.singletonList(MediaType.valueOf(contentType))); httpHeaders.setContentType(MediaType.valueOf(contentType)); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ReferenceController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ReferenceController.java index aa04f75a7..71426a411 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ReferenceController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ReferenceController.java @@ -106,23 +106,28 @@ public class ReferenceController extends BaseController { } @PostMapping("search") - public @ResponseBody ResponseEntity>> searchReference(@RequestBody ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { - this.authorizationService.authorizeForce(Permission.AuthenticatedRole); - // ReferenceType referenceType = ReferenceType.of((short) externalType); + public List searchReference(@RequestBody ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { + logger.debug("search {}", Reference.class.getSimpleName()); - if (lookup.getType() != null) { - List references = this.referenceService.searchReference(lookup); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(references)); - } - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE)); + this.censorFactory.censor(ReferenceCensor.class).censor(lookup.getProject(), null); + List references = this.referenceService.searchReference(lookup); + + this.auditService.track(AuditableAction.Reference_Search, "lookup", lookup); + + return references; } @PostMapping("search-with-db-definition") - public @ResponseBody ResponseEntity>> searchReferenceWithDefinition(@RequestBody ReferenceDefinitionSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { - this.authorizationService.authorizeForce(Permission.AuthenticatedRole); + public List searchReferenceWithDefinition(@RequestBody ReferenceDefinitionSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { + logger.debug("search with db definition {}", Reference.class.getSimpleName()); + + this.censorFactory.censor(ReferenceCensor.class).censor(lookup.getProject(), null); List references = this.referenceService.searchReferenceWithDefinition(lookup); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(references)); + + this.auditService.track(AuditableAction.Reference_Search, "lookup", lookup); + + return references; } @GetMapping("{id}") @@ -161,18 +166,6 @@ public class ReferenceController extends BaseController { return persisted; } -// @GetMapping(path = {"search/{externalType}"}, produces = "application/json") -// public @ResponseBody ResponseEntity>> searchReference(@PathVariable(value = "externalType") int externalType, -// @RequestParam(value = "query", required = false) String query, -// @RequestParam(value = "type", required = false) String type -// ) throws HugeResultSet, MyNotFoundException, InvalidApplicationException { -// this.authorizationService.authorizeForce(Permission.AuthenticatedRole); -// ReferenceType referenceType = ReferenceType.of((short) externalType); -// -// List fetcherReferences = this.referenceService.searchReference(referenceType, query, type); -// return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(fetcherReferences)); -// } - @DeleteMapping("{id}") @Transactional public void delete(@PathVariable("id") UUID id) throws MyForbiddenException, InvalidApplicationException { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataRepositoryManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataRepositoryManager.java index a9e178935..3e92784bb 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataRepositoryManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataRepositoryManager.java @@ -42,7 +42,7 @@ public class DataRepositoryManager { public List getDataRepositories(String query, String type) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.DataRepositories, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.DataRepositories, externalReferenceCriteria, type); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); @@ -61,7 +61,7 @@ public class DataRepositoryManager { } public List getPubRepositories(String query, String type) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.PubRepositories, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.PubRepositories, externalReferenceCriteria, type); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); @@ -80,7 +80,7 @@ public class DataRepositoryManager { } public List getJournals(String query, String type) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Journals, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Journals, externalReferenceCriteria, type); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ExternalDatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ExternalDatasetManager.java index a1eaa4729..ded355f9c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ExternalDatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ExternalDatasetManager.java @@ -58,7 +58,7 @@ public class ExternalDatasetManager { // Fetch external Datasets from external sources. ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Datasets, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Datasets, externalReferenceCriteria, type); // Parse items from external sources to listing models. ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/FunderManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/FunderManager.java index 3008427b6..1352e2e5e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/FunderManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/FunderManager.java @@ -46,7 +46,7 @@ public class FunderManager { QueryableList authItems = apiContext.getOperationsContext().getDatabaseRepository().getFunderDao().getAuthenticated(items, userInfo); List funders = authItems.select(item -> new eu.eudat.models.data.funder.Funder().fromDataModel(item)); ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(funderCriteria.getCriteria().getLike()); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Funder, externalReferenceCriteria, null); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Funder, externalReferenceCriteria, null); FundersExternalSourcesModel fundersExternalSourcesModel = new FundersExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : fundersExternalSourcesModel) { eu.eudat.models.data.funder.Funder funder = apiContext.getOperationsContext().getBuilderFactory().getBuilder(FunderBuilder.class) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/GrantManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/GrantManager.java index 0e4f0def7..a3371201c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/GrantManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/GrantManager.java @@ -127,7 +127,7 @@ public class GrantManager { QueryableList authItems = apiContext.getOperationsContext().getDatabaseRepository().getGrantDao().getAuthenticated(items, userInfo); List grants = authItems.select(item -> new Grant().fromDataModel(item)); - List> remoteRepos = remoteFetcher.get(ReferenceType.Grants, externalReferenceCriteria, null); + List> remoteRepos = remoteFetcher.getReferences(ReferenceType.Grants, externalReferenceCriteria, null); GrantsExternalSourcesModel grantsExternalSourcesModel = new GrantsExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : grantsExternalSourcesModel) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java index ad6ff34a7..cfa549372 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java @@ -31,7 +31,7 @@ public class LicenseManager { public List getLicenses(String query, String type) throws HugeResultSetException, MyNotFoundException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Licenses, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Licenses, externalReferenceCriteria, type); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/OrganisationsManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/OrganisationsManager.java index 9aa67ed8a..127df205f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/OrganisationsManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/OrganisationsManager.java @@ -82,7 +82,7 @@ public class OrganisationsManager { List org = pagedItems.toList().stream().distinct().map(item -> new Organisation().fromDataModel(item)).collect(Collectors.toList()); ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(organisationsTableRequest.getCriteria().getLabelLike()); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Organizations, externalReferenceCriteria, null); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Organizations, externalReferenceCriteria, null); OrganisationsExternalSourcesModel organisationsExternalSourcesModel = new OrganisationsExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : organisationsExternalSourcesModel) { Organisation organisation = apiContext.getOperationsContext().getBuilderFactory().getBuilder(OrganisationBuilder.class) @@ -98,7 +98,7 @@ public class OrganisationsManager { public List getCriteriaWithExternal(String query, String type) throws HugeResultSetException, MyNotFoundException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Organizations, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Organizations, externalReferenceCriteria, type); OrganisationsExternalSourcesModel organisationsExternalSourcesModel = new OrganisationsExternalSourcesModel().fromExternalItem(remoteRepos); List organisations = new LinkedList<>(); for (ExternalSourcesItemModel externalListingItem : organisationsExternalSourcesModel) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java index 8ccc9a295..7d9930c1a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java @@ -46,7 +46,7 @@ public class ProjectManager { QueryableList authItems = apiContext.getOperationsContext().getDatabaseRepository().getProjectDao().getAuthenticated(items, userInfo); List projects = authItems.select(item -> new Project().fromDataModel(item)); ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(projectCriteria.getCriteria().getLike()); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.DataRepositories, externalReferenceCriteria, null); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.DataRepositories, externalReferenceCriteria, null); ProjectsExternalSourcesModel projectsExternalSourcesModel = new ProjectsExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : projectsExternalSourcesModel) { eu.eudat.models.data.project.Project project = apiContext.getOperationsContext().getBuilderFactory().getBuilder(ProjectBuilder.class) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/PublicationManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/PublicationManager.java index fc6eb41c0..c60476231 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/PublicationManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/PublicationManager.java @@ -28,7 +28,7 @@ public class PublicationManager { public List getPublications(String query, String type) throws HugeResultSetException, MyNotFoundException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Publications, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Publications, externalReferenceCriteria, type); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java index a3ce1ffc1..6fa12edcd 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java @@ -43,7 +43,7 @@ public class RegistryManager { public List getRegistries(String query, String type) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Registries, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Registries, externalReferenceCriteria, type); RegistryCriteria criteria = new RegistryCriteria(); if (!query.isEmpty()) criteria.setLike(query); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java index 044ae6716..9918f954e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java @@ -65,7 +65,7 @@ public class ResearcherManager { item.setTag(keyToSourceMap.get(item.getKey())); } ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(researcherCriteriaRequest.getCriteria().getName()); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Researcher, externalReferenceCriteria, null); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Researcher, externalReferenceCriteria, null); ResearchersExternalSourcesModel researchersExternalSourcesModel = new ResearchersExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : researchersExternalSourcesModel) { eu.eudat.models.data.dmp.Researcher researcher = apiContext.getOperationsContext().getBuilderFactory().getBuilder(ResearcherBuilder.class) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java index 393bcbd3b..ddea54567 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java @@ -48,7 +48,7 @@ public class ServiceManager { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Services, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Services, externalReferenceCriteria, type); ServiceCriteria criteria = new ServiceCriteria(); if (!query.isEmpty()) criteria.setLike(query); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/TaxonomyManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/TaxonomyManager.java index 349cdc86d..f27cbfe6f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/TaxonomyManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/TaxonomyManager.java @@ -29,7 +29,7 @@ public class TaxonomyManager { public List getTaxonomies(String query, String type) throws HugeResultSetException, MyNotFoundException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Taxonomies, externalReferenceCriteria, type); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getReferences(ReferenceType.Taxonomies, externalReferenceCriteria, type); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ValidationManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ValidationManager.java index d9a21ce0d..6c5451b09 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ValidationManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ValidationManager.java @@ -24,7 +24,7 @@ public class ValidationManager { public Boolean validateIdentifier(String identifier, String type) throws MyNotFoundException, HugeResultSetException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(identifier); - Integer count = this.remoteFetcher.findEntries(externalReferenceCriteria, type); + Integer count = this.remoteFetcher.countEntries(externalReferenceCriteria, type); return this.userScope.isSet() && count > 0; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/ExternalValidationService.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/ExternalValidationService.java index be1bff74d..083a10b05 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/ExternalValidationService.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/ExternalValidationService.java @@ -23,7 +23,7 @@ public class ExternalValidationService { public Boolean validateIdentifier(String identifier, String type) throws MyNotFoundException, HugeResultSetException { ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(identifier); - Integer count = this.remoteFetcher.findEntries(externalReferenceCriteria, type); + Integer count = this.remoteFetcher.countEntries(externalReferenceCriteria, type); return userScope.isSet() && count > 0; }