From 9e4817f2bd7718dd9a8f5a24429ba82093d5ee9a Mon Sep 17 00:00:00 2001 From: Konstantinos Spyrou Date: Mon, 23 Jan 2023 18:26:19 +0200 Subject: [PATCH] refactoring --- .../manager/service/RepositoryService.java | 27 ++++---- .../service/RepositoryServiceImpl.java | 65 +++++++++---------- 2 files changed, 42 insertions(+), 50 deletions(-) diff --git a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java index 2de462f..b3bf3e3 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java @@ -1,13 +1,12 @@ package eu.dnetlib.repo.manager.service; -import com.fasterxml.jackson.core.JsonProcessingException; +import eu.dnetlib.api.functionality.ValidatorServiceException; import eu.dnetlib.repo.manager.domain.*; import eu.dnetlib.repo.manager.exception.RepositoryServiceException; import eu.dnetlib.repo.manager.exception.ResourceNotFoundException; import org.json.JSONException; import org.springframework.security.core.Authentication; -import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,27 +16,25 @@ public interface RepositoryService { // TODO: move this elsewhere Country[] getCountries(); - List getRepositories(List ids) throws JSONException; + List getRepositories(List ids); - List getRepositories(List ids, int page, int size) throws JSONException; + List getRepositories(List ids, int page, int size); List getRepositoriesSnippets(List ids) throws Exception; List getRepositoriesSnippets(List ids, int page, int size) throws Exception; - List getRepositoriesByCountry(String country, String mode, Boolean managed) throws JSONException, IOException; + List getRepositoriesByCountry(String country, String mode, Boolean managed); // TODO: remove? - List getRepositoriesOfUser(String page, String size) throws JSONException, IOException; + List getRepositoriesOfUser(String page, String size); // TODO: remove? - List getRepositoriesOfUser(String userEmail, - String page, - String size) throws JSONException, IOException; + List getRepositoriesOfUser(String userEmail, String page, String size); - List getRepositoriesSnippetsOfUser(String page, String size) throws Exception; + List getRepositoriesSnippetsOfUser(String page, String size); - List getRepositoriesSnippetsOfUser(String userEmail, String page, String size) throws Exception; + List getRepositoriesSnippetsOfUser(String userEmail, String page, String size); RepositorySnippet getRepositorySnippetById(String id) throws JSONException, ResourceNotFoundException; @@ -71,11 +68,9 @@ public interface RepositoryService { List getTimezones(); - Repository updateRepository(Repository repository, Authentication authentication) throws Exception; + Repository updateRepository(Repository repository, Authentication authentication); - List getUrlsOfUserRepos(String user_email, - String page, - String size); + List getUrlsOfUserRepos(String userEmail, String page, String size); Map getCompatibilityClasses(String mode); @@ -87,7 +82,7 @@ public interface RepositoryService { Map getListLatestUpdate(String mode); - RepositoryInterface updateRepositoryInterface(String repoId, String comment, RepositoryInterface repositoryInterface, String desiredCompatibilityLevel) throws Exception; + RepositoryInterface updateRepositoryInterface(String repoId, String comment, RepositoryInterface repositoryInterface, String desiredCompatibilityLevel) throws ResourceNotFoundException, ValidatorServiceException; void updateInterfaceCompliance(String repositoryId, String repositoryInterfaceId, String compliance); } diff --git a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java index 7e582c6..b0b828d 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java @@ -13,14 +13,12 @@ import eu.dnetlib.repo.manager.domain.dto.User; import eu.dnetlib.repo.manager.exception.RepositoryServiceException; import eu.dnetlib.repo.manager.exception.ResourceNotFoundException; import eu.dnetlib.repo.manager.service.aai.registry.AaiRegistryService; -import eu.dnetlib.repo.manager.service.security.AuthoritiesUpdater; import eu.dnetlib.repo.manager.service.security.AuthorizationService; import eu.dnetlib.repo.manager.service.security.RoleMappingService; import eu.dnetlib.repo.manager.utils.Converter; import eu.dnetlib.repo.manager.utils.DateUtils; import gr.uoa.di.driver.enabling.vocabulary.VocabularyLoader; import org.apache.commons.codec.digest.DigestUtils; -import org.json.JSONException; import org.mitre.openid.connect.model.OIDCAuthenticationToken; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +36,6 @@ import org.springframework.web.util.UriComponents; import org.springframework.web.util.UriComponentsBuilder; import javax.annotation.PostConstruct; -import java.io.IOException; import java.sql.Timestamp; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -51,7 +48,6 @@ public class RepositoryServiceImpl implements RepositoryService { private final AuthorizationService authorizationService; private final RoleMappingService roleMappingService; private final AaiRegistryService registryCalls; - private final AuthoritiesUpdater authoritiesUpdater; private final RestTemplate restTemplate; private final ObjectMapper objectMapper; private final VocabularyLoader vocabularyLoader; @@ -86,11 +82,9 @@ public class RepositoryServiceImpl implements RepositoryService { public RepositoryServiceImpl(AuthorizationService authorizationService, RoleMappingService roleMappingService, AaiRegistryService registryCalls, - AuthoritiesUpdater authoritiesUpdater, VocabularyLoader vocabularyLoader, RestTemplate restTemplate, ObjectMapper objectMapper, -// Converter converter, @Lazy EmailUtils emailUtils, @Lazy ValidatorService validatorService, @Lazy PiWikService piWikService, @@ -98,7 +92,6 @@ public class RepositoryServiceImpl implements RepositoryService { this.authorizationService = authorizationService; this.roleMappingService = roleMappingService; this.registryCalls = registryCalls; - this.authoritiesUpdater = authoritiesUpdater; this.vocabularyLoader = vocabularyLoader; this.piWikService = piWikService; this.emailUtils = emailUtils; @@ -134,7 +127,7 @@ public class RepositoryServiceImpl implements RepositoryService { } httpHeaders = new HttpHeaders(); - httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); for (String vocName : vocabularyNames) { vocabularyMap.put(vocName, vocabularyLoader.getVocabulary(vocName, Locale.ENGLISH, Locale.ROOT)); @@ -159,7 +152,7 @@ public class RepositoryServiceImpl implements RepositoryService { // and the "requestFilter.setId(repoId)" should return only one result at a time, thus, // another way for paging must be implemented. @Override - public List getRepositories(List ids) throws JSONException { + public List getRepositories(List ids) { return getRepositories(ids, 0, 10); } @@ -188,7 +181,7 @@ public class RepositoryServiceImpl implements RepositoryService { // and the "requestFilter.setId(repoId)" should return only one result at a time, thus, // another way for paging must be implemented. @Override - public List getRepositoriesSnippets(List ids) throws Exception { + public List getRepositoriesSnippets(List ids) { return getRepositoriesSnippets(ids, 0, 10); } @@ -196,8 +189,8 @@ public class RepositoryServiceImpl implements RepositoryService { // and the "requestFilter.setId(repoId)" should return only one result at a time, thus, // another way for paging must be implemented. @Override - public List getRepositoriesSnippets(List ids, int page, int size) throws Exception { - List resultSet; + public List getRepositoriesSnippets(List ids, int page, int size) { + List resultSet = null; List datasourceDetailsList = new ArrayList<>(); // here page should be 0 @@ -215,15 +208,19 @@ public class RepositoryServiceImpl implements RepositoryService { } } - resultSet = objectMapper.readValue(objectMapper.writeValueAsString(datasourceDetailsList), - objectMapper.getTypeFactory().constructCollectionType(List.class, RepositorySnippet.class)); - - if (logger.isDebugEnabled()) { - logger.debug("resultSet: {}", objectMapper.writeValueAsString(resultSet)); + try { + resultSet = objectMapper.readValue(objectMapper.writeValueAsString(datasourceDetailsList), + objectMapper.getTypeFactory().constructCollectionType(List.class, RepositorySnippet.class)); + if (logger.isDebugEnabled()) { + logger.debug("resultSet: {}", objectMapper.writeValueAsString(resultSet)); + } + resultSet.parallelStream().forEach(repositorySnippet -> { + repositorySnippet.setPiwikInfo(piWikService.getPiwikSiteForRepo(repositorySnippet.getId())); + }); + } catch (JsonProcessingException e) { + logger.error("Error deserializing.", e); } - resultSet.parallelStream().forEach(repositorySnippet -> { - repositorySnippet.setPiwikInfo(piWikService.getPiwikSiteForRepo(repositorySnippet.getId())); - }); + return resultSet; } @@ -231,7 +228,7 @@ public class RepositoryServiceImpl implements RepositoryService { @Override public List getRepositoriesByCountry(String country, String mode, - Boolean managed) throws IOException { + Boolean managed) { logger.debug("Getting repositories by country!"); int page = 0; int size = 100; @@ -254,7 +251,7 @@ public class RepositoryServiceImpl implements RepositoryService { } public List searchRegisteredRepositories(String country, String typology, String englishName, - String officialName, String requestSortBy, String order, int page, int pageSize) throws Exception { + String officialName, String requestSortBy, String order, int page, int pageSize) { logger.debug("Searching registered repositories"); @@ -287,7 +284,7 @@ public class RepositoryServiceImpl implements RepositoryService { } @Override - public List getRepositoriesOfUser(String page, String size) throws JSONException { + public List getRepositoriesOfUser(String page, String size) { logger.debug("Retrieving repositories of authenticated user : {}", ((OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication()).getUserInfo().getEmail()); Collection repoIds = roleMappingService.getRepoIdsByRoleIds(authorizationService.getUserRoles()); @@ -295,19 +292,19 @@ public class RepositoryServiceImpl implements RepositoryService { } @Override - public List getRepositoriesOfUser(String userEmail, String page, String size) throws JSONException { + public List getRepositoriesOfUser(String userEmail, String page, String size) { logger.debug("Retrieving repositories of authenticated user : {}", userEmail); Collection repoIds = roleMappingService.getRepoIdsByRoleIds(authorizationService.getUserRolesByEmail(userEmail)); return getRepositories(new ArrayList<>(repoIds)); } @Override - public List getRepositoriesSnippetsOfUser(String page, String size) throws Exception { + public List getRepositoriesSnippetsOfUser(String page, String size) { return getRepositoriesSnippetsOfUser(null, page, size); } @Override - public List getRepositoriesSnippetsOfUser(String userEmail, String page, String size) throws Exception { + public List getRepositoriesSnippetsOfUser(String userEmail, String page, String size) { int from = Integer.parseInt(page) * Integer.parseInt(size); int to = from + Integer.parseInt(size); List repoIds = new ArrayList<>(); @@ -361,7 +358,7 @@ public class RepositoryServiceImpl implements RepositoryService { @Override public List getRepositoriesByName(String name, String page, - String size) throws JSONException { + String size) { logger.debug("Retrieving repositories with official name : {}", name); UriComponents uriComponents = searchDatasourceUri("0", "100"); @@ -400,7 +397,7 @@ public class RepositoryServiceImpl implements RepositoryService { } @Override - public Repository addRepository(String datatype, Repository repository) throws Exception { + public Repository addRepository(String datatype, Repository repository) { logger.debug("storing '{}' repository with id: {}", datatype, repository.getId()); @@ -459,7 +456,7 @@ public class RepositoryServiceImpl implements RepositoryService { } @Override - public Repository updateRepository(Repository repository, Authentication authentication) throws Exception { + public Repository updateRepository(Repository repository, Authentication authentication) { UriComponents uriComponents = UriComponentsBuilder .fromHttpUrl(baseAddress + "/ds/update/") .build() @@ -480,7 +477,7 @@ public class RepositoryServiceImpl implements RepositoryService { return repository; } - private void storeRepository(Repository repository, Authentication authentication) throws Exception { + private void storeRepository(Repository repository, Authentication authentication) { Date utilDate = new Date(); Timestamp date = new Timestamp(utilDate.getTime()); @@ -554,7 +551,7 @@ public class RepositoryServiceImpl implements RepositoryService { public RepositoryInterface updateRepositoryInterface(String repoId, String comment, RepositoryInterface repositoryInterface, - String desiredCompatibilityLevel) throws Exception { + String desiredCompatibilityLevel) throws ResourceNotFoundException, ValidatorServiceException { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Repository repository = this.getRepositoryById(repoId); if (repositoryInterface.getId() != null) { @@ -694,7 +691,7 @@ public class RepositoryServiceImpl implements RepositoryService { public Map getCompatibilityClasses(String mode) { logger.debug("Getting compatibility classes for mode: {}", mode); - Map retMap = new HashMap(); + Map retMap = new HashMap<>(); Map compatibilityClasses = this.getVocabulary("dnet:compatibilityLevel").getAsMap(); boolean foundData = false; @@ -729,7 +726,7 @@ public class RepositoryServiceImpl implements RepositoryService { logger.debug("Getting datasource classes for mode: {}", mode); - Map retMap = new HashMap(); + Map retMap = new HashMap<>(); // TODO: refactor (remove?) for (Map.Entry entry : this.getVocabulary("dnet:datasource_typologies").getAsMap().entrySet()) { @@ -823,7 +820,7 @@ public class RepositoryServiceImpl implements RepositoryService { return Collections.singletonMap("lastCollectionDate", DateUtils.toString(getRepositoryInterface("openaire____::" + mode).get(0).getLastCollectionDate())); } - private void updateValidationSet(String repositoryId, String repositoryInterfaceId, String validationSet) throws Exception { + private void updateValidationSet(String repositoryId, String repositoryInterfaceId, String validationSet) { UriComponents uriComponents = UriComponentsBuilder .fromHttpUrl(baseAddress + "/ds/api/oaiset") .queryParam("dsId", repositoryId)