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
|
}
|