Project

General

Profile

1
package eu.dnetlib.repo.manager.controllers;
2

    
3
import eu.dnetlib.repo.manager.domain.*;
4
import eu.dnetlib.repo.manager.service.BrokerService;
5
import eu.dnetlib.repo.manager.service.DashboardService;
6
import eu.dnetlib.repo.manager.service.PiWikService;
7
import eu.dnetlib.repo.manager.service.RepositoryService;
8
import io.swagger.annotations.Api;
9
import org.json.JSONException;
10
import org.mitre.openid.connect.model.OIDCAuthenticationToken;
11
import org.springframework.beans.factory.annotation.Autowired;
12
import org.springframework.http.MediaType;
13
import org.springframework.security.access.prepost.PreAuthorize;
14
import org.springframework.security.core.context.SecurityContextHolder;
15
import org.springframework.web.bind.annotation.*;
16

    
17
import java.util.List;
18

    
19
@RestController
20
@RequestMapping(value = "/dashboard")
21
@Api(description = "Dashboard API",  tags = {"dashboard"})
22
public class DashboardController {
23

    
24
    @Autowired
25
    private DashboardService dashboardService;
26

    
27
    @Autowired
28
    private RepositoryService repositoryService;
29

    
30
    @Autowired
31
    private BrokerService brokerService;
32

    
33
    @Autowired
34
    private PiWikService piWikService;
35

    
36
    @RequestMapping(value = "/getRepositoriesSummary/{userEmail}/{page}/{size}" , method = RequestMethod.GET,
37
            produces = MediaType.APPLICATION_JSON_VALUE)
38
    @ResponseBody
39
    @PreAuthorize("hasRole('ROLE_USER')")
40
    public List<RepositorySummaryInfo> getRepositoriesSummaryInfo(@PathVariable("userEmail") String userEmail,
41
                                                                  @PathVariable("page") String page,
42
                                                                  @PathVariable("size") String size) throws JSONException {
43
        userEmail = ((OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication()).getUserInfo().getEmail();
44
        return dashboardService.getRepositoriesSummaryInfo(userEmail, page, size);
45
    }
46

    
47
    @RequestMapping(value = "/collectionMonitorSummary/{repoId}" , method = RequestMethod.GET,
48
            produces = MediaType.APPLICATION_JSON_VALUE)
49
    @ResponseBody
50
    @PreAuthorize("hasRole('ROLE_USER')")
51
    public CollectionMonitorSummary getCollectionMonitorSummary(
52
            @PathVariable("repoId") String repoId,
53
            @RequestParam(name = "size", required = false, defaultValue = "20") int size) throws JSONException {
54

    
55
        List<AggregationDetails> aggregationDetails = repositoryService.getRepositoryAggregations(repoId,0,size);
56
        CollectionMonitorSummary collectionMonitorSummary = new CollectionMonitorSummary();
57
        collectionMonitorSummary.setAggregationDetails(aggregationDetails);
58
        size=0;
59
        do {
60
            aggregationDetails = repositoryService.getRepositoryAggregations(repoId,size,size+50);
61
            for(AggregationDetails aggregationDetail : aggregationDetails){
62
                if(aggregationDetail.getIndexedVersion()){
63
                    collectionMonitorSummary.setLastIndexedVersion(aggregationDetail);
64
                    break;
65
                }
66
            }
67
            size+=30;
68
        }while (aggregationDetails.size() != 0 && collectionMonitorSummary.getLastIndexedVersion()==null);
69

    
70
        return collectionMonitorSummary;
71
    }
72

    
73
    @RequestMapping(value = "/usageSummary/{repoId}" , method = RequestMethod.GET,
74
            produces = MediaType.APPLICATION_JSON_VALUE)
75
    @ResponseBody
76
    @PreAuthorize("hasRole('ROLE_USER')")
77
    public UsageSummary getUsageSummary(
78
            @PathVariable("repoId") String repoId
79
    ) throws RepositoryServiceException {
80
        return new UsageSummary(repositoryService.getMetricsInfoForRepository(repoId), piWikService.getPiwikSiteForRepo(repoId));
81
    }
82

    
83
    @RequestMapping(value = "/brokerSummary/{email}/{ds_name}" , method = RequestMethod.GET,
84
            produces = MediaType.APPLICATION_JSON_VALUE)
85
    @ResponseBody
86
    @PreAuthorize("hasRole('ROLE_USER')")
87
    public BrokerSummary getBrokerSummary(
88
            @PathVariable("email") String email,
89
            @PathVariable("ds_name") String datasourceName) throws BrokerException {
90
        email = ((OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication()).getUserInfo().getEmail();
91
        return new BrokerSummary(brokerService.getSimpleSubscriptionsOfUser(email), brokerService.getTopicsForDatasource(datasourceName));
92
    }
93

    
94

    
95

    
96

    
97
}
(2-2/11)