Project

General

Profile

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

    
3
import eu.dnetlib.domain.data.Repository;
4
import eu.dnetlib.repo.manager.domain.*;
5
import eu.dnetlib.repo.manager.domain.broker.BrowseEntry;
6
import org.apache.log4j.Logger;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Service;
9

    
10
import java.util.ArrayList;
11
import java.util.List;
12

    
13
@Service("dashboardService")
14
public class DashboardServiceImpl implements DashboardService {
15

    
16
    private static final Logger logger = Logger.getLogger(DashboardServiceImpl.class);
17

    
18
    @Autowired
19
    private EmailUtils emailUtils;
20

    
21
    @Autowired
22
    private RepositoryService repositoryService;
23

    
24
    @Autowired
25
    private BrokerService brokerService;
26

    
27
    @Override
28
    public List<RepositorySummaryInfo> getRepositoriesSummaryInfo(String userEmail,
29
                                                                  String page,
30
                                                                  String size){
31

    
32
        List<RepositorySummaryInfo> repositorySummaryInfoList = new ArrayList<>();
33

    
34
        try {
35

    
36
                List<Repository> repositoriesOfUser = repositoryService.getRepositoriesOfUser(userEmail, page, size);
37
                for(Repository repository: repositoriesOfUser) {
38
                    RepositorySummaryInfo repositorySummaryInfo = new RepositorySummaryInfo();
39
                    repositorySummaryInfo.setId(repository.getId());
40
                    repositorySummaryInfo.setRepositoryName(repository.getOfficialName());
41
                    repositorySummaryInfo.setLogoURL(repository.getLogoUrl());
42

    
43
                    //TODO getRepositoryAggregations returns only the 20 more recent items. Is it positive that we will find an indexed version there?
44
                    long start = System.currentTimeMillis();
45
                    List<AggregationDetails> aggregationDetailsList = repositoryService.getRepositoryAggregations(repository.getId(),0,20);
46
                    for(AggregationDetails aggregationDetails: aggregationDetailsList) {
47
                        if(aggregationDetails.getIndexedVersion()) {
48
                            repositorySummaryInfo.setRecordsCollected(aggregationDetails.getNumberOfRecords());
49
                            repositorySummaryInfo.setLastIndexedVersion(aggregationDetails.getDate());
50
                            break;
51
                        }
52
                    }
53
                    long end = System.currentTimeMillis();
54

    
55
                    System.out.println("Got repo aggregations in "+ (end-start)+"ms");
56

    
57
                    try {
58

    
59
                        MetricsInfo metricsInfo = repositoryService.getMetricsInfoForRepository(repository.getId());
60
                        repositorySummaryInfo.setTotalDownloads(metricsInfo.getMetricsNumbers().getTotalDownloads());
61
                        repositorySummaryInfo.setTotalViews(metricsInfo.getMetricsNumbers().getTotalViews());
62

    
63
                    } catch (RepositoryServiceException e) {
64
                        logger.error("Exception getting metrics info for repository: " + repository.getId(), e);
65
                    }
66

    
67
                    try {
68

    
69
                        List<BrowseEntry> events = brokerService.getTopicsForDatasource(repository.getOfficialName());
70
                        Long totalEvents = 0L;
71
                        for(BrowseEntry browseEntry: events)
72
                            totalEvents += browseEntry.getSize();
73
                        repositorySummaryInfo.setEnrichmentEvents(totalEvents);
74

    
75

    
76
                    } catch (BrokerException e) {
77
                        logger.error("Exception getting broker events for repository: " + repository.getId(), e);
78
                    }
79

    
80
                    repositorySummaryInfoList.add(repositorySummaryInfo);
81
                }
82

    
83
        } catch (Exception e) {
84
            logger.error("Something baad happened!", e);
85
        }
86

    
87
        return repositorySummaryInfoList;
88
    }
89
}
(4-4/20)