Project

General

Profile

1
package eu.dnetlib.usagestats.services;
2

    
3
import eu.dnetlib.usagestats.portal.TotalStats;
4
import eu.dnetlib.usagestats.portal.UsageStats;
5
import eu.dnetlib.usagestats.repositories.UsageStatsRepository;
6
import org.springframework.stereotype.Service;
7

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

    
11
@Service
12
public class UsageStatsServiceImpl implements UsageStatsService{
13

    
14
    private final UsageStatsRepository usageStatsRepository;
15

    
16
    public UsageStatsServiceImpl(UsageStatsRepository usageStatsRepository) {
17
        this.usageStatsRepository = usageStatsRepository;
18
    }
19

    
20
    @Override
21
    public UsageStats getDatasourceClicks(String id) {
22
        String query = "SELECT 'views', sum(s.count), sum(s.openaire) FROM views_stats s where s.repository_id=? " +
23
                "UNION ALL SELECT 'downloads', sum(s.count), sum(s.openaire) FROM downloads_stats s where s.repository_id=? " +
24
                "UNION ALL SELECT 'pageviews', sum(s.count), '0' FROM pageviews_stats s, result_datasources rd where rd.id=s.result_id and rd.datasource=? ";
25

    
26
        List<String> values = new ArrayList<>();
27
        values.add(id);
28
        values.add(id);
29
        values.add(id);
30

    
31
        return usageStatsRepository.executeUsageStats(query, values, "datasource");
32
    }
33

    
34
    /*
35
    @Override
36
    public UsageStats getOrganizationClicks(String organizationId) {
37

    
38
        String query = "select sum(number_of_views) from organization_stats where id=?";
39

    
40
        List<String> values = new ArrayList<>();
41
        values.add(organizationId);
42

    
43
        return usageStatsRepository.executeUsageStats(query, values, "organization");
44

    
45
    }
46
    */
47

    
48
    @Override
49
    public UsageStats getProjectClicks(String projectId) {
50
        String query = "SELECT 'views', sum(s.count), sum(s.openaire) FROM views_stats s, project_results pr where pr.result=s.result_id and pr.id=? " +
51
                "UNION ALL SELECT 'downloads', sum(s.count), sum(s.openaire) FROM downloads_stats s, project_results pr where pr.result=s.result_id and pr.id=? " +
52
                "UNION ALL SELECT 'pageviews', sum(s.count), '0' FROM pageviews_stats s, project_results pr where pr.result=s.result_id and pr.id=?;";
53

    
54
        List<String> values = new ArrayList<>();
55
        values.add(projectId);
56
        values.add(projectId);
57
        values.add(projectId);
58

    
59
        return usageStatsRepository.executeUsageStats(query, values, "project");
60
    }
61

    
62
    @Override
63
    public UsageStats getResultClicks(String id) {
64
        String query = "SELECT 'views', s.repository_id, CASE WHEN s.source='OpenAIRE' THEN d.name ELSE d.name ||' - '|| s.source END, sum(count), sum(openaire) FROM views_stats s, datasource d WHERE s.repository_id=d.id AND s.result_id=? GROUP BY s.source, s.repository_id, d.name " +
65
                "UNION ALL SELECT 'downloads', s.repository_id, CASE WHEN s.source='OpenAIRE' THEN d.name ELSE d.name ||' - '|| s.source END, sum(count), sum(s.openaire) FROM downloads_stats s, datasource d WHERE s.repository_id=d.id AND s.result_id=? GROUP BY s.source, s.repository_id, d.name " +
66
                "UNION ALL SELECT 'pageviews', 'OpenAIRE id', 'OpenAIRE', sum(count), '0' FROM pageviews_stats s WHERE result_id=?;";
67

    
68
        List<String> values = new ArrayList<>();
69
        values.add(id);
70
        values.add(id);
71
        values.add(id);
72

    
73
        return usageStatsRepository.executeUsageStats(query, values, "result");
74
    }
75

    
76
    @Override
77
    public TotalStats getTotalStats() {
78
        return usageStatsRepository.executeTotalStats();
79
    }
80
}
(4-4/4)