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.RepositorySummaryInfo;
5
import eu.dnetlib.repo.manager.shared.AggregationDetails;
6
import eu.dnetlib.repo.manager.shared.BrokerException;
7
import eu.dnetlib.repo.manager.shared.MetricsInfo;
8
import eu.dnetlib.repo.manager.shared.RepositoryServiceException;
9
import eu.dnetlib.repo.manager.shared.broker.BrowseEntry;
10
import org.apache.log4j.Logger;
11
import org.json.JSONException;
12
import org.springframework.beans.factory.annotation.Autowired;
13
import org.springframework.stereotype.Service;
14
import org.springframework.web.bind.annotation.PathVariable;
15

    
16
import javax.xml.ws.ServiceMode;
17
import java.util.ArrayList;
18
import java.util.List;
19

    
20
@Service("dashboardService")
21
public class DashboardServiceImpl implements DashboardService {
22

    
23
    private static final Logger logger = Logger.getLogger(DashboardServiceImpl.class);
24

    
25
    @Autowired
26
    private EmailUtils emailUtils;
27

    
28
    @Autowired
29
    private RepositoryService repositoryService;
30

    
31
    @Autowired
32
    private BrokerService brokerService;
33

    
34
    @Override
35
    public List<RepositorySummaryInfo> getRepositoriesSummaryInfo(String userEmail,
36
                                                                  String page,
37
                                                                  String size){
38

    
39
        List<RepositorySummaryInfo> repositorySummaryInfoList = new ArrayList<>();
40

    
41
        try {
42

    
43
                List<Repository> repositoriesOfUser = repositoryService.getRepositoriesOfUser(userEmail, page, size);
44
                for(Repository repository: repositoriesOfUser) {
45

    
46
                    RepositorySummaryInfo repositorySummaryInfo = new RepositorySummaryInfo();
47
                    repositorySummaryInfo.setId(repository.getId());
48
                    repositorySummaryInfo.setRepositoryName(repository.getOfficialName());
49
                    repositorySummaryInfo.setLogoURL(repository.getLogoUrl());
50

    
51
                    //TODO getRepositoryAggregations returns only the 20 more recent items. Is it positive that we will find an indexed version there?
52
                    List<AggregationDetails> aggregationDetailsList = repositoryService.getRepositoryAggregations(repository.getId());
53
                    for(AggregationDetails aggregationDetails: aggregationDetailsList) {
54
                        if(aggregationDetails.getIndexedVersion()) {
55
                            repositorySummaryInfo.setRecordsCollected(aggregationDetails.getNumberOfRecords());
56
                            repositorySummaryInfo.setLastIndexedVersion(aggregationDetails.getDate());
57
                            break;
58
                        }
59
                    }
60

    
61
                    try {
62

    
63
                        MetricsInfo metricsInfo = repositoryService.getMetricsInfoForRepository(repository.getId());
64
                        repositorySummaryInfo.setTotalDownloads(metricsInfo.getMetricsNumbers().getTotalDownloads());
65
                        repositorySummaryInfo.setTotalViews(metricsInfo.getMetricsNumbers().getTotalViews());
66

    
67
                    } catch (RepositoryServiceException e) {
68
                        logger.error("Exception getting metrics info for repository: " + repository.getId(), e);
69
                    }
70

    
71
                    try {
72

    
73
                        List<BrowseEntry> events = brokerService.getTopicsForDatasource(repository.getOfficialName());
74
                        Long totalEvents = 0L;
75
                        for(BrowseEntry browseEntry: events)
76
                            totalEvents += browseEntry.getSize();
77
                        repositorySummaryInfo.setEnrichmentEvents(totalEvents);
78

    
79

    
80
                    } catch (BrokerException e) {
81
                        logger.error("Exception getting broker events for repository: " + repository.getId(), e);
82
                    }
83

    
84
                    repositorySummaryInfoList.add(repositorySummaryInfo);
85
                }
86

    
87
        } catch (Exception e) {
88
            logger.error("Something baad happened!", e);
89
        }
90

    
91
        return repositorySummaryInfoList;
92
    }
93
}
(4-4/20)