git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-dashboard-harvester-se-plugin@179285 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
372605d175
commit
7c58db8e8b
|
@ -135,8 +135,7 @@ public class VREAccessesHarvester extends BasicHarvester {
|
||||||
|
|
||||||
AnalyticsReportCredentials credentialsFromD4S = getAuthorisedApplicationInfoFromIs();
|
AnalyticsReportCredentials credentialsFromD4S = getAuthorisedApplicationInfoFromIs();
|
||||||
AnalyticsReporting service = initializeAnalyticsReporting(credentialsFromD4S);
|
AnalyticsReporting service = initializeAnalyticsReporting(credentialsFromD4S);
|
||||||
HashMap<String,GetReportsResponse> responses = getReportResponses(service, credentialsFromD4S.getViewIds(),
|
HashMap<String,List<GetReportsResponse>> responses = getReportResponses(service, credentialsFromD4S.getViewIds(), dateRange);
|
||||||
dateRange);
|
|
||||||
List<VREAccessesReportRow> totalAccesses = new ArrayList<>();
|
List<VREAccessesReportRow> totalAccesses = new ArrayList<>();
|
||||||
|
|
||||||
for(String view : responses.keySet()) {
|
for(String view : responses.keySet()) {
|
||||||
|
@ -172,30 +171,38 @@ public class VREAccessesHarvester extends BasicHarvester {
|
||||||
* @return GetReportResponse The Analytics Reporting API V4 response.
|
* @return GetReportResponse The Analytics Reporting API V4 response.
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
private static HashMap<String,GetReportsResponse> getReportResponses(AnalyticsReporting service,
|
private static HashMap<String,List<GetReportsResponse>> getReportResponses(AnalyticsReporting service,
|
||||||
List<String> viewIDs, DateRange dateRange) throws IOException {
|
List<String> viewIDs, DateRange dateRange) throws IOException {
|
||||||
|
|
||||||
HashMap<String,GetReportsResponse> reports = new HashMap<>();
|
HashMap<String,List<GetReportsResponse>> reports = new HashMap<>();
|
||||||
|
|
||||||
// Create the Metrics object.
|
// Create the Metrics object.
|
||||||
Metric sessions = new Metric().setExpression("ga:pageviews").setAlias("pages");
|
Metric sessions = new Metric().setExpression("ga:pageviews").setAlias("pages");
|
||||||
com.google.api.services.analyticsreporting.v4.model.Dimension pageTitle = new com.google.api.services.analyticsreporting.v4.model.Dimension().setName("ga:pagePath");
|
com.google.api.services.analyticsreporting.v4.model.Dimension pageTitle = new com.google.api.services.analyticsreporting.v4.model.Dimension().setName("ga:pagePath");
|
||||||
|
|
||||||
for(String view : viewIDs) {
|
for(String view : viewIDs) {
|
||||||
|
List<GetReportsResponse> gReportResponses = new ArrayList<>();
|
||||||
logger.info("Getting data from Google Analytics for viewid: " + view);
|
logger.info("Getting data from Google Analytics for viewid: " + view);
|
||||||
// Create the ReportRequest object.
|
boolean iterateMorePages = true;
|
||||||
ReportRequest request = new ReportRequest().setViewId(view.trim()).setDateRanges(Arrays.asList(dateRange))
|
String nextPageToken = null;
|
||||||
.setMetrics(Arrays.asList(sessions)).setDimensions(Arrays.asList(pageTitle));
|
while (iterateMorePages) {
|
||||||
|
// Create the ReportRequest object.
|
||||||
ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
|
ReportRequest request = new ReportRequest().setViewId(view.trim()).setDateRanges(Arrays.asList(dateRange))
|
||||||
requests.add(request);
|
.setMetrics(Arrays.asList(sessions)).setDimensions(Arrays.asList(pageTitle));
|
||||||
|
request.setPageSize(1000);
|
||||||
// Create the GetReportsRequest object.
|
request.setPageToken(nextPageToken);
|
||||||
GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests);
|
ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
|
||||||
|
requests.add(request);
|
||||||
// Call the batchGet method.
|
// Create the GetReportsRequest object.
|
||||||
GetReportsResponse response = service.reports().batchGet(getReport).execute();
|
GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests);
|
||||||
reports.put(view, response);
|
// Call the batchGet method.
|
||||||
|
GetReportsResponse response = service.reports().batchGet(getReport).execute();
|
||||||
|
nextPageToken = response.getReports().get(0).getNextPageToken();
|
||||||
|
iterateMorePages = (nextPageToken != null);
|
||||||
|
logger.debug("got nextPageToken: "+nextPageToken);
|
||||||
|
gReportResponses.add(response);
|
||||||
|
}
|
||||||
|
reports.put(view, gReportResponses);
|
||||||
}
|
}
|
||||||
// Return the response.
|
// Return the response.
|
||||||
return reports;
|
return reports;
|
||||||
|
@ -211,30 +218,31 @@ public class VREAccessesHarvester extends BasicHarvester {
|
||||||
*
|
*
|
||||||
* @param response An Analytics Reporting API V4 response.
|
* @param response An Analytics Reporting API V4 response.
|
||||||
*/
|
*/
|
||||||
private static List<VREAccessesReportRow> parseResponse(String viewId, GetReportsResponse response) {
|
private static List<VREAccessesReportRow> parseResponse(String viewId, List<GetReportsResponse> responses) {
|
||||||
logger.debug("parsing Response for " + viewId);
|
logger.debug("parsing Response for " + viewId);
|
||||||
|
|
||||||
List<VREAccessesReportRow> toReturn = new ArrayList<>();
|
List<VREAccessesReportRow> toReturn = new ArrayList<>();
|
||||||
|
for (GetReportsResponse response : responses) {
|
||||||
for (Report report: response.getReports()) {
|
for (Report report: response.getReports()) {
|
||||||
List<ReportRow> rows = report.getData().getRows();
|
List<ReportRow> rows = report.getData().getRows();
|
||||||
if (rows == null) {
|
if (rows == null) {
|
||||||
logger.warn("No data found for " + viewId);
|
logger.warn("No data found for " + viewId);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (ReportRow row: rows) {
|
for (ReportRow row: rows) {
|
||||||
String dimension = row.getDimensions().get(0);
|
String dimension = row.getDimensions().get(0);
|
||||||
DateRangeValues metric = row.getMetrics().get(0);
|
DateRangeValues metric = row.getMetrics().get(0);
|
||||||
VREAccessesReportRow var = new VREAccessesReportRow();
|
VREAccessesReportRow var = new VREAccessesReportRow();
|
||||||
boolean validEntry = false;
|
boolean validEntry = false;
|
||||||
String pagePath = dimension;
|
String pagePath = dimension;
|
||||||
if (pagePath.startsWith("/group") || pagePath.startsWith("/web")) {
|
if (pagePath.startsWith("/group") || pagePath.startsWith("/web")) {
|
||||||
var.setPagePath(dimension);
|
var.setPagePath(dimension);
|
||||||
validEntry = true;
|
validEntry = true;
|
||||||
}
|
}
|
||||||
if (validEntry) {
|
if (validEntry) {
|
||||||
var.setVisitNumber(Integer.parseInt(metric.getValues().get(0)));
|
var.setVisitNumber(Integer.parseInt(metric.getValues().get(0)));
|
||||||
toReturn.add(var);
|
toReturn.add(var);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue