diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/exceptions/HugeResultSetException.java b/dmp-backend/core/src/main/java/eu/eudat/commons/exceptions/HugeResultSetException.java new file mode 100644 index 000000000..a1d24ad38 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/exceptions/HugeResultSetException.java @@ -0,0 +1,13 @@ +package eu.eudat.commons.exceptions; + +public class HugeResultSetException extends Exception { + + private static final long serialVersionUID = -6961447213733280563L; + + + public HugeResultSetException(String message) { + super(message); + } + + +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceCacheOptions.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceCacheOptions.java similarity index 87% rename from dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceCacheOptions.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceCacheOptions.java index 5bf2bda62..8444f45bd 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceCacheOptions.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceCacheOptions.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.services.references; +package eu.eudat.service.reference; import gr.cite.tools.cache.CacheOptions; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceCacheService.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceCacheService.java similarity index 74% rename from dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceCacheService.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceCacheService.java index df182cc74..304800fd4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceCacheService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceCacheService.java @@ -1,6 +1,6 @@ -package eu.eudat.logic.services.references; +package eu.eudat.service.reference; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; import gr.cite.tools.cache.CacheService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,14 +15,14 @@ public class ReferenceCacheService extends CacheService keyParts = new HashMap<>(); keyParts.put("$type$", externalType.toLowerCase(Locale.ROOT)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceService.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceService.java new file mode 100644 index 000000000..e88fb955f --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceService.java @@ -0,0 +1,30 @@ +package eu.eudat.service.reference; + +import com.fasterxml.jackson.core.JsonProcessingException; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.model.Reference; +import eu.eudat.model.persist.ReferencePersist; +import eu.eudat.query.lookup.ReferenceDefinitionSearchLookup; +import eu.eudat.query.lookup.ReferenceSearchLookup; +import gr.cite.tools.exception.MyApplicationException; +import gr.cite.tools.exception.MyForbiddenException; +import gr.cite.tools.exception.MyNotFoundException; +import gr.cite.tools.exception.MyValidationException; +import gr.cite.tools.fieldset.FieldSet; +import jakarta.xml.bind.JAXBException; + +import javax.management.InvalidApplicationException; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import java.util.List; +import java.util.UUID; + +public interface ReferenceService { + Reference persist(ReferencePersist model, FieldSet fields) throws MyForbiddenException, MyValidationException, MyApplicationException, MyNotFoundException, InvalidApplicationException, JAXBException, JsonProcessingException, TransformerException, ParserConfigurationException; + + void deleteAndSave(UUID id) throws MyForbiddenException, InvalidApplicationException; + + List searchReference(ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException; + + List searchReferenceWithDefinition(ReferenceDefinitionSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException; +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceService.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java similarity index 87% rename from dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceService.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java index f1f0eabd8..39308fb9f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/references/ReferenceService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.services.references; +package eu.eudat.service.reference; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; @@ -11,21 +11,13 @@ import eu.eudat.commons.XmlHandlingService; import eu.eudat.commons.enums.IsActive; import eu.eudat.commons.enums.ReferenceTypeExternalApiHTTPMethodType; import eu.eudat.commons.enums.ReferenceTypeSourceType; -import eu.eudat.commons.scope.user.UserScope; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.commons.types.reference.DefinitionEntity; import eu.eudat.commons.types.reference.FieldEntity; import eu.eudat.commons.types.referencetype.*; -import eu.eudat.configurations.referencetype.ReferenceTypeProperties; import eu.eudat.convention.ConventionService; import eu.eudat.data.ReferenceEntity; import eu.eudat.data.ReferenceTypeEntity; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; -import eu.eudat.logic.proxy.fetching.entities.Results; -import eu.eudat.logic.services.ApiContext; import eu.eudat.model.Reference; import eu.eudat.model.builder.ReferenceBuilder; import eu.eudat.model.builder.referencesearch.ReferenceSearchBuilder; @@ -37,6 +29,10 @@ import eu.eudat.query.ReferenceQuery; import eu.eudat.query.ReferenceTypeQuery; import eu.eudat.query.lookup.ReferenceDefinitionSearchLookup; import eu.eudat.query.lookup.ReferenceSearchLookup; +import eu.eudat.service.reference.external.RemoteFetcher; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.models.ExternalRefernceResult; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.deleter.DeleterFactory; @@ -63,6 +59,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; import reactor.netty.http.client.HttpClient; @@ -73,12 +70,10 @@ import java.time.Instant; import java.util.*; import java.util.stream.Collectors; -@org.springframework.stereotype.Service -public class ReferenceService { +@Service +public class ReferenceServiceImpl implements ReferenceService { - private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(ReferenceService.class)); - private final ApiContext apiContext; - private final UserScope userScope; + private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(ReferenceServiceImpl.class)); private final RemoteFetcher remoteFetcher; private final EntityManager entityManager; private final AuthorizationService authorizationService; @@ -88,13 +83,10 @@ public class ReferenceService { private final MessageSource messageSource; private final QueryFactory queryFactory; private final XmlHandlingService xmlHandlingService; - private final ReferenceTypeProperties referenceTypeProperties; private final WebClient client; - public ReferenceService(ApiContext apiContext, - UserScope userScope, - RemoteFetcher remoteFetcher, + public ReferenceServiceImpl(RemoteFetcher remoteFetcher, EntityManager entityManager, AuthorizationService authorizationService, DeleterFactory deleterFactory, @@ -102,10 +94,7 @@ public class ReferenceService { ConventionService conventionService, MessageSource messageSource, QueryFactory queryFactory, - XmlHandlingService xmlHandlingService, - ReferenceTypeProperties referenceTypeProperties) { - this.apiContext = apiContext; - this.userScope = userScope; + XmlHandlingService xmlHandlingService) { this.remoteFetcher = remoteFetcher; this.entityManager = entityManager; this.authorizationService = authorizationService; @@ -115,7 +104,6 @@ public class ReferenceService { this.messageSource = messageSource; this.queryFactory = queryFactory; this.xmlHandlingService = xmlHandlingService; - this.referenceTypeProperties = referenceTypeProperties; 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??? @@ -123,6 +111,7 @@ public class ReferenceService { ).clientConnector(new ReactorClientHttpConnector(HttpClient.create().followRedirect(true))).build(); } + @Override public Reference persist(ReferencePersist model, FieldSet fields) throws MyForbiddenException, MyValidationException, MyApplicationException, MyNotFoundException, InvalidApplicationException, JAXBException, JsonProcessingException, TransformerException, ParserConfigurationException { logger.debug(new MapLogEntry("persisting data").And("model", model).And("fields", fields)); @@ -184,6 +173,7 @@ public class ReferenceService { return data; } + @Override public void deleteAndSave(UUID id) throws MyForbiddenException, InvalidApplicationException { logger.debug("deleting : {}", id); @@ -192,7 +182,7 @@ public class ReferenceService { this.deleterFactory.deleter(ReferenceDeleter.class).deleteAndSaveByIds(List.of(id)); } -// public List searchReference(ReferenceType externalType, String query, String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { +// public List searchReference(ReferenceType externalType, String query, String type) throws HugeResultSet, MyNotFoundException, InvalidApplicationException { // ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); // // List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(externalType, externalUrlCriteria, type); @@ -205,10 +195,11 @@ public class ReferenceService { // return list; // } - public List searchReference(ReferenceSearchLookup lookup) throws HugeResultSet, NoURLFound, InvalidApplicationException { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(lookup.getLike()); + @Override + public List searchReference(ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(lookup.getLike()); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(lookup.getType(), externalUrlCriteria, lookup.getKey()); + List> remoteRepos = remoteFetcher.get(lookup.getType(), externalReferenceCriteria, lookup.getKey()); List externalModels = this.builderFactory.builder(ReferenceSearchBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), remoteRepos); List models = this.fetchFromDb(lookup); @@ -285,7 +276,8 @@ public class ReferenceService { // return list; // } - public List searchReferenceWithDefinition(ReferenceDefinitionSearchLookup lookup) throws HugeResultSet, NoURLFound, InvalidApplicationException { + @Override + public List searchReferenceWithDefinition(ReferenceDefinitionSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { ReferenceTypeQuery query = this.queryFactory.query(ReferenceTypeQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).ids(lookup.getReferenceTypeId()); List datas = query.collectAs(lookup.getProject()); @@ -366,36 +358,36 @@ public class ReferenceService { String replacedUrlPath = replaceLookupFields(urlPath, lookup, firstPage, queries); String replacedUrlBody = replaceLookupFields(requestBody, lookup, firstPage, queries); - Results results = getResultsFromUrl(replacedUrlPath, resultsEntity, jsonPaginationPath, contentType, replacedUrlBody, requestType, auth); - if(results != null) { + ExternalRefernceResult externalRefernceResult = getResultsFromUrl(replacedUrlPath, resultsEntity, jsonPaginationPath, contentType, replacedUrlBody, requestType, auth); + if(externalRefernceResult != null) { if (filterType != null && filterType.equals("local") && (lookup.getLike() != null && !lookup.getLike().isEmpty())) { - results.setResults(results.getResults().stream() + externalRefernceResult.setResults(externalRefernceResult.getResults().stream() .filter(r -> r.get("name").toLowerCase().contains(lookup.getLike().toLowerCase())) .collect(Collectors.toList())); } if (fetchStrategy == FetchStrategy.FIRST) - return results.getResults().stream().peek(x -> x.put("tag", label)).peek(x -> x.put("key", key)).collect(Collectors.toList()); + return externalRefernceResult.getResults().stream().peek(x -> x.put("tag", label)).peek(x -> x.put("key", key)).collect(Collectors.toList()); - if (results.getPagination() != null && results.getPagination().get("pages") != null) //if has more pages, add them to the pages set - for (int i = 2; i <= results.getPagination().get("pages"); i++) + if (externalRefernceResult.getPagination() != null && externalRefernceResult.getPagination().get("pages") != null) //if has more pages, add them to the pages set + for (int i = 2; i <= externalRefernceResult.getPagination().get("pages"); i++) pages.add(i); //Long maxResults = configLoader.getExternalUrls().getMaxresults(); Long maxResults = Long.valueOf(1000); - if ((maxResults > 0) && (results.getPagination().get("count") > maxResults)) - throw new HugeResultSet("The submitted search query " + lookup.getLike() + " is about to return " + results.getPagination().get("count") + " results... Please submit a more detailed search query"); + if ((maxResults > 0) && (externalRefernceResult.getPagination().get("count") > maxResults)) + throw new HugeResultSetException("The submitted search query " + lookup.getLike() + " is about to return " + externalRefernceResult.getPagination().get("count") + " results... Please submit a more detailed search query"); - Optional optionalResults = pages.parallelStream() + Optional optionalResults = pages.parallelStream() .map(page -> getResultsFromUrl(urlPath + "&page=" + page, resultsEntity, jsonPaginationPath, contentType, replacedUrlBody, requestType, auth)) .filter(Objects::nonNull) .reduce((result1, result2) -> { result1.getResults().addAll(result2.getResults()); return result1; }); - Results remainingResults = optionalResults.orElseGet(Results::new); - remainingResults.getResults().addAll(results.getResults()); + ExternalRefernceResult remainingExternalRefernceResult = optionalResults.orElseGet(ExternalRefernceResult::new); + remainingExternalRefernceResult.getResults().addAll(externalRefernceResult.getResults()); - return remainingResults.getResults().stream().peek(x -> x.put("tag", label)).peek(x -> x.put("key", key)).collect(Collectors.toList()); + return remainingExternalRefernceResult.getResults().stream().peek(x -> x.put("tag", label)).peek(x -> x.put("key", key)).collect(Collectors.toList()); } else { return new LinkedList<>(); @@ -443,7 +435,7 @@ public class ReferenceService { return completedPath; } - protected Results getResultsFromUrl(String urlString, ResultsConfigurationEntity resultsEntity, String jsonPaginationPath, String contentType, String requestBody, ReferenceTypeExternalApiHTTPMethodType httpMethod, String auth) { + protected ExternalRefernceResult getResultsFromUrl(String urlString, ResultsConfigurationEntity resultsEntity, String jsonPaginationPath, String contentType, String requestBody, ReferenceTypeExternalApiHTTPMethodType httpMethod, String auth) { try { ResponseEntity response; @@ -459,18 +451,18 @@ public class ReferenceService { } }).bodyValue(jsonBody).retrieve().toEntity(String.class).block(); if (response.getStatusCode() == HttpStatus.OK) { // success - Results results = new Results(); + ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(); if (response.getHeaders().get("Content-Type").get(0).contains("json")) { DocumentContext jsonContext = JsonPath.parse(response.getBody()); - results = this.getFromJson(jsonContext, resultsEntity); + externalRefernceResult = this.getFromJson(jsonContext, resultsEntity); } - if (results.getPagination().size() == 0) { - results.getPagination().put("pages", 1); - results.getPagination().put("count", results.getResults().size()); + if (externalRefernceResult.getPagination().size() == 0) { + externalRefernceResult.getPagination().put("pages", 1); + externalRefernceResult.getPagination().put("count", externalRefernceResult.getResults().size()); } - return results; + return externalRefernceResult; } } catch (Exception exception) { logger.error(exception.getMessage(), exception); @@ -480,8 +472,8 @@ public class ReferenceService { } - public static Results getFromJson(DocumentContext jsonContext, ResultsConfigurationEntity resultsEntity) { - return new Results(parseData(jsonContext, resultsEntity), + public static ExternalRefernceResult getFromJson(DocumentContext jsonContext, ResultsConfigurationEntity resultsEntity) { + return new ExternalRefernceResult(parseData(jsonContext, resultsEntity), new HashMap<>(1, 1)); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/ExternalUrlConfigProvider.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/ExternalUrlConfigProvider.java new file mode 100644 index 000000000..913ee5aed --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/ExternalUrlConfigProvider.java @@ -0,0 +1,37 @@ +package eu.eudat.service.reference.external; + +import eu.eudat.service.reference.external.config.ExternalUrls; +import eu.eudat.service.storage.StorageFileService; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.Unmarshaller; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.io.ByteArrayInputStream; + +@Service +public class ExternalUrlConfigProvider { + private static final Logger logger = LoggerFactory.getLogger(ExternalUrlConfigProvider.class); + + private ExternalUrls externalUrls; + private final StorageFileService storageFileService; + + public ExternalUrlConfigProvider(StorageFileService storageFileService) { + this.storageFileService = storageFileService; + } + + public ExternalUrls getExternalUrls() { + if (externalUrls == null) { + byte[] bytes = this.storageFileService.getExternalUrlsFile(); + try { + JAXBContext jaxbContext = JAXBContext.newInstance(ExternalUrls.class); + Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); + externalUrls = (ExternalUrls) jaxbUnmarshaller.unmarshal(new ByteArrayInputStream(bytes)); + } catch (Exception ex) { + logger.error("Cannot find resource", ex); + } + } + return externalUrls; + } +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcher.java similarity index 54% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcher.java index 7bca93439..2fa985e21 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcher.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.fetching; +package eu.eudat.service.reference.external; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; @@ -6,12 +6,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.JsonPath; import eu.eudat.commons.enums.ReferenceType; -import eu.eudat.logic.proxy.config.*; -import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; -import eu.eudat.logic.proxy.config.entities.GenericUrls; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.entities.Results; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.config.*; +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; @@ -27,6 +29,7 @@ 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; @@ -38,26 +41,25 @@ import java.util.stream.Collectors; public class RemoteFetcher { private static final Logger logger = LoggerFactory.getLogger(RemoteFetcher.class); - private ConfigLoader configLoader; private final WebClient client; - + private final ExternalUrlConfigProvider externalUrlConfigProvider; @Autowired - public RemoteFetcher(ConfigLoader configLoader) { - this.configLoader = configLoader; - this.client = WebClient.builder().codecs(clientCodecConfigurer -> { + 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(); } - public List> get(ReferenceType referenceType, ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { + public List> get(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()) : exGenericUrls.getUrls(); - List> results = getAll(urlConfigs, fetchStrategy, externalUrlCriteria); + List> results = getAll(urlConfigs, fetchStrategy, externalReferenceCriteria); for (Map result: results) { result.put("referenceType", referenceType.name()); } @@ -66,193 +68,68 @@ public class RemoteFetcher { public GenericUrls getExternalUrls(ReferenceType referenceType) { switch (referenceType){ - case Taxonomies: return configLoader.getExternalUrls().getTaxonomies(); - case Licenses: return configLoader.getExternalUrls().getLicenses(); - case Publications: return configLoader.getExternalUrls().getPublications(); - case Journals: return configLoader.getExternalUrls().getJournals(); - case PubRepositories: return configLoader.getExternalUrls().getPubRepositories(); - case DataRepositories: return configLoader.getExternalUrls().getRepositories(); - case Registries: return configLoader.getExternalUrls().getRegistries(); - case Services: return configLoader.getExternalUrls().getServices(); - case Grants: return configLoader.getExternalUrls().getGrants(); - case Organizations: return configLoader.getExternalUrls().getOrganisations(); - case Datasets: return configLoader.getExternalUrls().getDatasets(); - case Funder: return configLoader.getExternalUrls().getFunders(); - case Project: return configLoader.getExternalUrls().getProjects(); - case Researcher: return configLoader.getExternalUrls().getResearchers(); + 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); } } - - @Cacheable(value = "repositories", keyGenerator = "externalUrlsKeyGenerator") - public List> getRepositories(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getRepositories().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getRepositories().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getRepositories().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - @Cacheable(value = "pubrepos", keyGenerator = "externalUrlsKeyGenerator") - public List> getPubRepositories(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getPubRepositories().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getPubRepositories().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getPubRepositories().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - @Cacheable(value = "journals", keyGenerator = "externalUrlsKeyGenerator") - public List> getJournals(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getJournals().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getJournals().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getJournals().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - @Cacheable(value = "taxonomies", keyGenerator = "externalUrlsKeyGenerator") - public List> getTaxonomies(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getTaxonomies().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getTaxonomies().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getTaxonomies().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - @Cacheable(value = "publications", keyGenerator = "externalUrlsKeyGenerator") - public List> getPublications(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getPublications().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getPublications().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getPublications().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "grants", keyGenerator = "externalUrlsKeyGenerator") - public List> getGrants(ExternalUrlCriteria externalUrlCriteria) throws NoURLFound, HugeResultSet { - List urlConfigs = configLoader.getExternalUrls().getGrants().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getGrants().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "projects", keyGenerator = "externalUrlsKeyGenerator") - public List> getProjects(ExternalUrlCriteria externalUrlCriteria) throws NoURLFound, HugeResultSet { - List urlConfigs = configLoader.getExternalUrls().getProjects().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getProjects().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "funders", keyGenerator = "externalUrlsKeyGenerator") - public List> getFunders(ExternalUrlCriteria externalUrlCriteria) throws NoURLFound, HugeResultSet { - List urlConfigs = configLoader.getExternalUrls().getFunders().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getFunders().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "organisations", keyGenerator = "externalUrlsKeyGenerator") - public List> getOrganisations(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getOrganisations().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getOrganisations().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getOrganisations().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "registries", keyGenerator = "externalUrlsKeyGenerator") - public List> getRegistries(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getRegistries().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getRegistries().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getRegistries().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "services", keyGenerator = "externalUrlsKeyGenerator") - public List> getServices(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getServices().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getServices().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getServices().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "researchers", keyGenerator = "externalUrlsKeyGenerator") - public List> getResearchers(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getResearchers().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getResearchers().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getResearchers().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - /*@Cacheable("tags") - public List> getTags(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getTags().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getTags().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getTags().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - }*/ - - @Cacheable(value = "externalDatasets", keyGenerator = "externalUrlsKeyGenerator") - public List> getDatasets(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getDatasets().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getDatasets().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getDatasets().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - - @Cacheable(value = "licenses", keyGenerator = "externalUrlsKeyGenerator") - public List> getlicenses(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { - List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getLicenses().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getLicenses().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getLicenses().getFetchMode(); - return getAll(urlConfigs, fetchStrategy, externalUrlCriteria); - } - public Integer findEntries(ExternalUrlCriteria externalUrlCriteria, String key) throws NoURLFound, HugeResultSet { + public Integer findEntries(ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException { List urlConfigs = - key != null && !key.isEmpty() ? configLoader.getExternalUrls().getValidations().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) - : configLoader.getExternalUrls().getValidations().getUrls(); - FetchStrategy fetchStrategy = configLoader.getExternalUrls().getValidations().getFetchMode(); - List> data = this.getAll(urlConfigs, fetchStrategy, externalUrlCriteria); + key != null && !key.isEmpty() ? this.externalUrlConfigProvider.getExternalUrls().getValidations().getUrls().stream().filter(item -> item.getKey().equals(key)).collect(Collectors.toList()) + : this.externalUrlConfigProvider.getExternalUrls().getValidations().getUrls(); + FetchStrategy fetchStrategy = this.externalUrlConfigProvider.getExternalUrls().getValidations().getFetchMode(); + List> data = this.getAll(urlConfigs, fetchStrategy, externalReferenceCriteria); return data.size(); } - public List> getExternalGeneric(ExternalUrlCriteria externalUrlCriteria, GenericUrls genericUrls) { + public List> getExternalGeneric(ExternalReferenceCriteria externalReferenceCriteria, GenericUrls genericUrls) { List urlConfigurations = genericUrls.getUrls(); FetchStrategy fetchStrategy = genericUrls.getFetchMode(); - return getAll(urlConfigurations, fetchStrategy, externalUrlCriteria); + return getAll(urlConfigurations, fetchStrategy, externalReferenceCriteria); } - public List> getExternalGenericWithData(ExternalUrlCriteria externalUrlCriteria, GenericUrls genericUrls) { + public List> getExternalGenericWithData(ExternalReferenceCriteria externalReferenceCriteria, GenericUrls genericUrls) { List urlConfigurations = genericUrls.getUrls(); - return getAllWithData(urlConfigurations, externalUrlCriteria); + return getAllWithData(urlConfigurations, externalReferenceCriteria); } - private List> getAll(List urlConfigs, FetchStrategy fetchStrategy, ExternalUrlCriteria externalUrlCriteria) { + private List> getAll(List urlConfigs, FetchStrategy fetchStrategy, ExternalReferenceCriteria externalReferenceCriteria) { List> results = new LinkedList<>(); if (urlConfigs == null || urlConfigs.isEmpty()) { return results; } -// throw new NoURLFound("No Repository urls found in configuration"); +// throw new MyNotFoundException("No Repository urls found in configuration"); urlConfigs.sort(Comparator.comparing(UrlConfiguration::getOrdinal)); urlConfigs.forEach(urlConfiguration -> { - ifFunderQueryExist(urlConfiguration, externalUrlCriteria); + 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(), externalUrlCriteria, urlConfiguration.getLabel(), urlConfiguration.getKey(), urlConfiguration.getContentType(), urlConfiguration.getFirstpage(), urlConfiguration.getRequestBody(), urlConfiguration.getRequestType(), urlConfiguration.getFilterType(), urlConfiguration.getQueries(), auth)); + 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(), externalUrlCriteria.getLike())); + results.addAll(getAllResultsFromMockUpJson(urlConfiguration.getUrl(), externalReferenceCriteria.getLike())); } }); /* for (UrlConfiguration urlConfig : urlConfigs) { @@ -279,7 +156,7 @@ public class RemoteFetcher { return authenticationConfiguration.getType() + " " + reponse.get(authenticationConfiguration.getAuthTokenPath()); } - private List> getAllWithData(List urlConfigs, ExternalUrlCriteria externalUrlCriteria) { + private List> getAllWithData(List urlConfigs, ExternalReferenceCriteria externalReferenceCriteria) { List> results = new LinkedList<>(); @@ -289,10 +166,10 @@ public class RemoteFetcher { urlConfigs.sort(Comparator.comparing(UrlConfiguration::getOrdinal)); urlConfigs.forEach(urlConfiguration -> { - ifFunderQueryExist(urlConfiguration, externalUrlCriteria); + ifFunderQueryExist(urlConfiguration, externalReferenceCriteria); if (urlConfiguration.getType() == null || urlConfiguration.getType().equals("External")) { try { - results.addAll(getAllResultsFromUrlWithData(urlConfiguration.getUrl(), urlConfiguration.getData(), externalUrlCriteria, urlConfiguration.getContentType(), urlConfiguration.getFirstpage(), urlConfiguration.getRequestBody(), urlConfiguration.getRequestType(), urlConfiguration.getQueries())); + results.addAll(getAllResultsFromUrlWithData(urlConfiguration.getUrl(), urlConfiguration.getData(), externalReferenceCriteria, urlConfiguration.getContentType(), urlConfiguration.getFirstpage(), urlConfiguration.getRequestBody(), urlConfiguration.getRequestType(), urlConfiguration.getQueries())); } catch (Exception e) { logger.error(e.getLocalizedMessage(), e); } @@ -302,9 +179,9 @@ public class RemoteFetcher { } - private void ifFunderQueryExist(UrlConfiguration urlConfiguration, ExternalUrlCriteria externalUrlCriteria) { + private void ifFunderQueryExist(UrlConfiguration urlConfiguration, ExternalReferenceCriteria externalReferenceCriteria) { if (urlConfiguration.getFunderQuery() != null) { - if (externalUrlCriteria.getFunderId() != null && !urlConfiguration.getFunderQuery().startsWith("dmp:")) { + if (externalReferenceCriteria.getFunderId() != null && !urlConfiguration.getFunderQuery().startsWith("dmp:")) { urlConfiguration.setUrl(urlConfiguration.getUrl().replace("{funderQuery}", urlConfiguration.getFunderQuery())); } else { @@ -313,46 +190,46 @@ public class RemoteFetcher { } } - private String calculateQuery(ExternalUrlCriteria externalUrlCriteria, List queryConfigs) { + private String calculateQuery(ExternalReferenceCriteria externalReferenceCriteria, List queryConfigs) { String finalQuery = ""; - QueryConfig queryConfig = queryConfigs.stream().filter(queryConfigl -> externalUrlCriteria.getLike().matches(queryConfigl.getCondition())) + QueryConfig queryConfig = queryConfigs.stream().filter(queryConfigl -> externalReferenceCriteria.getLike().matches(queryConfigl.getCondition())) .min((Comparator.comparing(QueryConfig::getOrdinal))).orElse(null); if (queryConfig != null) { if (queryConfig.getSeparator() != null) { - String[] likes = externalUrlCriteria.getLike().split(queryConfig.getSeparator()); + String[] likes = externalReferenceCriteria.getLike().split(queryConfig.getSeparator()); finalQuery = queryConfig.getValue(); for (int i = 0; i < likes.length; i++) { finalQuery = finalQuery.replaceAll("\\{like" + (i+1) + "}", likes[i]); } } else { - finalQuery = queryConfig.getValue().replaceAll("\\{like}", externalUrlCriteria.getLike()); + finalQuery = queryConfig.getValue().replaceAll("\\{like}", externalReferenceCriteria.getLike()); } } return finalQuery; } - protected String replaceCriteriaOnUrl(String path, ExternalUrlCriteria externalUrlCriteria, String firstPage, List queries) { + protected String replaceCriteriaOnUrl(String path, ExternalReferenceCriteria externalReferenceCriteria, String firstPage, List queries) { String completedPath = path; - if (externalUrlCriteria.getLike() != null) { - if ((path.contains("openaire") || path.contains("orcid") || path.contains("ror") || path.contains("fairsharing")) && externalUrlCriteria.getLike().equals("")) { + if (externalReferenceCriteria.getLike() != null) { + if ((path.contains("openaire") || path.contains("orcid") || path.contains("ror") || path.contains("fairsharing")) && externalReferenceCriteria.getLike().equals("")) { completedPath = completedPath.replaceAll("\\{like}", "*"); completedPath = completedPath.replaceAll("\\{query}", "*"); } else { if (completedPath.contains("{query}")) { - completedPath = completedPath.replaceAll("\\{query}", this.calculateQuery(externalUrlCriteria, queries)); + completedPath = completedPath.replaceAll("\\{query}", this.calculateQuery(externalReferenceCriteria, queries)); } else { - completedPath = completedPath.replaceAll("\\{like}", externalUrlCriteria.getLike()); + completedPath = completedPath.replaceAll("\\{like}", externalReferenceCriteria.getLike()); } } } else { completedPath = completedPath.replace("{like}", ""); } - if (externalUrlCriteria.getFunderId() != null) { - String funderPrefix = externalUrlCriteria.getFunderId().split(":")[0]; - String funderId = externalUrlCriteria.getFunderId().replace(funderPrefix + ":", ""); + if (externalReferenceCriteria.getFunderId() != null) { + String funderPrefix = externalReferenceCriteria.getFunderId().split(":")[0]; + String funderId = externalReferenceCriteria.getFunderId().replace(funderPrefix + ":", ""); if (funderId.toCharArray()[0] == ':') { - funderId = externalUrlCriteria.getFunderId(); + funderId = externalReferenceCriteria.getFunderId(); } /* try { funderId = URLEncoder.encode(funderId, "UTF-8"); } catch @@ -364,8 +241,8 @@ public class RemoteFetcher { logger.warn("FunderId is null."); completedPath = completedPath.replace("{funderId}", " "); } - if (externalUrlCriteria.getPage() != null) { - completedPath = completedPath.replace("{page}", externalUrlCriteria.getPage()); + if (externalReferenceCriteria.getPage() != null) { + completedPath = completedPath.replace("{page}", externalReferenceCriteria.getPage()); } else { if (firstPage != null) { completedPath = completedPath.replace("{page}", firstPage); @@ -373,69 +250,69 @@ public class RemoteFetcher { completedPath = completedPath.replace("{page}", "1"); } } - if (externalUrlCriteria.getPageSize() != null) { - completedPath = completedPath.replace("{pageSize}", externalUrlCriteria.getPageSize()); + if (externalReferenceCriteria.getPageSize() != null) { + completedPath = completedPath.replace("{pageSize}", externalReferenceCriteria.getPageSize()); } else { completedPath = completedPath.replace("{pageSize}", "60"); } - if (externalUrlCriteria.getHost() != null) { - completedPath = completedPath.replace("{host}", externalUrlCriteria.getHost()); + if (externalReferenceCriteria.getHost() != null) { + completedPath = completedPath.replace("{host}", externalReferenceCriteria.getHost()); } else { completedPath = completedPath.replace("{host}", ""); } - if (externalUrlCriteria.getPath() != null) { - completedPath = completedPath.replace("{path}", externalUrlCriteria.getPath()); + if (externalReferenceCriteria.getPath() != null) { + completedPath = completedPath.replace("{path}", externalReferenceCriteria.getPath()); } else { completedPath = completedPath.replace("{path}", ""); } return completedPath; } - private List> getAllResultsFromUrl(String path, FetchStrategy fetchStrategy, final DataUrlConfiguration jsonDataPath, final String jsonPaginationPath, ExternalUrlCriteria externalUrlCriteria, String tag, String key, String contentType, String firstPage, String requestBody, String requestType, String filterType, List queries, String auth) throws Exception { + private List> getAllResultsFromUrl(String path, FetchStrategy fetchStrategy, final DataUrlConfiguration jsonDataPath, final String jsonPaginationPath, ExternalReferenceCriteria externalReferenceCriteria, String tag, String key, String contentType, String firstPage, String requestBody, String requestType, String filterType, List queries, String auth) throws Exception { Set pages = new HashSet<>(); - String replacedPath = replaceCriteriaOnUrl(path, externalUrlCriteria, firstPage, queries); - String replacedBody = replaceCriteriaOnUrl(requestBody, externalUrlCriteria, firstPage, queries); + String replacedPath = replaceCriteriaOnUrl(path, externalReferenceCriteria, firstPage, queries); + String replacedBody = replaceCriteriaOnUrl(requestBody, externalReferenceCriteria, firstPage, queries); - Results results = getResultsFromUrl(replacedPath, jsonDataPath, jsonPaginationPath, contentType, replacedBody, requestType, auth); - if(results != null) { - if (filterType != null && filterType.equals("local") && (externalUrlCriteria.getLike() != null && !externalUrlCriteria.getLike().isEmpty())) { - results.setResults(results.getResults().stream() - .filter(r -> r.get("name").toLowerCase().contains(externalUrlCriteria.getLike().toLowerCase())) + ExternalRefernceResult externalRefernceResult = getResultsFromUrl(replacedPath, jsonDataPath, jsonPaginationPath, contentType, replacedBody, requestType, auth); + if(externalRefernceResult != null) { + if (filterType != null && filterType.equals("local") && (externalReferenceCriteria.getLike() != null && !externalReferenceCriteria.getLike().isEmpty())) { + externalRefernceResult.setResults(externalRefernceResult.getResults().stream() + .filter(r -> r.get("name").toLowerCase().contains(externalReferenceCriteria.getLike().toLowerCase())) .collect(Collectors.toList())); } if (fetchStrategy == FetchStrategy.FIRST) - return results.getResults().stream().peek(x -> x.put("tag", tag)).peek(x -> x.put("key", key)).collect(Collectors.toList()); + return externalRefernceResult.getResults().stream().peek(x -> x.put("tag", tag)).peek(x -> x.put("key", key)).collect(Collectors.toList()); - if (results.getPagination() != null && results.getPagination().get("pages") != null) //if has more pages, add them to the pages set - for (int i = 2; i <= results.getPagination().get("pages"); i++) + if (externalRefernceResult.getPagination() != null && externalRefernceResult.getPagination().get("pages") != null) //if has more pages, add them to the pages set + for (int i = 2; i <= externalRefernceResult.getPagination().get("pages"); i++) pages.add(i); - Long maxResults = configLoader.getExternalUrls().getMaxresults(); - if ((maxResults > 0) && (results.getPagination().get("count") > maxResults)) - throw new HugeResultSet("The submitted search query " + externalUrlCriteria.getLike() + " is about to return " + results.getPagination().get("count") + " results... Please submit a more detailed search query"); + Long maxResults = this.externalUrlConfigProvider.getExternalUrls().getMaxresults(); + if ((maxResults > 0) && (externalRefernceResult.getPagination().get("count") > maxResults)) + throw new HugeResultSetException("The submitted search query " + externalReferenceCriteria.getLike() + " is about to return " + externalRefernceResult.getPagination().get("count") + " results... Please submit a more detailed search query"); - Optional optionalResults = pages.parallelStream() + Optional optionalResults = pages.parallelStream() .map(page -> getResultsFromUrl(path + "&page=" + page, jsonDataPath, jsonPaginationPath, contentType, replacedBody, requestType, auth)) .filter(Objects::nonNull) .reduce((result1, result2) -> { result1.getResults().addAll(result2.getResults()); return result1; }); - Results remainingResults = optionalResults.orElseGet(Results::new); - remainingResults.getResults().addAll(results.getResults()); + ExternalRefernceResult remainingExternalRefernceResult = optionalResults.orElseGet(ExternalRefernceResult::new); + remainingExternalRefernceResult.getResults().addAll(externalRefernceResult.getResults()); - return remainingResults.getResults().stream().peek(x -> x.put("tag", tag)).peek(x -> x.put("key", key)).collect(Collectors.toList()); + return remainingExternalRefernceResult.getResults().stream().peek(x -> x.put("tag", tag)).peek(x -> x.put("key", key)).collect(Collectors.toList()); } else { return new LinkedList<>(); } } - private List> getAllResultsFromUrlWithData(String path, final DataUrlConfiguration jsonDataPath, ExternalUrlCriteria externalUrlCriteria, String contentType, String firstPage, String requestBody, String requestType, List queries) { + private List> getAllResultsFromUrlWithData(String path, final DataUrlConfiguration jsonDataPath, ExternalReferenceCriteria externalReferenceCriteria, String contentType, String firstPage, String requestBody, String requestType, List queries) { - String replacedPath = replaceCriteriaOnUrl(path, externalUrlCriteria, firstPage, queries); - String replacedBody = replaceCriteriaOnUrl(requestBody, externalUrlCriteria, firstPage, queries); + String replacedPath = replaceCriteriaOnUrl(path, externalReferenceCriteria, firstPage, queries); + String replacedBody = replaceCriteriaOnUrl(requestBody, externalReferenceCriteria, firstPage, queries); try { RestTemplate restTemplate = new RestTemplate(); @@ -465,7 +342,7 @@ public class RemoteFetcher { } - protected Results getResultsFromUrl(String urlString, DataUrlConfiguration jsonDataPath, String jsonPaginationPath, String contentType, String requestBody, String requestType, String auth) { + protected ExternalRefernceResult getResultsFromUrl(String urlString, DataUrlConfiguration jsonDataPath, String jsonPaginationPath, String contentType, String requestBody, String requestType, String auth) { try { //RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory()); @@ -501,18 +378,18 @@ public class RemoteFetcher { //response = restTemplate.exchange(urlString, HttpMethod.resolve(requestType), entity, String.class); if (response.getStatusCode() == HttpStatus.OK) { // success //do here all the parsing - Results results = new Results(); + ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(); if (response.getHeaders().get("Content-Type").get(0).contains("json")) { DocumentContext jsonContext = JsonPath.parse(response.getBody()); if (jsonDataPath.getFieldsUrlConfiguration().getPath() != null) { - results = RemoteFetcherUtils.getFromJsonWithRecursiveFetching(jsonContext, jsonDataPath, this, requestBody, requestType, auth); + externalRefernceResult = RemoteFetcherUtils.getFromJsonWithRecursiveFetching(jsonContext, jsonDataPath, this, requestBody, requestType, auth); } else if (jsonDataPath.getFieldsUrlConfiguration().getFirstName() != null) { - results = RemoteFetcherUtils.getFromJsonWithFirstAndLastName(jsonContext, jsonDataPath); + externalRefernceResult = RemoteFetcherUtils.getFromJsonWithFirstAndLastName(jsonContext, jsonDataPath); } else { - results = RemoteFetcherUtils.getFromJson(jsonContext, jsonDataPath); + externalRefernceResult = RemoteFetcherUtils.getFromJson(jsonContext, jsonDataPath); } - results.setResults(results.getResults().stream().map(e -> e.entrySet().stream().collect(Collectors.toMap(x -> this.transformKey(jsonDataPath,x.getKey()), Map.Entry::getValue))) + externalRefernceResult.setResults(externalRefernceResult.getResults().stream().map(e -> e.entrySet().stream().collect(Collectors.toMap(x -> this.transformKey(jsonDataPath,x.getKey()), Map.Entry::getValue))) .collect(Collectors.toList())); } else if (response.getHeaders().get("Content-Type").get(0).contains("xml")) { @@ -566,14 +443,14 @@ public class RemoteFetcher { values.add(map); } } - results = new Results(values, new HashMap<>(1, 1)); + externalRefernceResult = new ExternalRefernceResult(values, new HashMap<>(1, 1)); } - if (results.getPagination().size() == 0) { - results.getPagination().put("pages", 1); - results.getPagination().put("count", results.getResults().size()); + if (externalRefernceResult.getPagination().isEmpty()) { + externalRefernceResult.getPagination().put("pages", 1); + externalRefernceResult.getPagination().put("count", externalRefernceResult.getResults().size()); } - return results; + return externalRefernceResult; } } catch (Exception exception) { logger.error(exception.getMessage(), exception); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcherUtils.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcherUtils.java similarity index 79% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcherUtils.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcherUtils.java index 346bf59a7..59d7e27b5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcherUtils.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/RemoteFetcherUtils.java @@ -1,10 +1,10 @@ -package eu.eudat.logic.proxy.fetching; +package eu.eudat.service.reference.external; import com.fasterxml.jackson.databind.ObjectMapper; import com.jayway.jsonpath.DocumentContext; -import eu.eudat.logic.proxy.config.DataUrlConfiguration; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.fetching.entities.Results; +import eu.eudat.service.reference.external.config.DataUrlConfiguration; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.service.reference.external.models.ExternalRefernceResult; import net.minidev.json.JSONArray; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,35 +18,35 @@ public class RemoteFetcherUtils { private final static Logger logger = LoggerFactory.getLogger(RemoteFetcherUtils.class); private static final ObjectMapper mapper = new ObjectMapper(); - public static Results getFromJson(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) { - return new Results(parseData(jsonContext, jsonDataPath), + public static ExternalRefernceResult getFromJson(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) { + return new ExternalRefernceResult(parseData(jsonContext, jsonDataPath), new HashMap<>(1, 1)); } - public static Results getFromJsonWithRecursiveFetching(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath, RemoteFetcher remoteFetcher, String requestBody, String requestType, String auth) { - Results results = new Results(parseData(jsonContext, jsonDataPath), + public static ExternalRefernceResult getFromJsonWithRecursiveFetching(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath, RemoteFetcher remoteFetcher, String requestBody, String requestType, String auth) { + ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(parseData(jsonContext, jsonDataPath), new HashMap<>(1, 1)); - List> multiResults = results.getResults().stream().map(result -> { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(); - externalUrlCriteria.setPath(result.get("path")); - externalUrlCriteria.setHost(result.get("host")); - String replacedPath = remoteFetcher.replaceCriteriaOnUrl(jsonDataPath.getUrlConfiguration().getUrl(), externalUrlCriteria, jsonDataPath.getUrlConfiguration().getFirstpage(), jsonDataPath.getUrlConfiguration().getQueries()); + List> multiResults = externalRefernceResult.getResults().stream().map(result -> { + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(); + externalReferenceCriteria.setPath(result.get("path")); + externalReferenceCriteria.setHost(result.get("host")); + String replacedPath = remoteFetcher.replaceCriteriaOnUrl(jsonDataPath.getUrlConfiguration().getUrl(), externalReferenceCriteria, jsonDataPath.getUrlConfiguration().getFirstpage(), jsonDataPath.getUrlConfiguration().getQueries()); return remoteFetcher.getResultsFromUrl(replacedPath, jsonDataPath.getUrlConfiguration().getData(), jsonDataPath.getUrlConfiguration().getData().getPath(), jsonDataPath.getUrlConfiguration().getContentType(), requestBody, requestType, auth); - }).filter(Objects::nonNull).map(results1 -> results1.getResults().get(0)).collect(Collectors.toList()); - return new Results(multiResults, new HashMap<>(1, 1)); + }).filter(Objects::nonNull).map(externalRefernceResult1 -> externalRefernceResult1.getResults().get(0)).collect(Collectors.toList()); + return new ExternalRefernceResult(multiResults, new HashMap<>(1, 1)); } - public static Results getFromJsonWithFirstAndLastName(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) { - Results results = new Results(parseData(jsonContext, jsonDataPath), + public static ExternalRefernceResult getFromJsonWithFirstAndLastName(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) { + ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(parseData(jsonContext, jsonDataPath), new HashMap<>(1, 1)); - results.getResults().stream().forEach(entry -> { + externalRefernceResult.getResults().stream().forEach(entry -> { String name = entry.get(jsonDataPath.getFieldsUrlConfiguration().getFirstName().replace("'", "")) + " " + entry.get(jsonDataPath.getFieldsUrlConfiguration().getLastName().replace("'", "")); entry.put("name", name); entry.remove(jsonDataPath.getFieldsUrlConfiguration().getFirstName().replace("'", "")); entry.remove(jsonDataPath.getFieldsUrlConfiguration().getLastName().replace("'", "")); }); - return results; + return externalRefernceResult; } private static List> parseData (DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/AuthenticationConfiguration.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/AuthenticationConfiguration.java similarity index 96% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/AuthenticationConfiguration.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/AuthenticationConfiguration.java index 8b9b2bb90..f2f0f445f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/AuthenticationConfiguration.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/AuthenticationConfiguration.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config; +package eu.eudat.service.reference.external.config; import jakarta.xml.bind.annotation.XmlElement; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DataFieldsUrlConfiguration.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/DataFieldsUrlConfiguration.java similarity index 98% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DataFieldsUrlConfiguration.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/DataFieldsUrlConfiguration.java index bdc25ba6c..08f002e25 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DataFieldsUrlConfiguration.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/DataFieldsUrlConfiguration.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config; +package eu.eudat.service.reference.external.config; import jakarta.xml.bind.annotation.XmlElement; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DataUrlConfiguration.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/DataUrlConfiguration.java similarity index 94% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DataUrlConfiguration.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/DataUrlConfiguration.java index ec6bccb04..bc6bfd6b4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/DataUrlConfiguration.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/DataUrlConfiguration.java @@ -1,5 +1,6 @@ -package eu.eudat.logic.proxy.config; +package eu.eudat.service.reference.external.config; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; import java.util.List; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/ExternalUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/ExternalUrls.java similarity index 95% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/ExternalUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/ExternalUrls.java index 3bdf1dec0..3df50265b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/ExternalUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/ExternalUrls.java @@ -1,9 +1,9 @@ -package eu.eudat.logic.proxy.config; +package eu.eudat.service.reference.external.config; -import eu.eudat.logic.proxy.config.entities.*; -import eu.eudat.logic.proxy.config.prefilling.PrefillingConfigMapAdapter; +import eu.eudat.service.reference.external.config.prefilling.PrefillingConfigMapAdapter; +import eu.eudat.service.reference.external.config.entities.*; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlRootElement; import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/QueryConfig.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/QueryConfig.java similarity index 94% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/QueryConfig.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/QueryConfig.java index a4f2cd7af..767d6d4fb 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/QueryConfig.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/QueryConfig.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config; +package eu.eudat.service.reference.external.config; import jakarta.xml.bind.annotation.XmlElement; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/UrlConfiguration.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/UrlConfiguration.java similarity index 98% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/UrlConfiguration.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/UrlConfiguration.java index 605ea8d3e..24db8cd56 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/UrlConfiguration.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/UrlConfiguration.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config; +package eu.eudat.service.reference.external.config; import jakarta.xml.bind.annotation.XmlElement; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/DatasetUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/DatasetUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/DatasetUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/DatasetUrls.java index 830ed3851..aee4d9fe1 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/DatasetUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/DatasetUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/DefaultPrefillingMapping.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/DefaultPrefillingMapping.java similarity index 95% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/DefaultPrefillingMapping.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/DefaultPrefillingMapping.java index 722288c47..ff49165fa 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/DefaultPrefillingMapping.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/DefaultPrefillingMapping.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; import jakarta.xml.bind.annotation.XmlAttribute; import jakarta.xml.bind.annotation.XmlRootElement; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/FunderUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/FunderUrls.java similarity index 75% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/FunderUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/FunderUrls.java index 9dc910e90..fc38b5dcf 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/FunderUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/FunderUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GeneralUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GeneralUrls.java similarity index 59% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GeneralUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GeneralUrls.java index d6581d250..550f4bf2e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GeneralUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GeneralUrls.java @@ -1,12 +1,13 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.config.entities.GenericUrls; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import java.util.ArrayList; import java.util.List; -public class GeneralUrls extends GenericUrls{ +public class GeneralUrls extends GenericUrls { List urls; FetchStrategy fetchMode; diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GenericUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GenericUrls.java new file mode 100644 index 000000000..5301e5097 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GenericUrls.java @@ -0,0 +1,12 @@ +package eu.eudat.service.reference.external.config.entities; + +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; + +import java.util.List; + +public abstract class GenericUrls { + + public abstract List getUrls(); + public abstract FetchStrategy getFetchMode(); +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GrantUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GrantUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GrantUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GrantUrls.java index ef5500236..8490a89c0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GrantUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/GrantUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/JournalUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/JournalUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/JournalUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/JournalUrls.java index 25c543dfe..1d11c74d5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/JournalUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/JournalUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/LicenseUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/LicenseUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/LicenseUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/LicenseUrls.java index 3937cb85a..ccf1e0ae1 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/LicenseUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/LicenseUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/OrganisationUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/OrganisationUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/OrganisationUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/OrganisationUrls.java index 232f9b245..c225da6b8 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/OrganisationUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/OrganisationUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingConfig.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingConfig.java similarity index 87% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingConfig.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingConfig.java index 9bd9daed8..24f11567a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingConfig.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingConfig.java @@ -1,5 +1,6 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; +import eu.eudat.service.reference.external.config.entities.PrefillingSearch; import jakarta.xml.bind.annotation.XmlAttribute; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlRootElement; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingFixedMapping.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingFixedMapping.java similarity index 94% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingFixedMapping.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingFixedMapping.java index e961b25ce..92c9943f2 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingFixedMapping.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingFixedMapping.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; import jakarta.xml.bind.annotation.XmlAttribute; import jakarta.xml.bind.annotation.XmlRootElement; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingGet.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingGet.java similarity index 94% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingGet.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingGet.java index bf9cbb33c..17b0fb842 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingGet.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingGet.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingMapping.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingMapping.java similarity index 82% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingMapping.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingMapping.java index d4f8c82fb..1e1a3d4fb 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingMapping.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingMapping.java @@ -1,4 +1,4 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; import jakarta.xml.bind.annotation.XmlAttribute; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingSearch.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingSearch.java similarity index 65% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingSearch.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingSearch.java index b031589fa..e5904547b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PrefillingSearch.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PrefillingSearch.java @@ -1,13 +1,14 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.config.entities.GenericUrls; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import java.util.ArrayList; import java.util.List; -public class PrefillingSearch extends GenericUrls{ +public class PrefillingSearch extends GenericUrls { private UrlConfiguration urlConfig; public UrlConfiguration getUrlConfig() { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ProjectUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ProjectUrls.java similarity index 75% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ProjectUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ProjectUrls.java index 909a036f7..63d786c79 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ProjectUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ProjectUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PubRepositoryUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PubRepositoryUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PubRepositoryUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PubRepositoryUrls.java index 29729c65c..b58ee65fe 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PubRepositoryUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PubRepositoryUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PublicationsUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PublicationsUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PublicationsUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PublicationsUrls.java index e93e72d39..a53b46ca0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/PublicationsUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/PublicationsUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/RegistryUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/RegistryUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/RegistryUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/RegistryUrls.java index 842901b62..e89abda67 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/RegistryUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/RegistryUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/RepositoryUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/RepositoryUrls.java similarity index 66% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/RepositoryUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/RepositoryUrls.java index 88dc7acc1..48d934e8c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/RepositoryUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/RepositoryUrls.java @@ -1,13 +1,14 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.config.entities.GenericUrls; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; import java.util.List; -public class RepositoryUrls extends GenericUrls{ +public class RepositoryUrls extends GenericUrls { List urls; FetchStrategy fetchMode; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ResearcherUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ResearcherUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ResearcherUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ResearcherUrls.java index ddbd0881c..18313577c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ResearcherUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ResearcherUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ServiceUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ServiceUrls.java similarity index 77% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ServiceUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ServiceUrls.java index 6e171ad67..63ac02a71 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ServiceUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ServiceUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/TagUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/TagUrls.java similarity index 78% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/TagUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/TagUrls.java index 514a15d9c..bb48c574d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/TagUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/TagUrls.java @@ -1,7 +1,7 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/TaxonomiesUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/TaxonomiesUrls.java similarity index 66% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/TaxonomiesUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/TaxonomiesUrls.java index 6f78c2e3f..58117b76a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/TaxonomiesUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/TaxonomiesUrls.java @@ -1,13 +1,14 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.config.entities.GenericUrls; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; import java.util.List; -public class TaxonomiesUrls extends GenericUrls{ +public class TaxonomiesUrls extends GenericUrls { List urls; FetchStrategy fetchMode; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ValidationUrls.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ValidationUrls.java similarity index 66% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ValidationUrls.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ValidationUrls.java index 50abc8909..4b80cd275 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/ValidationUrls.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/entities/ValidationUrls.java @@ -1,14 +1,15 @@ -package eu.eudat.logic.proxy.config.entities; +package eu.eudat.service.reference.external.config.entities; import java.util.List; +import eu.eudat.service.reference.external.config.entities.GenericUrls; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.FetchStrategy; +import eu.eudat.service.reference.external.config.UrlConfiguration; -public class ValidationUrls extends GenericUrls{ +public class ValidationUrls extends GenericUrls { List urls; FetchStrategy fetchMode; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/prefilling/PrefillingConfigMapAdapter.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/prefilling/PrefillingConfigMapAdapter.java similarity index 90% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/prefilling/PrefillingConfigMapAdapter.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/prefilling/PrefillingConfigMapAdapter.java index 161b3fe98..db723e205 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/prefilling/PrefillingConfigMapAdapter.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/config/prefilling/PrefillingConfigMapAdapter.java @@ -1,6 +1,6 @@ -package eu.eudat.logic.proxy.config.prefilling; +package eu.eudat.service.reference.external.config.prefilling; -import eu.eudat.logic.proxy.config.entities.PrefillingConfig; +import eu.eudat.service.reference.external.config.entities.PrefillingConfig; import org.w3c.dom.Element; import jakarta.xml.bind.JAXBContext; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/ExternalUrlCriteria.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/criteria/ExternalReferenceCriteria.java similarity index 86% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/ExternalUrlCriteria.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/criteria/ExternalReferenceCriteria.java index a982067c1..08fcd899d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/ExternalUrlCriteria.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/criteria/ExternalReferenceCriteria.java @@ -1,6 +1,6 @@ -package eu.eudat.logic.proxy.config; +package eu.eudat.service.reference.external.criteria; -public class ExternalUrlCriteria { +public class ExternalReferenceCriteria { private String like; private String page; private String pageSize; @@ -52,11 +52,11 @@ public class ExternalUrlCriteria { this.host = host; } - public ExternalUrlCriteria(String like) { + public ExternalReferenceCriteria(String like) { this.like = like; } - public ExternalUrlCriteria() { + public ExternalReferenceCriteria() { } @Override diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/criteria/FetchStrategy.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/criteria/FetchStrategy.java new file mode 100644 index 000000000..fa105321f --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/criteria/FetchStrategy.java @@ -0,0 +1,8 @@ +package eu.eudat.service.reference.external.criteria; + +public enum FetchStrategy { + + FIRST, + ALL + +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/entities/Results.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/models/ExternalRefernceResult.java similarity index 75% rename from dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/entities/Results.java rename to dmp-backend/core/src/main/java/eu/eudat/service/reference/external/models/ExternalRefernceResult.java index 7cd0067e7..e1a7db76a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/entities/Results.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/external/models/ExternalRefernceResult.java @@ -1,20 +1,20 @@ -package eu.eudat.logic.proxy.fetching.entities; +package eu.eudat.service.reference.external.models; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -public class Results { +public class ExternalRefernceResult { List> results; Map pagination; - public Results() { + public ExternalRefernceResult() { this.results = new ArrayList<>(); this.pagination = new HashMap<>(); } - public Results(List> results, Map pagination) { + public ExternalRefernceResult(List> results, Map pagination) { this.results = results; this.pagination = pagination; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicfunder/entities/MainProperty.java b/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicfunder/entities/MainProperty.java index f4a931510..d82646aaa 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicfunder/entities/MainProperty.java +++ b/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicfunder/entities/MainProperty.java @@ -1,6 +1,6 @@ package eu.eudat.configurations.dynamicfunder.entities; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicgrant/entities/MainProperty.java b/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicgrant/entities/MainProperty.java index 9cde5d51a..cc0a834c0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicgrant/entities/MainProperty.java +++ b/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicgrant/entities/MainProperty.java @@ -1,6 +1,6 @@ package eu.eudat.configurations.dynamicgrant.entities; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicproject/entities/MainProperty.java b/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicproject/entities/MainProperty.java index 29ab31b22..d1085a5d5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicproject/entities/MainProperty.java +++ b/dmp-backend/web/src/main/java/eu/eudat/configurations/dynamicproject/entities/MainProperty.java @@ -1,6 +1,6 @@ package eu.eudat.configurations.dynamicproject.entities; -import eu.eudat.logic.proxy.config.UrlConfiguration; +import eu.eudat.service.reference.external.config.UrlConfiguration; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java index 7df80c1fa..f93b1f9f0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/CommonController.java @@ -6,6 +6,8 @@ import eu.eudat.logic.managers.CommonsManager; import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.models.data.externalurl.ExternalSourcesConfiguration; import eu.eudat.models.data.helpers.responses.ResponseItem; +import eu.eudat.service.reference.external.ExternalUrlConfigProvider; +import eu.eudat.service.storage.StorageFileService; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -23,16 +25,18 @@ import java.util.List; public class CommonController { private ConfigLoader configLoader; + private final ExternalUrlConfigProvider externalUrlConfigProvider; @Autowired - public CommonController(ConfigLoader configLoader) { + public CommonController(ConfigLoader configLoader, ExternalUrlConfigProvider externalUrlConfigProvider) { this.configLoader = configLoader; + this.externalUrlConfigProvider = externalUrlConfigProvider; } @RequestMapping(method = RequestMethod.GET, value = {"/externalSourcesConfiguration"}, produces = "application/json") public @ResponseBody ResponseEntity> getExternalSourcesConfiguration() { - ExternalSourcesConfiguration configuration = CommonsManager.getExternalSourcesConfiguration(configLoader); + ExternalSourcesConfiguration configuration = CommonsManager.getExternalSourcesConfiguration(configLoader, externalUrlConfigProvider); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(configuration)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java index 994b9c6d9..27a5fb7fd 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DataRepositories.java @@ -3,13 +3,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.data.old.DataRepository; import eu.eudat.logic.managers.DataRepositoryManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datarepository.DataRepositoryModel; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -39,7 +39,7 @@ public class DataRepositories extends BaseController { public @ResponseBody ResponseEntity>> listExternalDataRepositories( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound, InvalidApplicationException { + ) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataRepositoryModels = this.dataRepositoryManager.getDataRepositories(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java index e3c53fefb..d4b10a9df 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/ExternalDatasets.java @@ -4,14 +4,14 @@ import eu.eudat.authorization.Permission; import eu.eudat.data.old.ExternalDataset; import eu.eudat.data.query.items.table.externaldataset.ExternalDatasetTableRequest; import eu.eudat.logic.managers.ExternalDatasetManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.externaldataset.ExternalDatasetListingModel; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -51,7 +51,7 @@ public class ExternalDatasets extends BaseController { public @ResponseBody ResponseEntity>> getWithExternal( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException, InvalidApplicationException { + ) throws MyNotFoundException, InstantiationException, HugeResultSetException, IllegalAccessException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataTable = externalDatasetManager.getWithExternal(query, type); @@ -60,7 +60,7 @@ public class ExternalDatasets extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/externaldatasets/getSingle/{id}"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseItem getWithExternal(@PathVariable UUID id) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException, InvalidApplicationException { + ResponseItem getWithExternal(@PathVariable UUID id) throws MyNotFoundException, InstantiationException, HugeResultSetException, IllegalAccessException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); ExternalDatasetListingModel externalDatasetModel = externalDatasetManager.getSingle(id); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Funders.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Funders.java index 37de25549..e451ef4d7 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Funders.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Funders.java @@ -3,13 +3,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.data.query.items.item.funder.FunderCriteriaRequest; import eu.eudat.logic.managers.FunderManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.funder.Funder; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -32,7 +32,7 @@ public class Funders extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/external"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithExternal(@RequestBody FunderCriteriaRequest funderCriteria) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException, InvalidApplicationException { + ResponseEntity>> getWithExternal(@RequestBody FunderCriteriaRequest funderCriteria) throws MyNotFoundException, InstantiationException, HugeResultSetException, IllegalAccessException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataTable = this.funderManager.getCriteriaWithExternal(funderCriteria); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Grants.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Grants.java index fddc6091f..090f455c0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Grants.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Grants.java @@ -4,14 +4,14 @@ import eu.eudat.authorization.Permission; import eu.eudat.data.query.items.item.grant.GrantCriteriaRequest; import eu.eudat.data.query.items.table.grant.GrantTableRequest; import eu.eudat.logic.managers.GrantManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.grant.GrantListingModel; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -80,7 +80,7 @@ public class Grants extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/external"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithExternal(@RequestBody GrantCriteriaRequest grantCriteria) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException, InvalidApplicationException { + ResponseEntity>> getWithExternal(@RequestBody GrantCriteriaRequest grantCriteria) throws MyNotFoundException, InstantiationException, HugeResultSetException, IllegalAccessException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataTable = this.grantManager.getCriteriaWithExternal(grantCriteria); @@ -89,7 +89,7 @@ public class Grants extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"get"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> get(@RequestBody GrantCriteriaRequest grantCriteria) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException, InvalidApplicationException { + ResponseEntity>> get(@RequestBody GrantCriteriaRequest grantCriteria) throws MyNotFoundException, InstantiationException, HugeResultSetException, IllegalAccessException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AnonymousRole); List dataTable = this.grantManager.getCriteria(grantCriteria); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/JournalsController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/JournalsController.java index eff9a2ea3..a64207499 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/JournalsController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/JournalsController.java @@ -2,13 +2,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.logic.managers.DataRepositoryManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datarepository.DataRepositoryModel; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -37,7 +37,7 @@ public class JournalsController extends BaseController { public @ResponseBody ResponseEntity>> listExternalDataRepositories( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound, InvalidApplicationException { + ) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataRepositoryModels = this.dataRepositoryManager.getJournals(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Licenses.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Licenses.java index d8837045e..36226f7ff 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Licenses.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Licenses.java @@ -2,13 +2,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.logic.managers.LicenseManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.license.LicenseModel; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -36,7 +36,7 @@ public class Licenses extends BaseController { public @ResponseBody ResponseEntity>> listExternalLicenses( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound { + ) throws HugeResultSetException, MyNotFoundException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List licenseModels = this.licenseManager.getLicenses(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java index 43ef3d378..4b6f86f67 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Organisations.java @@ -3,14 +3,14 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.data.query.items.table.organisations.OrganisationsTableRequest; import eu.eudat.logic.managers.OrganisationsManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.dmp.Organisation; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -41,7 +41,7 @@ public class Organisations extends BaseController { public @ResponseBody ResponseEntity>> listExternalOrganisations( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound { + ) throws HugeResultSetException, MyNotFoundException { List organisations = organisationsManager.getCriteriaWithExternal(query, type); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(organisations).status(ApiMessageCode.NO_MESSAGE)); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java index 74c24204a..f8e1cb11e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java @@ -3,13 +3,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.data.query.items.item.project.ProjectCriteriaRequest; import eu.eudat.logic.managers.ProjectManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.project.Project; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -34,7 +34,7 @@ public class Projects extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/external"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithExternal(@RequestBody ProjectCriteriaRequest projectCriteria) throws NoURLFound, InstantiationException, HugeResultSet, IllegalAccessException, InvalidApplicationException { + ResponseEntity>> getWithExternal(@RequestBody ProjectCriteriaRequest projectCriteria) throws MyNotFoundException, InstantiationException, HugeResultSetException, IllegalAccessException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataTable = this.projectManager.getCriteriaWithExternal(projectCriteria); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/PubRepositoriesController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/PubRepositoriesController.java index 47511bc7f..4a3a4e403 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/PubRepositoriesController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/PubRepositoriesController.java @@ -2,13 +2,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.logic.managers.DataRepositoryManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datarepository.DataRepositoryModel; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -37,7 +37,7 @@ public class PubRepositoriesController extends BaseController { public @ResponseBody ResponseEntity>> listExternalDataRepositories( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound, InvalidApplicationException { + ) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataRepositoryModels = this.dataRepositoryManager.getPubRepositories(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/PublicationsController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/PublicationsController.java index af182be6d..21af8b6f1 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/PublicationsController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/PublicationsController.java @@ -2,13 +2,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.logic.managers.PublicationManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.publication.PublicationModel; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -36,7 +36,7 @@ public class PublicationsController extends BaseController { public @ResponseBody ResponseEntity>> listExternalPublications( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound { + ) throws HugeResultSetException, MyNotFoundException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List publicationModels = this.publicationManager.getPublications(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java index c52009d2a..23fad4582 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Registries.java @@ -3,13 +3,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.data.old.Registry; import eu.eudat.logic.managers.RegistryManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.registries.RegistryModel; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -38,7 +38,7 @@ public class Registries extends BaseController { @RequestMapping(method = RequestMethod.GET, value = {"/external/registries"}, produces = "application/json") public @ResponseBody ResponseEntity>> listExternalRegistries(@RequestParam(value = "query", required = false) String query - , @RequestParam(value = "type", required = false) String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { + , @RequestParam(value = "type", required = false) String type) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List registryModels = this.registryManager.getRegistries(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java index 9f23f6d1e..78e4774f4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Researchers.java @@ -3,13 +3,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.data.query.items.item.researcher.ResearcherCriteriaRequest; import eu.eudat.logic.managers.ResearcherManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.dmp.Researcher; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -37,7 +37,7 @@ public class Researchers extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/getWithExternal"}, consumes = "application/json", produces = "application/json") public @ResponseBody - ResponseEntity>> getWithExternal(@RequestBody ResearcherCriteriaRequest researcherCriteriaRequest) throws HugeResultSet, NoURLFound, InvalidApplicationException { + ResponseEntity>> getWithExternal(@RequestBody ResearcherCriteriaRequest researcherCriteriaRequest) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List dataTable = this.researcherManager.getCriteriaWithExternal(researcherCriteriaRequest); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java index 04de4a0a2..814c5ca7c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Services.java @@ -3,13 +3,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.data.old.Service; import eu.eudat.logic.managers.ServiceManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.services.ServiceModel; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -39,7 +39,7 @@ public class Services extends BaseController { public @ResponseBody ResponseEntity>> listExternalServices( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound, InvalidApplicationException { + ) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List serviceModels = this.serviceManager.getServices(query, type); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(serviceModels).status(ApiMessageCode.NO_MESSAGE)); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/TaxonomiesController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/TaxonomiesController.java index a83d7ef6e..87798b30b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/TaxonomiesController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/TaxonomiesController.java @@ -2,13 +2,13 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.logic.managers.TaxonomyManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.taxonomy.TaxonomyModel; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -36,7 +36,7 @@ public class TaxonomiesController extends BaseController { public @ResponseBody ResponseEntity>> listExternalPublications( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound { + ) throws HugeResultSetException, MyNotFoundException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List taxonomyModels = this.taxonomyManager.getTaxonomies(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Validation.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Validation.java index a5818ffd2..023def822 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Validation.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Validation.java @@ -2,12 +2,12 @@ package eu.eudat.controllers; import eu.eudat.authorization.Permission; import eu.eudat.logic.managers.ValidationManager; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -32,7 +32,7 @@ public class Validation extends BaseController { public @ResponseBody ResponseEntity> validate( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound { + ) throws HugeResultSetException, MyNotFoundException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); Boolean isValid = this.validationManager.validateIdentifier(query, type); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerErrorHandler.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerErrorHandler.java deleted file mode 100644 index 5fe018b2a..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerErrorHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -//package eu.eudat.controllers.controllerhandler; -// -// -//import eu.eudat.models.data.helpers.responses.ResponseItem; -//import eu.eudat.types.ApiMessageCode; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.http.HttpStatus; -//import org.springframework.web.bind.annotation.ControllerAdvice; -//import org.springframework.web.bind.annotation.ExceptionHandler; -//import org.springframework.web.bind.annotation.ResponseBody; -//import org.springframework.web.bind.annotation.ResponseStatus; -// -//import jakarta.annotation.Priority; -// -///** -// * Created by ikalyvas on 6/12/2018. -// */ -//@ControllerAdvice -//@Priority(5) -//public class ControllerErrorHandler { -// private static final Logger logger = LoggerFactory.getLogger(ControllerErrorHandler.class); -// -// @ExceptionHandler(Exception.class) -// @ResponseStatus(HttpStatus.BAD_REQUEST) -// @ResponseBody -// public ResponseItem processValidationError( Exception ex) throws Exception { -// logger.error(ex.getMessage(), ex); -// return new ResponseItem().message(ex.getMessage()).status(ApiMessageCode.DEFAULT_ERROR_MESSAGE); -// } -//} diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerUnauthorisedHandler.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerUnauthorisedHandler.java deleted file mode 100644 index 993c65d22..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerUnauthorisedHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -//package eu.eudat.controllers.controllerhandler; -// -//import eu.eudat.exceptions.security.UnauthorisedException; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.http.HttpStatus; -//import org.springframework.web.bind.annotation.ControllerAdvice; -//import org.springframework.web.bind.annotation.ExceptionHandler; -//import org.springframework.web.bind.annotation.ResponseBody; -//import org.springframework.web.bind.annotation.ResponseStatus; -// -//import jakarta.annotation.Priority; -// -///** -// * Created by ikalyvas on 6/12/2018. -// */ -//@ControllerAdvice -//@Priority(4) -//public class ControllerUnauthorisedHandler { -// private static final Logger logger = LoggerFactory.getLogger(ControllerUnauthorisedHandler.class); -// -// @Autowired -// public ControllerUnauthorisedHandler() { -// } -// -// @ExceptionHandler(UnauthorisedException.class) -// @ResponseStatus(HttpStatus.UNAUTHORIZED) -// @ResponseBody -// public void processValidationError(UnauthorisedException ex) { -// logger.error(ex.getMessage(), ex); -// return; -// } -//} diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerUserNullEmailHandler.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerUserNullEmailHandler.java deleted file mode 100644 index 3b73a18ab..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerUserNullEmailHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -//package eu.eudat.controllers.controllerhandler; -// -//import eu.eudat.exceptions.security.NullEmailException; -//import eu.eudat.models.data.helpers.responses.ResponseItem; -//import eu.eudat.types.ApiMessageCode; -//import org.springframework.core.annotation.Order; -//import org.springframework.http.ResponseEntity; -//import org.springframework.web.bind.annotation.ControllerAdvice; -//import org.springframework.web.bind.annotation.ExceptionHandler; -// -//@ControllerAdvice -//@Order(2) -//public class ControllerUserNullEmailHandler { -// -// @ExceptionHandler(NullEmailException.class) -// public ResponseEntity nullEmailException(Exception ex) throws Exception { -// return ResponseEntity.status(ApiMessageCode.NULL_EMAIL.getValue()).body(""); -// } -//} diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerValidatorErrorHandler.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerValidatorErrorHandler.java deleted file mode 100644 index 65b3879dd..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/controllerhandler/ControllerValidatorErrorHandler.java +++ /dev/null @@ -1,66 +0,0 @@ -//package eu.eudat.controllers.controllerhandler; -// -//import eu.eudat.models.data.errormodels.ValidationErrorContext; -//import eu.eudat.models.data.helpers.responses.ResponseItem; -//import eu.eudat.types.ApiMessageCode; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.context.MessageSource; -//import org.springframework.context.i18n.LocaleContextHolder; -//import org.springframework.core.annotation.Order; -//import org.springframework.http.HttpStatus; -//import org.springframework.validation.BindingResult; -//import org.springframework.validation.FieldError; -//import org.springframework.web.bind.MethodArgumentNotValidException; -//import org.springframework.web.bind.annotation.ControllerAdvice; -//import org.springframework.web.bind.annotation.ExceptionHandler; -//import org.springframework.web.bind.annotation.ResponseBody; -//import org.springframework.web.bind.annotation.ResponseStatus; -// -//import java.util.List; -//import java.util.Locale; -// -// -//@ControllerAdvice -//@Order(3) -//public class ControllerValidatorErrorHandler { -// -// private MessageSource messageSource; -// -// @Autowired -// public ControllerValidatorErrorHandler(MessageSource messageSource) { -// this.messageSource = messageSource; -// } -// -// @ExceptionHandler(MethodArgumentNotValidException.class) -// @ResponseStatus(HttpStatus.BAD_REQUEST) -// @ResponseBody -// public ResponseItem processValidationError(MethodArgumentNotValidException ex) { -// BindingResult result = ex.getBindingResult(); -// List fieldErrors = result.getFieldErrors(); -// -// return processFieldErrors(fieldErrors); -// } -// -// private ResponseItem processFieldErrors(List fieldErrors) { -// ValidationErrorContext dto = new ValidationErrorContext(); -// -// for (FieldError fieldError : fieldErrors) { -// String localizedErrorMessage = resolveLocalizedErrorMessage(fieldError); -// dto.addFieldError(fieldError.getField(), localizedErrorMessage); -// } -// -// return new ResponseItem().status(ApiMessageCode.VALIDATION_MESSAGE).payload(dto); -// } -// -// private String resolveLocalizedErrorMessage(FieldError fieldError) { -// Locale currentLocale = LocaleContextHolder.getLocale(); -// String localizedErrorMessage = messageSource.getMessage(fieldError, currentLocale); -// -// if (localizedErrorMessage.equals(fieldError.getDefaultMessage())) { -// String[] fieldErrorCodes = fieldError.getCodes(); -// localizedErrorMessage = fieldErrorCodes[0]; -// } -// -// return localizedErrorMessage; -// } -//} diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalValidationController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalValidationController.java index 739328085..1f8baf9a0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalValidationController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalValidationController.java @@ -2,13 +2,13 @@ package eu.eudat.controllers.v2; import eu.eudat.authorization.Permission; import eu.eudat.controllers.BaseController; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.ExternalValidationService; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -32,7 +32,7 @@ public class ExternalValidationController extends BaseController { public @ResponseBody ResponseEntity> validate( @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type - ) throws HugeResultSet, NoURLFound { + ) throws HugeResultSetException, MyNotFoundException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); Boolean isValid = this.externalValidationService.validateIdentifier(query, type); 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 b37a8afda..840bd89a3 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 @@ -6,10 +6,9 @@ import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.authorization.Permission; import eu.eudat.controllers.BaseController; import eu.eudat.data.ReferenceEntity; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; -import eu.eudat.logic.services.references.ReferenceService; +import eu.eudat.service.reference.ReferenceService; import eu.eudat.model.Reference; import eu.eudat.model.builder.ReferenceBuilder; import eu.eudat.model.censorship.ReferenceCensor; @@ -100,7 +99,7 @@ public class ReferenceController extends BaseController { } @PostMapping("search") - public @ResponseBody ResponseEntity>> searchReference(@RequestBody ReferenceSearchLookup lookup) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public @ResponseBody ResponseEntity>> searchReference(@RequestBody ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); // ReferenceType referenceType = ReferenceType.of((short) externalType); @@ -112,7 +111,7 @@ public class ReferenceController extends BaseController { } @PostMapping("search-with-db-definition") - public @ResponseBody ResponseEntity>> searchReferenceWithDefinition(@RequestBody ReferenceDefinitionSearchLookup lookup) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public @ResponseBody ResponseEntity>> searchReferenceWithDefinition(@RequestBody ReferenceDefinitionSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); List references = this.referenceService.searchReferenceWithDefinition(lookup); @@ -158,7 +157,7 @@ public class ReferenceController extends BaseController { // 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, NoURLFound, InvalidApplicationException { +// ) throws HugeResultSet, MyNotFoundException, InvalidApplicationException { // this.authorizationService.authorizeForce(Permission.AuthenticatedRole); // ReferenceType referenceType = ReferenceType.of((short) externalType); // diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/CommonsManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/CommonsManager.java index 3948216de..b791ee2d2 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/CommonsManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/CommonsManager.java @@ -2,23 +2,32 @@ package eu.eudat.logic.managers; import eu.eudat.models.data.externalurl.ExternalSourcesConfiguration; import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; +import eu.eudat.service.reference.external.ExternalUrlConfigProvider; +import eu.eudat.service.reference.external.config.ExternalUrls; +import eu.eudat.service.storage.StorageFileService; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.Unmarshaller; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.ByteArrayInputStream; import java.util.stream.Collectors; /** * Created by ikalyvas on 5/17/2018. */ public class CommonsManager { + - public static ExternalSourcesConfiguration getExternalSourcesConfiguration(ConfigLoader configLoader){ + public static ExternalSourcesConfiguration getExternalSourcesConfiguration(ConfigLoader configLoader, ExternalUrlConfigProvider externalUrlConfigProvider){ ExternalSourcesConfiguration externalSourcesConfiguration = new ExternalSourcesConfiguration(); - externalSourcesConfiguration.setDataRepositories(configLoader.getExternalUrls().getRepositories().getUrls().stream() + externalSourcesConfiguration.setDataRepositories(externalUrlConfigProvider.getExternalUrls().getRepositories().getUrls().stream() .map(item-> new ExternalSourcesConfiguration.ExternalSourcesUrlModel(item.getKey(),item.getLabel())).collect(Collectors.toList())); - externalSourcesConfiguration.setExternalDatasets(configLoader.getExternalUrls().getDatasets().getUrls().stream() + externalSourcesConfiguration.setExternalDatasets(externalUrlConfigProvider.getExternalUrls().getDatasets().getUrls().stream() .map(item-> new ExternalSourcesConfiguration.ExternalSourcesUrlModel(item.getKey(),item.getLabel())).collect(Collectors.toList())); - externalSourcesConfiguration.setRegistries(configLoader.getExternalUrls().getRegistries().getUrls().stream() + externalSourcesConfiguration.setRegistries(externalUrlConfigProvider.getExternalUrls().getRegistries().getUrls().stream() .map(item-> new ExternalSourcesConfiguration.ExternalSourcesUrlModel(item.getKey(),item.getLabel())).collect(Collectors.toList())); - externalSourcesConfiguration.setServices(configLoader.getExternalUrls().getServices().getUrls().stream() + externalSourcesConfiguration.setServices(externalUrlConfigProvider.getExternalUrls().getServices().getUrls().stream() .map(item-> new ExternalSourcesConfiguration.ExternalSourcesUrlModel(item.getKey(),item.getLabel())).collect(Collectors.toList())); /*externalSourcesConfiguration.setTags(configLoader.getExternalUrls().getTags().getUrls().stream() .map(item-> new ExternalSourcesConfiguration.ExternalSourcesUrlModel(item.getKey(),item.getLabel())).collect(Collectors.toList()));*/ 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 f24647209..a9e178935 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 @@ -2,14 +2,15 @@ package eu.eudat.logic.managers; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.dao.criteria.DataRepositoryCriteria; import eu.eudat.data.old.DataRepository; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datarepository.DataRepositoryModel; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -39,9 +40,9 @@ public class DataRepositoryManager { return apiContext.getOperationsContext().getDatabaseRepository().getDataRepositoryDao().createOrUpdate(dataRepository); } - public List getDataRepositories(String query, String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getRepositories(externalUrlCriteria, type); + 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); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); @@ -58,9 +59,9 @@ public class DataRepositoryManager { return dataRepositoryModels; } - public List getPubRepositories(String query, String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getPubRepositories(externalUrlCriteria, type); + 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); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); @@ -77,9 +78,9 @@ public class DataRepositoryManager { return dataRepositoryModels; } - public List getJournals(String query, String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getJournals(externalUrlCriteria, type); + 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); DataRepositoryCriteria criteria = new DataRepositoryCriteria(); if (!query.isEmpty()) criteria.setLike(query); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java index fc136e541..78e7ec9ff 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java @@ -4,14 +4,18 @@ import eu.eudat.commons.types.descriptiontemplate.FieldEntity; import eu.eudat.commons.types.descriptiontemplate.fielddata.AutoCompleteDataEntity; import eu.eudat.commons.types.xml.XmlBuilder; import eu.eudat.data.DescriptionTemplateEntity; -import eu.eudat.logic.proxy.config.*; import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; -import eu.eudat.logic.proxy.config.entities.GeneralUrls; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.service.reference.external.config.entities.GeneralUrls; +import eu.eudat.service.reference.external.RemoteFetcher; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.operations.DatabaseRepository; import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; -import eu.eudat.service.descriptiontemplate.Semantic; +import eu.eudat.service.reference.external.config.AuthenticationConfiguration; +import eu.eudat.service.reference.external.config.DataFieldsUrlConfiguration; +import eu.eudat.service.reference.external.config.DataUrlConfiguration; +import eu.eudat.service.reference.external.config.UrlConfiguration; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.service.reference.external.criteria.FetchStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -37,7 +41,6 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @Component @@ -134,7 +137,7 @@ public class DatasetProfileManager { return result.stream().sorted(Comparator.comparing(ExternalAutocompleteFieldModel::getLabel)).collect(Collectors.toList()); */ List result = new LinkedList<>(); - ExternalUrlCriteria urlCriteria = new ExternalUrlCriteria(); + ExternalReferenceCriteria urlCriteria = new ExternalReferenceCriteria(); GeneralUrls genericUrls = new GeneralUrls(); int ordinal = 1; List> rawResults = new ArrayList<>(); 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 4261d450f..a1eaa4729 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 @@ -2,21 +2,22 @@ package eu.eudat.logic.managers; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.old.ExternalDataset; import eu.eudat.logic.builders.model.criteria.ExternalDatasetCriteriaBuilder; import eu.eudat.logic.builders.model.models.DataTableDataBuilder; import eu.eudat.data.dao.criteria.ExternalDatasetCriteria; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; import eu.eudat.logic.services.operations.DatabaseRepository; import eu.eudat.models.data.externaldataset.ExternalDatasetListingModel; import eu.eudat.data.query.items.table.externaldataset.ExternalDatasetTableRequest; import eu.eudat.models.data.helpers.common.DataTableData; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.RemoteFetcher; import eu.eudat.queryable.QueryableList; import eu.eudat.logic.services.ApiContext; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -49,15 +50,15 @@ public class ExternalDatasetManager { return apiContext.getOperationsContext().getBuilderFactory().getBuilder(DataTableDataBuilder.class).data(externalDatasetListingmodels).totalCount(items.count()).build(); } - public List getWithExternal(String query, String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public List getWithExternal(String query, String type) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { // Fetch the local saved external Datasets that belong to the user. ExternalDatasetCriteria criteria = apiContext.getOperationsContext().getBuilderFactory().getBuilder(ExternalDatasetCriteriaBuilder.class).like(query).build(); criteria.setCreationUserId(this.userScope.getUserId()); QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getExternalDatasetDao().getWithCriteria(criteria); // Fetch external Datasets from external sources. - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = remoteFetcher.getDatasets(externalUrlCriteria, type); + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Datasets, externalReferenceCriteria, type); // Parse items from external sources to listing models. ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); @@ -72,7 +73,7 @@ public class ExternalDatasetManager { return externalDatasets; } - public ExternalDatasetListingModel getSingle(UUID id) throws HugeResultSet, NoURLFound, InstantiationException, IllegalAccessException, InvalidApplicationException { + public ExternalDatasetListingModel getSingle(UUID id) throws HugeResultSetException, MyNotFoundException, InstantiationException, IllegalAccessException, InvalidApplicationException { ExternalDataset externalDataset = databaseRepository.getExternalDatasetDao().find(id); ExternalDatasetListingModel externalDatasetModel = new ExternalDatasetListingModel(); externalDatasetModel.fromDataModel(externalDataset); 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 90260f1f3..3008427b6 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 @@ -1,19 +1,20 @@ package eu.eudat.logic.managers; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.UserEntity; import eu.eudat.data.query.items.item.funder.FunderCriteriaRequest; import eu.eudat.logic.builders.model.models.FunderBuilder; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.RemoteFetcher; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.utilities.helpers.ListHelper; import eu.eudat.models.data.external.ExternalSourcesItemModel; import eu.eudat.models.data.external.FundersExternalSourcesModel; import eu.eudat.models.data.funder.Funder; import eu.eudat.queryable.QueryableList; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.stereotype.Component; import javax.management.InvalidApplicationException; @@ -37,15 +38,15 @@ public class FunderManager { this.userScope = userScope; } - public List getCriteriaWithExternal(FunderCriteriaRequest funderCriteria) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public List getCriteriaWithExternal(FunderCriteriaRequest funderCriteria) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { UserEntity userInfo = new UserEntity(); userInfo.setId(this.userScope.getUserId()); funderCriteria.getCriteria().setReference("dmp:"); QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getFunderDao().getWithCritetia(funderCriteria.getCriteria()); QueryableList authItems = apiContext.getOperationsContext().getDatabaseRepository().getFunderDao().getAuthenticated(items, userInfo); List funders = authItems.select(item -> new eu.eudat.models.data.funder.Funder().fromDataModel(item)); - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(funderCriteria.getCriteria().getLike()); - List> remoteRepos = remoteFetcher.getFunders(externalUrlCriteria); + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(funderCriteria.getCriteria().getLike()); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(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 7ca3ea163..0e4f0def7 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 @@ -1,11 +1,12 @@ package eu.eudat.logic.managers; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.UserEntity; import eu.eudat.data.query.items.table.grant.GrantTableRequest; import eu.eudat.logic.builders.model.models.GrantBuilder; import eu.eudat.data.dao.entities.GrantDao; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; import eu.eudat.logic.services.operations.DatabaseRepository; import eu.eudat.logic.utilities.helpers.ListHelper; import eu.eudat.models.data.external.ExternalSourcesItemModel; @@ -14,11 +15,11 @@ import eu.eudat.models.data.grant.Grant; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.data.query.items.item.grant.GrantCriteriaRequest; import eu.eudat.models.data.grant.GrantListingModel; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.RemoteFetcher; import eu.eudat.queryable.QueryableList; import eu.eudat.logic.services.ApiContext; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.stereotype.Component; import javax.management.InvalidApplicationException; @@ -105,7 +106,7 @@ public class GrantManager { return grant; }*/ - public List getCriteriaWithExternal(GrantCriteriaRequest grantCriteria) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public List getCriteriaWithExternal(GrantCriteriaRequest grantCriteria) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { UserEntity userInfo = new UserEntity(); userInfo.setId(this.userScope.getUserId()); /*if (grantCriteria.getCriteria().getFunderReference() != null && !grantCriteria.getCriteria().getFunderReference().trim().isEmpty()) { @@ -116,9 +117,9 @@ public class GrantManager { grantCriteria.getCriteria().setFunderId(funder.getId().toString()); } }*/ - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(grantCriteria.getCriteria().getLike()); + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(grantCriteria.getCriteria().getLike()); if (grantCriteria.getCriteria().getFunderReference() != null) { - externalUrlCriteria.setFunderId(grantCriteria.getCriteria().getFunderReference()); + externalReferenceCriteria.setFunderId(grantCriteria.getCriteria().getFunderReference()); grantCriteria.getCriteria().setFunderReference(null); } grantCriteria.getCriteria().setReference("dmp:"); @@ -126,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.getGrants(externalUrlCriteria); + List> remoteRepos = remoteFetcher.get(ReferenceType.Grants, externalReferenceCriteria, null); GrantsExternalSourcesModel grantsExternalSourcesModel = new GrantsExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : grantsExternalSourcesModel) { @@ -145,7 +146,7 @@ public class GrantManager { return grants; } - public List getCriteria(GrantCriteriaRequest grantCriteria) throws IllegalAccessException, InstantiationException, HugeResultSet, NoURLFound, InvalidApplicationException { + public List getCriteria(GrantCriteriaRequest grantCriteria) throws IllegalAccessException, InstantiationException, HugeResultSetException, MyNotFoundException, InvalidApplicationException { GrantDao grantRepository = databaseRepository.getGrantDao(); QueryableList items = grantRepository.getWithCriteria(grantCriteria.getCriteria()); if (grantCriteria.getLength() != null) items.take(grantCriteria.getLength()); 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 6b7161c40..ad6ff34a7 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 @@ -2,12 +2,13 @@ package eu.eudat.logic.managers; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.data.dao.criteria.DataRepositoryCriteria; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.license.LicenseModel; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -28,9 +29,9 @@ public class LicenseManager { this.apiContext = apiContext; } - public List getLicenses(String query, String type) throws HugeResultSet, NoURLFound { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getlicenses(externalUrlCriteria, type); + 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); 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 72a3672c5..9aa67ed8a 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 @@ -1,13 +1,13 @@ package eu.eudat.logic.managers; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.dao.entities.OrganisationDao; import eu.eudat.data.UserEntity; import eu.eudat.data.query.items.table.organisations.OrganisationsTableRequest; import eu.eudat.logic.builders.model.models.OrganisationBuilder; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.operations.DatabaseRepository; import eu.eudat.models.data.dmp.Organisation; @@ -15,6 +15,7 @@ import eu.eudat.models.data.external.ExternalSourcesItemModel; import eu.eudat.models.data.external.OrganisationsExternalSourcesModel; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.queryable.QueryableList; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -80,8 +81,8 @@ public class OrganisationsManager { List org = pagedItems.toList().stream().distinct().map(item -> new Organisation().fromDataModel(item)).collect(Collectors.toList()); - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(organisationsTableRequest.getCriteria().getLabelLike()); - List> remoteRepos = apiContext.getOperationsContext().getRemoteFetcher().getOrganisations(externalUrlCriteria, null); + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(organisationsTableRequest.getCriteria().getLabelLike()); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Organizations, externalReferenceCriteria, null); OrganisationsExternalSourcesModel organisationsExternalSourcesModel = new OrganisationsExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : organisationsExternalSourcesModel) { Organisation organisation = apiContext.getOperationsContext().getBuilderFactory().getBuilder(OrganisationBuilder.class) @@ -95,9 +96,9 @@ public class OrganisationsManager { return org; } - public List getCriteriaWithExternal(String query, String type) throws HugeResultSet, NoURLFound { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = apiContext.getOperationsContext().getRemoteFetcher().getOrganisations(externalUrlCriteria, type); + 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); 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/PrefillingManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/PrefillingManager.java index c74918ba8..1442b9727 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/PrefillingManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/PrefillingManager.java @@ -4,52 +4,62 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import eu.eudat.data.DescriptionTemplateEntity; import eu.eudat.logic.mapper.prefilling.PrefillingMapper; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; +import eu.eudat.service.reference.external.ExternalUrlConfigProvider; +import eu.eudat.service.reference.external.RemoteFetcher; +import eu.eudat.service.reference.external.config.ExternalUrls; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; -import eu.eudat.logic.proxy.config.entities.PrefillingConfig; -import eu.eudat.logic.proxy.config.entities.PrefillingGet; +import eu.eudat.service.reference.external.config.entities.PrefillingConfig; +import eu.eudat.service.reference.external.config.entities.PrefillingGet; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.prefilling.Prefilling; +import eu.eudat.service.storage.StorageFileService; +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.http.*; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import java.io.ByteArrayInputStream; import java.util.*; import java.util.stream.Collectors; @Service public class PrefillingManager { + private static final Logger logger = LoggerFactory.getLogger(PrefillingManager.class); private final ApiContext apiContext; - private final ConfigLoader configLoader; private final ObjectMapper objectMapper; private final DatasetManager datasetManager; private final LicenseManager licenseManager; private final PrefillingMapper prefillingMapper; + private final ExternalUrlConfigProvider externalUrlConfigProvider; @Autowired - public PrefillingManager(ApiContext apiContext, ConfigLoader configLoader, DatasetManager datasetManager, LicenseManager licenseManager, PrefillingMapper prefillingMapper) { + public PrefillingManager(ApiContext apiContext, DatasetManager datasetManager, LicenseManager licenseManager, PrefillingMapper prefillingMapper, ExternalUrlConfigProvider externalUrlConfigProvider) { this.apiContext = apiContext; - this.configLoader = configLoader; this.prefillingMapper = prefillingMapper; - this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + this.externalUrlConfigProvider = externalUrlConfigProvider; + this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); this.datasetManager = datasetManager; this.licenseManager = licenseManager; } public List getPrefillings(String like) { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(); - externalUrlCriteria.setLike(like); + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(); + externalReferenceCriteria.setLike(like); List prefillings = new ArrayList<>(); List> map; - Map prefillingConfigs = configLoader.getExternalUrls().getPrefillings(); + Map prefillingConfigs = this.externalUrlConfigProvider.getExternalUrls().getPrefillings(); for (PrefillingConfig prefillingConfig: prefillingConfigs.values()) { - map = apiContext.getOperationsContext().getRemoteFetcher().getExternalGeneric(externalUrlCriteria, prefillingConfig.getPrefillingSearch()); + map = apiContext.getOperationsContext().getRemoteFetcher().getExternalGeneric(externalReferenceCriteria, prefillingConfig.getPrefillingSearch()); prefillings.addAll(map.stream().map(submap -> objectMapper.convertValue(submap, Prefilling.class)).collect(Collectors.toList())); if (prefillingConfig.getPrefillingSearch().getUrlConfig().isDataInListing()) { - List> mapData = apiContext.getOperationsContext().getRemoteFetcher().getExternalGenericWithData(externalUrlCriteria, prefillingConfig.getPrefillingSearch()); + List> mapData = apiContext.getOperationsContext().getRemoteFetcher().getExternalGenericWithData(externalReferenceCriteria, prefillingConfig.getPrefillingSearch()); for (int i = 0; i < mapData.size(); i++) { prefillings.get(i).setData(mapData.get(i)); } @@ -60,7 +70,7 @@ public class PrefillingManager { } public DatasetWizardModel getPrefilledDataset(String prefillId, String configId, UUID profileId) throws Exception { - PrefillingConfig prefillingConfig = configLoader.getExternalUrls().getPrefillings().get(configId); + PrefillingConfig prefillingConfig = this.externalUrlConfigProvider.getExternalUrls().getPrefillings().get(configId); PrefillingGet prefillingGet = prefillingConfig.getPrefillingGet(); Map prefillingEntity = getSingle(prefillingGet.getUrl(), prefillId); DescriptionTemplateEntity descriptionTemplateEntity = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(profileId); @@ -68,7 +78,7 @@ public class PrefillingManager { } public DatasetWizardModel getPrefilledDatasetUsingData(Map data, String configId, UUID profileId) throws Exception { - PrefillingConfig prefillingConfig = configLoader.getExternalUrls().getPrefillings().get(configId); + PrefillingConfig prefillingConfig = this.externalUrlConfigProvider.getExternalUrls().getPrefillings().get(configId); PrefillingGet prefillingGet = prefillingConfig.getPrefillingGet(); DescriptionTemplateEntity descriptionTemplateEntity = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(profileId); return prefillingMapper.mapPrefilledEntityToDatasetWizard(data, prefillingGet, prefillingConfig.getType(), descriptionTemplateEntity, datasetManager, licenseManager); 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 c67804e1b..8ccc9a295 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 @@ -1,19 +1,20 @@ package eu.eudat.logic.managers; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.UserEntity; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; import eu.eudat.logic.utilities.helpers.ListHelper; import eu.eudat.models.data.external.ProjectsExternalSourcesModel; import eu.eudat.models.data.project.Project; import eu.eudat.data.query.items.item.project.ProjectCriteriaRequest; import eu.eudat.logic.builders.model.models.ProjectBuilder; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.RemoteFetcher; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.external.ExternalSourcesItemModel; import eu.eudat.queryable.QueryableList; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.stereotype.Component; import javax.management.InvalidApplicationException; @@ -37,15 +38,15 @@ public class ProjectManager { this.userScope = userScope; } - public List getCriteriaWithExternal(ProjectCriteriaRequest projectCriteria) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public List getCriteriaWithExternal(ProjectCriteriaRequest projectCriteria) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { UserEntity userInfo = new UserEntity(); userInfo.setId(this.userScope.getUserId()); projectCriteria.getCriteria().setReference("dmp:"); QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getProjectDao().getWithCritetia(projectCriteria.getCriteria()); QueryableList authItems = apiContext.getOperationsContext().getDatabaseRepository().getProjectDao().getAuthenticated(items, userInfo); List projects = authItems.select(item -> new Project().fromDataModel(item)); - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(projectCriteria.getCriteria().getLike()); - List> remoteRepos = remoteFetcher.getProjects(externalUrlCriteria); + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(projectCriteria.getCriteria().getLike()); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(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 6116b62d4..fc6eb41c0 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 @@ -2,12 +2,13 @@ package eu.eudat.logic.managers; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.data.dao.criteria.DataRepositoryCriteria; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.publication.PublicationModel; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -25,9 +26,9 @@ public class PublicationManager { this.apiContext = apiContext; } - public List getPublications(String query, String type) throws HugeResultSet, NoURLFound { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getPublications(externalUrlCriteria, type); + 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); 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 a8e597755..a3ce1ffc1 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 @@ -2,14 +2,15 @@ package eu.eudat.logic.managers; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.dao.criteria.RegistryCriteria; import eu.eudat.data.old.Registry; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.registries.RegistryModel; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -40,9 +41,9 @@ public class RegistryManager { return apiContext.getOperationsContext().getDatabaseRepository().getRegistryDao().createOrUpdate(registry); } - public List getRegistries(String query, String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getRegistries(externalUrlCriteria, type); + 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); 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 769d5d8c1..044ae6716 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 @@ -1,20 +1,21 @@ package eu.eudat.logic.managers; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.logic.builders.model.models.ResearcherBuilder; import eu.eudat.data.old.Researcher; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; import eu.eudat.models.data.external.ExternalSourcesItemModel; import eu.eudat.models.data.external.ResearchersExternalSourcesModel; import eu.eudat.data.query.items.item.researcher.ResearcherCriteriaRequest; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.RemoteFetcher; import eu.eudat.query.UserQuery; import eu.eudat.queryable.QueryableList; import eu.eudat.logic.services.ApiContext; import gr.cite.tools.data.query.QueryFactory; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -50,7 +51,7 @@ public class ResearcherManager { return apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao().createOrUpdate(researcherEntity); } - public List getCriteriaWithExternal(ResearcherCriteriaRequest researcherCriteriaRequest) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public List getCriteriaWithExternal(ResearcherCriteriaRequest researcherCriteriaRequest) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao().getWithCriteria(researcherCriteriaRequest.getCriteria()); items.where((builder, root) -> builder.equal(root.get("creationUser").get("id"), this.userScope.getUserId())); @@ -63,8 +64,8 @@ public class ResearcherManager { else item.setTag(keyToSourceMap.get(item.getKey())); } - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(researcherCriteriaRequest.getCriteria().getName()); - List> remoteRepos = remoteFetcher.getResearchers(externalUrlCriteria,null); + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(researcherCriteriaRequest.getCriteria().getName()); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(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 93e55725a..393bcbd3b 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 @@ -3,15 +3,16 @@ package eu.eudat.logic.managers; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import eu.eudat.authorization.Permission; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.commons.scope.user.UserScope; import eu.eudat.data.dao.criteria.ServiceCriteria; import eu.eudat.data.old.Service; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.services.ServiceModel; import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -43,12 +44,12 @@ public class ServiceManager { return apiContext.getOperationsContext().getDatabaseRepository().getServiceDao().createOrUpdate(service); } - public List getServices(String query, String type) throws HugeResultSet, NoURLFound, InvalidApplicationException { + public List getServices(String query, String type) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getServices(externalUrlCriteria, type); - + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(query); + List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().get(ReferenceType.Services, externalReferenceCriteria, type); + ServiceCriteria criteria = new ServiceCriteria(); if (!query.isEmpty()) criteria.setLike(query); criteria.setCreationUserId(userScope.getUserId()); 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 978b88e00..349cdc86d 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 @@ -2,12 +2,13 @@ package eu.eudat.logic.managers; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.eudat.commons.enums.ReferenceType; import eu.eudat.data.dao.criteria.DataRepositoryCriteria; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.taxonomy.TaxonomyModel; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -26,9 +27,9 @@ public class TaxonomyManager { this.apiContext = apiContext; } - public List getTaxonomies(String query, String type) throws HugeResultSet, NoURLFound { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(query); - List> remoteRepos = this.apiContext.getOperationsContext().getRemoteFetcher().getTaxonomies(externalUrlCriteria, type); + 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); 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 d9a87905f..d9a21ce0d 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 @@ -1,13 +1,13 @@ package eu.eudat.logic.managers; import eu.eudat.commons.scope.user.UserScope; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.RemoteFetcher; @Component public class ValidationManager { @@ -22,9 +22,9 @@ public class ValidationManager { this.userScope = userScope; } - public Boolean validateIdentifier(String identifier, String type) throws NoURLFound, HugeResultSet { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(identifier); - Integer count = this.remoteFetcher.findEntries(externalUrlCriteria, type); + public Boolean validateIdentifier(String identifier, String type) throws MyNotFoundException, HugeResultSetException { + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(identifier); + Integer count = this.remoteFetcher.findEntries(externalReferenceCriteria, type); return this.userScope.isSet() && count > 0; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java b/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java index e1fd74baf..d25567f72 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/prefilling/PrefillingMapper.java @@ -10,12 +10,11 @@ import eu.eudat.data.TagEntity; import eu.eudat.logic.managers.DatasetManager; import eu.eudat.logic.managers.DatasetProfileManager; import eu.eudat.logic.managers.LicenseManager; -import eu.eudat.logic.proxy.config.entities.DefaultPrefillingMapping; -import eu.eudat.logic.proxy.config.entities.PrefillingFixedMapping; -import eu.eudat.logic.proxy.config.entities.PrefillingGet; -import eu.eudat.logic.proxy.config.entities.PrefillingMapping; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; +import eu.eudat.service.reference.external.config.entities.DefaultPrefillingMapping; +import eu.eudat.service.reference.external.config.entities.PrefillingFixedMapping; +import eu.eudat.service.reference.external.config.entities.PrefillingGet; +import eu.eudat.service.reference.external.config.entities.PrefillingMapping; +import eu.eudat.commons.exceptions.HugeResultSetException; import eu.eudat.logic.utilities.helpers.StreamDistinctBy; import eu.eudat.logic.utilities.json.JsonSearcher; import eu.eudat.commons.types.descriptiontemplate.fielddata.AutoCompleteDataEntity; @@ -23,6 +22,7 @@ import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel; import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; import eu.eudat.models.data.license.LicenseModel; +import gr.cite.tools.exception.MyNotFoundException; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -209,7 +209,7 @@ public class PrefillingMapper { properties.put(id, mapper.writeValueAsString(licenses.get(0))); } } - catch (NoURLFound | HugeResultSet e){ + catch (MyNotFoundException | HugeResultSetException e){ properties.put(id, parsedValue); } break; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/FetchStrategy.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/FetchStrategy.java deleted file mode 100644 index 8ff68051e..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/FetchStrategy.java +++ /dev/null @@ -1,8 +0,0 @@ -package eu.eudat.logic.proxy.config; - -public enum FetchStrategy { - - FIRST, - ALL - -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java index 31ee9319b..0ad4d9dc4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/ConfigLoader.java @@ -1,15 +1,14 @@ package eu.eudat.logic.proxy.config.configloaders; -import eu.eudat.logic.proxy.config.ExternalUrls; import eu.eudat.service.descriptiontemplate.Semantic; import eu.eudat.models.data.pid.PidLinks; +import eu.eudat.service.reference.external.config.ExternalUrls; import org.apache.poi.xwpf.usermodel.XWPFDocument; import java.util.List; import java.util.Map; public interface ConfigLoader { - ExternalUrls getExternalUrls(); XWPFDocument getDocument(); XWPFDocument getDatasetDocument(); PidLinks getPidLinks(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java index e8082f9ae..771c3f6f6 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/configloaders/DefaultConfigLoader.java @@ -2,8 +2,8 @@ package eu.eudat.logic.proxy.config.configloaders; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.eudat.logic.proxy.config.ExternalUrls; import eu.eudat.models.data.pid.PidLinks; +import eu.eudat.service.reference.external.config.ExternalUrls; import eu.eudat.service.storage.StorageFileService; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.slf4j.Logger; @@ -25,17 +25,14 @@ import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import java.io.*; -import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @Service("configLoader") -//@Profile("devel") public class DefaultConfigLoader implements ConfigLoader { private static final Logger logger = LoggerFactory.getLogger(DefaultConfigLoader.class); private static final ObjectMapper mapper = new ObjectMapper(); - private ExternalUrls externalUrls; private XWPFDocument document; private XWPFDocument datasetDocument; private PidLinks pidLinks; @@ -45,17 +42,6 @@ public class DefaultConfigLoader implements ConfigLoader { private StorageFileService storageFileService; - private void setExternalUrls() { - byte[] bytes = this.storageFileService.getExternalUrlsFile(); - try { - JAXBContext jaxbContext = JAXBContext.newInstance(ExternalUrls.class); - Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); - externalUrls = (ExternalUrls) jaxbUnmarshaller.unmarshal(new ByteArrayInputStream(bytes)); - } catch (Exception ex) { - logger.error("Cannot find resource", ex); - } - } - private void setDocument() { byte[] bytes = this.storageFileService.getH2020TemplateFile(); try { @@ -115,16 +101,6 @@ public class DefaultConfigLoader implements ConfigLoader { } } - - - public ExternalUrls getExternalUrls() { - if (externalUrls == null) { - externalUrls = new ExternalUrls(); - this.setExternalUrls(); - } - return externalUrls; - } - public XWPFDocument getDocument() { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GenericUrls.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GenericUrls.java deleted file mode 100644 index 6507564bb..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/entities/GenericUrls.java +++ /dev/null @@ -1,12 +0,0 @@ -package eu.eudat.logic.proxy.config.entities; - -import eu.eudat.logic.proxy.config.FetchStrategy; -import eu.eudat.logic.proxy.config.UrlConfiguration; - -import java.util.List; - -public abstract class GenericUrls { - - public abstract List getUrls(); - public abstract FetchStrategy getFetchMode(); -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/exceptions/HugeResultSet.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/exceptions/HugeResultSet.java deleted file mode 100644 index 91693a75f..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/exceptions/HugeResultSet.java +++ /dev/null @@ -1,13 +0,0 @@ -package eu.eudat.logic.proxy.config.exceptions; - -public class HugeResultSet extends Exception { - - private static final long serialVersionUID = -6961447213733280563L; - - - public HugeResultSet(String message) { - super(message); - } - - -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/exceptions/NoURLFound.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/exceptions/NoURLFound.java deleted file mode 100644 index 458f98850..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/config/exceptions/NoURLFound.java +++ /dev/null @@ -1,13 +0,0 @@ -package eu.eudat.logic.proxy.config.exceptions; - -public class NoURLFound extends Exception { - - private static final long serialVersionUID = -6961447213733280563L; - - - public NoURLFound(String message) { - super(message); - } - - -} 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 359f0ce56..be1bff74d 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 @@ -1,10 +1,10 @@ package eu.eudat.logic.services; import eu.eudat.commons.scope.user.UserScope; -import eu.eudat.logic.proxy.config.ExternalUrlCriteria; -import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; -import eu.eudat.logic.proxy.config.exceptions.NoURLFound; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.service.reference.external.criteria.ExternalReferenceCriteria; +import eu.eudat.commons.exceptions.HugeResultSetException; +import eu.eudat.service.reference.external.RemoteFetcher; +import gr.cite.tools.exception.MyNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,9 +21,9 @@ public class ExternalValidationService { this.userScope = userScope; } - public Boolean validateIdentifier(String identifier, String type) throws NoURLFound, HugeResultSet { - ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(identifier); - Integer count = this.remoteFetcher.findEntries(externalUrlCriteria, type); + public Boolean validateIdentifier(String identifier, String type) throws MyNotFoundException, HugeResultSetException { + ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(identifier); + Integer count = this.remoteFetcher.findEntries(externalReferenceCriteria, type); return userScope.isSet() && count > 0; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContext.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContext.java index 889fc9822..265694ac0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContext.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContext.java @@ -1,7 +1,7 @@ package eu.eudat.logic.services.operations; import eu.eudat.logic.builders.BuilderFactory; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.service.reference.external.RemoteFetcher; import org.springframework.context.ApplicationContext; /** diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContextImpl.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContextImpl.java index af2faa426..dced680c0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContextImpl.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/OperationsContextImpl.java @@ -1,7 +1,7 @@ package eu.eudat.logic.services.operations; import eu.eudat.logic.builders.BuilderFactory; -import eu.eudat.logic.proxy.fetching.RemoteFetcher; +import eu.eudat.service.reference.external.RemoteFetcher; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service;