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(@PathVariable("userEmail") String userEmail,
36
                                                                  @PathVariable("page") String page,
37
                                                                  @PathVariable("size") String size) throws JSONException {
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
	e.printStackTrace();
90
}
91

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