From 8f1e214a6be6a36052aad8e2eb1090a4d91df626 Mon Sep 17 00:00:00 2001 From: "ioannis.diplas" Date: Thu, 26 Sep 2019 11:09:24 +0000 Subject: [PATCH] Implementing summaries for collection, usage and broker --- .../controllers/DashboardController.java | 47 +++++++++++++++++++ .../controllers/RepositoryController.java | 2 +- .../repo/manager/domain/BrokerSummary.java | 36 ++++++++++++++ .../manager/service/DashboardServiceImpl.java | 2 +- .../repo/manager/service/EmailUtilsImpl.java | 2 +- .../manager/service/RepositoryService.java | 2 +- .../service/RepositoryServiceImpl.java | 4 +- 7 files changed, 89 insertions(+), 6 deletions(-) create mode 100644 src/main/java/eu/dnetlib/repo/manager/domain/BrokerSummary.java diff --git a/src/main/java/eu/dnetlib/repo/manager/controllers/DashboardController.java b/src/main/java/eu/dnetlib/repo/manager/controllers/DashboardController.java index 00e1beb..dab397b 100644 --- a/src/main/java/eu/dnetlib/repo/manager/controllers/DashboardController.java +++ b/src/main/java/eu/dnetlib/repo/manager/controllers/DashboardController.java @@ -1,7 +1,15 @@ package eu.dnetlib.repo.manager.controllers; +import eu.dnetlib.repo.manager.domain.BrokerSummary; import eu.dnetlib.repo.manager.domain.RepositorySummaryInfo; +import eu.dnetlib.repo.manager.service.BrokerService; import eu.dnetlib.repo.manager.service.DashboardService; +import eu.dnetlib.repo.manager.service.PiWikService; +import eu.dnetlib.repo.manager.service.RepositoryService; +import eu.dnetlib.repo.manager.shared.AggregationDetails; +import eu.dnetlib.repo.manager.shared.BrokerException; +import eu.dnetlib.repo.manager.shared.MetricsInfo; +import eu.dnetlib.repo.manager.shared.RepositoryServiceException; import io.swagger.annotations.Api; import org.json.JSONException; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +27,12 @@ public class DashboardController { @Autowired private DashboardService dashboardService; + @Autowired + private RepositoryService repositoryService; + + @Autowired + private BrokerService brokerService; + @RequestMapping(value = "/getRepositoriesSummary/{userEmail}/{page}/{size}" , method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody @@ -28,4 +42,37 @@ public class DashboardController { @PathVariable("size") String size) throws JSONException { return dashboardService.getRepositoriesSummaryInfo(userEmail, page, size); } + + @RequestMapping(value = "/collectionMonitorSummary/{repoId}" , method = RequestMethod.GET, + produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + @PreAuthorize("hasRole('ROLE_USER')") + public List getCollectionMonitorSummary( + @PathVariable("repoId") String repoId, + @RequestParam(name = "size", required = false, defaultValue = "20") int size) throws JSONException { + return repositoryService.getRepositoryAggregations(repoId,size); + } + + @RequestMapping(value = "/usageSummary/{repoId}" , method = RequestMethod.GET, + produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + @PreAuthorize("hasRole('ROLE_USER')") + public MetricsInfo getUsageSummary( + @PathVariable("repoId") String repoId) throws RepositoryServiceException { + return repositoryService.getMetricsInfoForRepository(repoId); + } + + @RequestMapping(value = "/brokerSummary/{email}/{ds_name}" , method = RequestMethod.GET, + produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + @PreAuthorize("hasRole('ROLE_USER')") + public BrokerSummary getBrokerSummary( + @PathVariable("email") String email, + @PathVariable("ds_name") String datasourceName) throws BrokerException { + return new BrokerSummary(brokerService.getSimpleSubscriptionsOfUser(email), brokerService.getTopicsForDatasource(datasourceName)); + } + + + + } diff --git a/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java b/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java index a1238e9..41568f0 100644 --- a/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java +++ b/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java @@ -80,7 +80,7 @@ public class RepositoryController { produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public List getRepositoryAggregations(@PathVariable("id") String id) throws JSONException { - return repositoryService.getRepositoryAggregations(id); + return repositoryService.getRepositoryAggregations(id,20); } @RequestMapping(value = "/getRepositoryAggregationsByYear/{id}", method = RequestMethod.GET, diff --git a/src/main/java/eu/dnetlib/repo/manager/domain/BrokerSummary.java b/src/main/java/eu/dnetlib/repo/manager/domain/BrokerSummary.java new file mode 100644 index 0000000..17355ae --- /dev/null +++ b/src/main/java/eu/dnetlib/repo/manager/domain/BrokerSummary.java @@ -0,0 +1,36 @@ +package eu.dnetlib.repo.manager.domain; + +import eu.dnetlib.repo.manager.shared.broker.BrowseEntry; +import eu.dnetlib.repo.manager.shared.broker.SimpleSubscriptionDesc; + +import java.util.List; +import java.util.Map; + +public class BrokerSummary { + private Map> userSubs; + + private List topicsForDatasource; + + public BrokerSummary(){} + + public BrokerSummary(Map> userSubs, List topicsForDatasource) { + this.userSubs = userSubs; + this.topicsForDatasource = topicsForDatasource; + } + + public Map> getUserSubs() { + return userSubs; + } + + public void setUserSubs(Map> userSubs) { + this.userSubs = userSubs; + } + + public List getTopicsForDatasource() { + return topicsForDatasource; + } + + public void setTopicsForDatasource(List topicsForDatasource) { + this.topicsForDatasource = topicsForDatasource; + } +} diff --git a/src/main/java/eu/dnetlib/repo/manager/service/DashboardServiceImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/DashboardServiceImpl.java index a347367..07cdf14 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/DashboardServiceImpl.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/DashboardServiceImpl.java @@ -49,7 +49,7 @@ public class DashboardServiceImpl implements DashboardService { repositorySummaryInfo.setLogoURL(repository.getLogoUrl()); //TODO getRepositoryAggregations returns only the 20 more recent items. Is it positive that we will find an indexed version there? - List aggregationDetailsList = repositoryService.getRepositoryAggregations(repository.getId()); + List aggregationDetailsList = repositoryService.getRepositoryAggregations(repository.getId(),20); for(AggregationDetails aggregationDetails: aggregationDetailsList) { if(aggregationDetails.getIndexedVersion()) { repositorySummaryInfo.setRecordsCollected(aggregationDetails.getNumberOfRecords()); diff --git a/src/main/java/eu/dnetlib/repo/manager/service/EmailUtilsImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/EmailUtilsImpl.java index a72f4f8..fe3339d 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/EmailUtilsImpl.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/EmailUtilsImpl.java @@ -238,7 +238,7 @@ public class EmailUtilsImpl implements EmailUtils { repository.getDatasourceType() + "[" + repository.getEnglishName() + "]"; // String message = "Dear " + ((OIDCAuthenticationToken) authentication).getUserInfo().getName() + ",\n" + - String message = "Dear user,\n" + + String message = "Dear "+SecurityContextHolder.getContext().getAuthentication().getName()+",\n" + "\n" + "We received a request to register the " + repository.getDatasourceType() + "[" + repository.getEnglishName() + "]" + " to the OpenAIRE compliant list of content providers. " + 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 fb2ab36..ee3c107 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java @@ -25,7 +25,7 @@ public interface RepositoryService { Repository getRepositoryById(String id) throws JSONException, ResourceNotFoundException; - List getRepositoryAggregations(String id) throws JSONException; + List getRepositoryAggregations(String id, int size) throws JSONException; Map> getRepositoryAggregationsByYear(String id) throws JSONException; 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 97b6237..e62aa77 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java @@ -290,7 +290,7 @@ public class RepositoryServiceImpl implements RepositoryService { @Override - public List getRepositoryAggregations(String id) throws JSONException { + public List getRepositoryAggregations(String id, int size) throws JSONException { LOGGER.debug("Retreiving aggregations for repository with id : " + id ); UriComponents uriComponents = searchDatasource("0","100"); @@ -308,7 +308,7 @@ public class RepositoryServiceImpl implements RepositoryService { aggregationHistory.addAll(Converter.getAggregationHistoryFromJson(repository.getJSONArray("datasourceInfo").getJSONObject(0))); return aggregationHistory.size() == 0? aggregationHistory : aggregationHistory.stream() .sorted(Comparator.comparing(AggregationDetails::getDate).reversed()) - .limit(20) + .limit(size) .collect(Collectors.toList()); } catch (JSONException e) { LOGGER.debug("Exception on getRepositoryAggregations" , e);