Project

General

Profile

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

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

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

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

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

    
17
    @Autowired
18
    private EmailUtils emailUtils;
19

    
20
    @Autowired
21
    private RepositoryService repositoryService;
22

    
23
    @Autowired
24
    private BrokerService brokerService;
25

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

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

    
33
        try {
34

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

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

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

    
56
                try {
57

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

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

    
66
                try {
67

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

    
74

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

    
79
                repositorySummaryInfoList.add(repositorySummaryInfo);
80
            }
81

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

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