diff --git a/libs/openaire-usage-stats-sushilite-r5-1.0.0.jar b/libs/openaire-usage-stats-sushilite-r5-1.0.0.jar
new file mode 100644
index 0000000..d4d094b
Binary files /dev/null and b/libs/openaire-usage-stats-sushilite-r5-1.0.0.jar differ
diff --git a/pom.xml b/pom.xml
index 6e4c908..23f28eb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,6 +118,13 @@
+
+ eu.dnetlib
+ dnet-openaire-usage-stats-sushilite-r5
+ 1.0.0
+ system
+ ${project.basedir}/libs/openaire-usage-stats-sushilite-r5-1.0.0.jar
+
eu.dnetlib
dnet-openaire-usage-stats-sushilite
@@ -421,6 +428,10 @@
false
+
+ libs
+ file:///${project.basedir}/libs
+
diff --git a/src/main/java/eu/dnetlib/repo/manager/controllers/SushiliteR5Controller.java b/src/main/java/eu/dnetlib/repo/manager/controllers/SushiliteR5Controller.java
new file mode 100644
index 0000000..e57ff35
--- /dev/null
+++ b/src/main/java/eu/dnetlib/repo/manager/controllers/SushiliteR5Controller.java
@@ -0,0 +1,54 @@
+package eu.dnetlib.repo.manager.controllers;
+
+import eu.dnetlib.repo.manager.service.sushilite.SushiliteR5Service;
+import eu.dnetlib.repo.manager.service.sushilite.SushiliteR5ServiceImpl;
+import io.swagger.annotations.Api;
+import org.json.JSONException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+@RestController
+@RequestMapping(value = "/sushiliteR5")
+@Api(description = "Sushi-Lite R5 API", tags = {"sushiliteR5"})
+public class SushiliteR5Controller {
+
+
+ private static final Logger logger = LoggerFactory.getLogger(SushiliteR5Controller.class);
+
+
+ @Autowired
+ private SushiliteR5ServiceImpl sushiliteR5Service;
+
+ @RequestMapping(value = "/getReportResults", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+ @ResponseBody
+ @PreAuthorize("hasAuthority('REGISTERED_USER')")
+ public ResponseEntity> getReportResults(@RequestParam(value = "Report") String report,
+ @RequestParam(value = "Release", required=false, defaultValue="5") String release,
+ @RequestParam(value = "RequestorID",required=false, defaultValue="anonymous") String requestorID,
+ @RequestParam(value = "BeginDate",required=false, defaultValue="") String beginDate,
+ @RequestParam(value = "EndDate",required=false, defaultValue="") String endDate,
+ @RequestParam(value = "RepositoryIdentifier", required=false, defaultValue="") String repositoryIdentifier,
+ @RequestParam(value = "DatasetIdentifier", required=false, defaultValue="") String datasetIdentifier,
+ @RequestParam(value = "ItemIdentifier",required=false, defaultValue="") String itemIdentifier,
+ @RequestParam(value = "MetricType",required=false) List metricTypes,
+ @RequestParam(value = "dataType",required=false, defaultValue="") String dataType,
+ @RequestParam(value = "Granularity", required = false, defaultValue ="Monthly") String granularity,
+ @RequestParam(value = "Pretty",required=false, defaultValue="") String pretty) {
+
+ try {
+ return sushiliteR5Service.getReportResults(report, release, requestorID, beginDate, endDate, repositoryIdentifier, datasetIdentifier, itemIdentifier, metricTypes, dataType, granularity, pretty);
+ } catch (JSONException je) {
+ logger.error("", je);
+ return ResponseEntity.internalServerError().build();
+ }
+ }
+
+}
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/sushilite/SushiliteR5Service.java b/src/main/java/eu/dnetlib/repo/manager/service/sushilite/SushiliteR5Service.java
new file mode 100644
index 0000000..44a4c80
--- /dev/null
+++ b/src/main/java/eu/dnetlib/repo/manager/service/sushilite/SushiliteR5Service.java
@@ -0,0 +1,28 @@
+package eu.dnetlib.repo.manager.service.sushilite;
+
+import eu.dnetlib.usagestats.sushilite.domain.ReportResponseWrapper;
+import org.json.JSONException;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
+public interface SushiliteR5Service {
+
+
+ ResponseEntity> getReportResults(String Report,
+ String release,
+ String requestorID,
+ String beginDate,
+ String endDate,
+ String repositoryIdentifier,
+ String datasetIdentifier,
+ String itemIdentifier,
+ List metricTypes,
+ String dataType,
+ String granularity,
+ String pretty) throws JSONException;
+
+
+
+
+}
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/sushilite/SushiliteR5ServiceImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/sushilite/SushiliteR5ServiceImpl.java
new file mode 100644
index 0000000..223d016
--- /dev/null
+++ b/src/main/java/eu/dnetlib/repo/manager/service/sushilite/SushiliteR5ServiceImpl.java
@@ -0,0 +1,132 @@
+package eu.dnetlib.repo.manager.service.sushilite;
+
+//import eu.dnetlib.usagestats.sushilite.domain.COUNTER_Item_Report;
+import org.json.JSONException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestClientException;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+import java.util.List;
+
+@Service("sushiliteR5Service")
+public class SushiliteR5ServiceImpl implements SushiliteR5Service {
+
+ private static final Logger logger = LoggerFactory.getLogger(SushiliteR5ServiceImpl.class);
+
+
+ @Value("${services.provide.usagestats.sushiliteR5Endpoint}")
+ private String usagestatsSushiliteR5Endpoint;
+
+
+ public ResponseEntity> getReportResults(String report,
+ String release,
+ String requestorID,
+ String beginDate,
+ String endDate,
+ String repositoryIdentifier,
+ String datasetIdentifier,
+ String itemIdentifier,
+ List metricTypes,
+ String dataType,
+ String granularity,
+ String pretty) throws JSONException
+ {
+ //build the uri params
+ UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(this.usagestatsSushiliteR5Endpoint + "reports/" + report.toLowerCase())
+ .queryParam("Report", report)
+ .queryParam("Release", release)
+ .queryParam("RequestorID", requestorID)
+ .queryParam("BeginDate", beginDate)
+ .queryParam("EndDate", endDate)
+ .queryParam("RepositoryIdentifier", repositoryIdentifier)
+ .queryParam("DatasetIdentifier", datasetIdentifier)
+ .queryParam("ItemIdentifier", itemIdentifier);
+ if ( metricTypes != null ) {
+ for ( String metricType : metricTypes )
+ builder.queryParam("MetricType", metricType);
+ }
+ builder.queryParam("DataType", dataType)
+ .queryParam("Granularity", granularity)
+ .queryParam("Pretty", pretty);
+
+ URI uri = builder.build().encode().toUri();
+
+ RestTemplate restTemplate = new RestTemplate();
+ restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
+
+ ResponseEntity> resp;
+ try {
+ resp = restTemplate.exchange(
+ uri,
+ HttpMethod.GET,
+ null,
+ new ParameterizedTypeReference