uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/controllers/DashboardController.java

95 lines
4.2 KiB
Java
Raw Normal View History

package eu.dnetlib.repo.manager.controllers;
2019-12-16 11:54:06 +01:00
import eu.dnetlib.repo.manager.domain.*;
2022-08-03 17:08:42 +02:00
import eu.dnetlib.repo.manager.exception.BrokerException;
import eu.dnetlib.repo.manager.exception.RepositoryServiceException;
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 io.swagger.annotations.Api;
import org.json.JSONException;
import org.mitre.openid.connect.model.OIDCAuthenticationToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/dashboard")
2022-08-03 17:08:42 +02:00
@Api(description = "Dashboard API", tags = {"dashboard"})
public class DashboardController {
@Autowired
private DashboardService dashboardService;
@Autowired
private RepositoryService repositoryService;
@Autowired
private BrokerService brokerService;
@Autowired
private PiWikService piWikService;
2022-08-03 17:08:42 +02:00
@RequestMapping(value = "/getRepositoriesSummary/{page}/{size}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
2021-07-21 13:51:18 +02:00
@PreAuthorize("hasAuthority('REGISTERED_USER')")
2020-01-10 13:56:27 +01:00
public List<RepositorySummaryInfo> getRepositoriesSummaryInfo(
2022-08-03 17:08:42 +02:00
@PathVariable("page") String page,
@PathVariable("size") String size) throws JSONException {
2020-01-10 13:56:27 +01:00
return dashboardService.getRepositoriesSummaryInfo(((OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication()).getUserInfo().getEmail(), page, size);
}
2022-08-03 17:08:42 +02:00
@RequestMapping(value = "/collectionMonitorSummary/{repoId}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
2021-07-21 13:51:18 +02:00
@PreAuthorize("hasAuthority('REGISTERED_USER')")
2019-09-27 13:29:40 +02:00
public CollectionMonitorSummary getCollectionMonitorSummary(
@PathVariable("repoId") String repoId,
@RequestParam(name = "size", required = false, defaultValue = "20") int size) throws JSONException {
2019-09-27 13:29:40 +02:00
2022-08-03 17:08:42 +02:00
List<AggregationDetails> aggregationDetails = repositoryService.getRepositoryAggregations(repoId, 0, size);
2019-09-27 13:29:40 +02:00
CollectionMonitorSummary collectionMonitorSummary = new CollectionMonitorSummary();
collectionMonitorSummary.setAggregationDetails(aggregationDetails);
2022-08-03 17:08:42 +02:00
size = 0;
2019-09-27 13:29:40 +02:00
do {
2022-08-03 17:08:42 +02:00
aggregationDetails = repositoryService.getRepositoryAggregations(repoId, size, size + 50);
for (AggregationDetails aggregationDetail : aggregationDetails) {
if (aggregationDetail.getIndexedVersion()) {
2019-09-27 13:29:40 +02:00
collectionMonitorSummary.setLastIndexedVersion(aggregationDetail);
break;
}
}
2022-08-03 17:08:42 +02:00
size += 30;
} while (aggregationDetails.size() != 0 && collectionMonitorSummary.getLastIndexedVersion() == null);
2019-09-27 13:29:40 +02:00
return collectionMonitorSummary;
}
2022-08-03 17:08:42 +02:00
@RequestMapping(value = "/usageSummary/{repoId}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
2021-07-21 13:51:18 +02:00
@PreAuthorize("hasAuthority('REGISTERED_USER')")
public UsageSummary getUsageSummary(
2019-09-27 13:29:40 +02:00
@PathVariable("repoId") String repoId
) throws RepositoryServiceException {
return new UsageSummary(repositoryService.getMetricsInfoForRepository(repoId), piWikService.getPiwikSiteForRepo(repoId));
}
2022-08-03 17:08:42 +02:00
@RequestMapping(value = "/brokerSummary/{ds_name}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
2021-07-21 13:51:18 +02:00
@PreAuthorize("hasAuthority('REGISTERED_USER')")
public BrokerSummary getBrokerSummary(
@PathVariable("ds_name") String datasourceName) throws BrokerException {
2022-08-03 17:08:42 +02:00
return new BrokerSummary(brokerService.getSimpleSubscriptionsOfUser(((OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication()).getUserInfo().getEmail()), brokerService.getTopicsForDatasource(datasourceName));
}
}