diff --git a/Dockerfile b/Dockerfile
index 18d6038..22ceb2e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM tomcat:8.5-jre8-alpine
+FROM tomcat:7.0.90-jre8
MAINTAINER "pkanakakis@di.uoa.gr"
RUN ["rm", "-fr", "/usr/local/tomcat/webapps/ROOT"]
COPY ./target/uoa-repository-manager-service.war /usr/local/tomcat/webapps/uoa-repository-manager-service.war
diff --git a/pom.xml b/pom.xml
index bfbe7e9..32208e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,10 +68,11 @@
eu.dnetlib
- dnet-openaire-usage-stats-api
- 2.0.2-SNAPSHOT
+ dnet-openaire-usage-stats-sushilite
+ 1.0.0-SNAPSHOT
+
cglib
cglib-nodep
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/config/Config.java b/src/main/java/eu/dnetlib/repo/manager/service/config/Config.java
index 9b462ab..1ff850d 100644
--- a/src/main/java/eu/dnetlib/repo/manager/service/config/Config.java
+++ b/src/main/java/eu/dnetlib/repo/manager/service/config/Config.java
@@ -31,6 +31,9 @@ public class Config {
@Value("${redis.password}")
private String password;
+ @Value("${aai.mode}")
+ private String aai_mode;
+
@PostConstruct
private void init(){
LOGGER.info(host);
@@ -51,7 +54,8 @@ public class Config {
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setCookieName("openAIRESession");
serializer.setCookiePath("/");
-// serializer.setDomainName(".openaire.eu");
+ if(aai_mode.equalsIgnoreCase("production") || aai_mode.equalsIgnoreCase("beta"))
+ serializer.setDomainName(".openaire.eu");
// serializer.setDomainName(".athenarc.gr");
LOGGER.info("Serializer : " + serializer);
return serializer;
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/config/FrontEndLinkURIAuthenticationSuccessHandler.java b/src/main/java/eu/dnetlib/repo/manager/service/config/FrontEndLinkURIAuthenticationSuccessHandler.java
index 48087dd..49be6eb 100644
--- a/src/main/java/eu/dnetlib/repo/manager/service/config/FrontEndLinkURIAuthenticationSuccessHandler.java
+++ b/src/main/java/eu/dnetlib/repo/manager/service/config/FrontEndLinkURIAuthenticationSuccessHandler.java
@@ -3,6 +3,7 @@ package eu.dnetlib.repo.manager.service.config;
import com.google.gson.JsonObject;
import org.apache.log4j.Logger;
import org.mitre.openid.connect.model.OIDCAuthenticationToken;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
@@ -25,6 +26,10 @@ public class FrontEndLinkURIAuthenticationSuccessHandler implements Authenticati
LOGGER.debug("Front end uri : " + frontEndURI);
}
+
+ @Value("${aai.mode}")
+ private String aai_mode;
+
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
@@ -59,14 +64,16 @@ public class FrontEndLinkURIAuthenticationSuccessHandler implements Authenticati
Cookie openAIREUser = new Cookie("openAIREUser", new Gson().toJson(userInfo) );
openAIREUser.setMaxAge(14400);
openAIREUser.setPath("/");
-// openAIREUser .setDomain(".openaire.eu");
+ if(aai_mode.equalsIgnoreCase("production") || aai_mode.equalsIgnoreCase("beta"))
+ openAIREUser .setDomain(".openaire.eu");
// openAIREUser.setDomain(".athenarc.gr");
response.addCookie(openAIREUser);
Cookie accessToken = new Cookie("AccessToken", authOIDC.getAccessTokenValue());
accessToken.setMaxAge(14400);
-// accessToken.setDomain(".openaire.eu");
+ if(aai_mode.equalsIgnoreCase("production") || aai_mode.equalsIgnoreCase("beta"))
+ accessToken.setDomain(".openaire.eu");
accessToken.setPath("/");
// accessToken.setDomain(".athenarc.gr");
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/PiWikApiImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/PiWikApiImpl.java
index 45eb8b2..6941f10 100644
--- a/src/main/java/eu/dnetlib/repo/manager/service/controllers/PiWikApiImpl.java
+++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/PiWikApiImpl.java
@@ -73,7 +73,7 @@ public class PiWikApiImpl implements PiWikApi{
}
@Override
- @PreAuthorize("hasRole('ROLE_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_ADMIN') or (hasRole('ROLE_USER') and #piwikInfo.requestorEmail == authentication.userInfo.email)")
public PiwikInfo savePiwikInfo(@RequestBody PiwikInfo piwikInfo) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(INSERT_PIWIK_INFO, new Object[]{piwikInfo.getRepositoryId(), piwikInfo.getSiteId(), piwikInfo.getRequestorName(),
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java
index 712ada0..4fcc25a 100644
--- a/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java
+++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java
@@ -24,8 +24,6 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.security.access.annotation.Secured;
-import org.springframework.security.access.prepost.PostAuthorize;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
@@ -40,7 +38,6 @@ import javax.annotation.PostConstruct;
import java.sql.Timestamp;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Function;
import java.util.stream.Collectors;
@Component
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/StatsApi.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/StatsApi.java
new file mode 100644
index 0000000..694bf32
--- /dev/null
+++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/StatsApi.java
@@ -0,0 +1,26 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import io.swagger.annotations.Api;
+import org.json.JSONException;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "/stats")
+@Api(description = "Stats API", tags = {"statistics"})
+public interface StatsApi {
+
+
+ @RequestMapping(value = "/getStatistics" , method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ @ResponseBody
+ Map getStatistics() throws JSONException;
+
+
+
+}
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/StatsApiImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/StatsApiImpl.java
new file mode 100644
index 0000000..23a6d72
--- /dev/null
+++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/StatsApiImpl.java
@@ -0,0 +1,105 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import org.apache.log4j.Logger;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponents;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class StatsApiImpl implements StatsApi {
+
+ private RestTemplate restTemplate = null;
+
+ private HttpHeaders httpHeaders;
+
+ private static final Logger LOGGER = Logger.getLogger(RepositoryApiImpl.class);
+
+ @Value("${search.api.baseAddress}")
+ private String baseAddress;
+
+ @PostConstruct
+ private void init() {
+ LOGGER.debug("Initialization method of statistics api!");
+
+ restTemplate = new RestTemplate();
+ restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
+
+ httpHeaders = new HttpHeaders();
+ httpHeaders.set("Content-Type", "application/json");
+ }
+
+
+ @Override
+ public Map getStatistics() throws JSONException {
+
+
+ String aggregators = getTotalByType("datasource",baseAddress+"/resources",
+ "?query= " +
+ " oaftype exact datasource and " +
+ " ( datasourcetypename exact Institutional Repository Aggregator " +
+ " or datasourcetypename exact Publication Repository Aggregator )");
+
+ String dataRepositories = getTotalByType("datasource",baseAddress+"/resources",
+ "?query= " +
+ " oaftype exact datasource and " +
+ " datasourcetypename exact Data Repository " );
+
+ String literature = getTotalByType("datasource",baseAddress+"/resources",
+ "?query= " +
+ " oaftype exact datasource and " +
+ " ( datasourcetypename exact Institutional Repository " +
+ " or datasourcetypename exact Publication Repository )");
+
+ String journal = getTotalByType("datasource",baseAddress+"/resources",
+ "?query= " +
+ " oaftype exact datasource and " +
+ " datasourcetypename exact Journal");
+
+ String publications = getTotalByType("other",baseAddress,"/publications/count");
+ String datasets = getTotalByType("other",baseAddress,"/datasets/count");
+ String software = getTotalByType("other",baseAddress,"/software/count");
+
+
+ HashMap stats = new HashMap<>();
+ stats.put("aggregators",aggregators);
+ stats.put("dataRepositories",dataRepositories);
+ stats.put("literature",literature);
+ stats.put("journal",journal);
+
+ stats.put("publications",publications);
+ stats.put("datasets",datasets);
+ stats.put("software",software);
+
+
+ return stats;
+ }
+
+
+ private String getTotalByType(String type,String url,String query) throws JSONException {
+ UriComponents uriComponents = UriComponentsBuilder
+ .fromHttpUrl(url + query)
+ .queryParam("page",0)
+ .queryParam("size",0)
+ .queryParam("format","json")
+ .build().encode();
+
+ String rs = restTemplate.getForObject(uriComponents.toUri(), String.class);
+
+ if(type.equalsIgnoreCase("datasource")){
+ JSONObject metadata = (JSONObject) new JSONObject(rs).get("meta");
+ return String.valueOf(metadata.get("total"));
+ }else
+ return String.valueOf(new JSONObject(rs).get("total"));
+
+ }
+}
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApi.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApi.java
index fe79c50..cd0df0e 100644
--- a/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApi.java
+++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApi.java
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
@Api(description = "Sushi-Lite API", tags = {"sushilite"})
public interface SushiliteApi {
- @RequestMapping(value = "/getReportResults", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+ @RequestMapping(value = "/getReportResults/{page}/{pageSize}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
ReportResponseWrapper getReportResults(String page,
String pageSize,
diff --git a/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApiImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApiImpl.java
index 6759326..e488371 100644
--- a/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApiImpl.java
+++ b/src/main/java/eu/dnetlib/repo/manager/service/controllers/SushiliteApiImpl.java
@@ -1,16 +1,10 @@
package eu.dnetlib.repo.manager.service.controllers;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
import eu.dnetlib.usagestats.sushilite.domain.ReportItem;
-import eu.dnetlib.usagestats.sushilite.domain.ReportResponse;
import eu.dnetlib.usagestats.sushilite.domain.ReportResponseWrapper;
-import org.json.JSONException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index acd14a9..7ec8244 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,34 +1,39 @@
infrastructure.name=integration
-#
+
## Container properties
container.hostname=aleka.athenarc.gr
container.context=uoa-repository-manager-service
container.port = 8480
-#
+
## IS
-ISLookUpService.url = http://node6.t.openaire.research-infrastructures.eu/is/services/isLookUp
-ISRegistryService.url = http://node6.t.openaire.research-infrastructures.eu/is/services/isRegistry
-ISSNService.url = http://node6.t.openaire.research-infrastructures.eu/is/services/isSN
-#
-#
+#ISLookUpService.url = http://node6.t.openaire.research-infrastructures.eu/is/services/isLookUp
+#ISRegistryService.url = http://node6.t.openaire.research-infrastructures.eu/is/services/isRegistry
+#ISSNService.url = http://node6.t.openaire.research-infrastructures.eu/is/services/isSN
+
+IS.url = https://dev-openaire.d4science.org/is/services
+ISLookUpService.url = ${IS.url}/isLookUp
+ISRegistryService.url = ${IS.url}/isRegistry
+ISSNService.url = ${IS.url}/services/isSN
+
+
ValidatorService.url=http://adonis.athenarc.gr:8080/validator-service/services/validatorWebService
-#
+
## Broker Service
services.broker.url = http://broker1-dev-dnet.d4science.org
services.broker.port = 8080
services.broker.api = api/
services.broker.openaire = openaireBroker
-#
-#
+
+
api.baseAddress=https://dev-openaire.d4science.org/openaire
##api.baseAddress=http://beta.services.openaire.eu:8080/openaire
-#
+
service.repository-rest-api.baseUrl =http://${container.hostname}:${container.port}
services.repo-manager.baseUrl = http://${container.hostname}:${container.port}/${container.context}
-#
+
transport.soap.baseAddress = http://${container.hostname}:${container.port}/${container.context}
transport.soap.force.local.address = false
-#
+
services.repo-manager.adminEmail = pkanakakis@di.uoa.gr
services.repo-manager.repository.testing.mode = false
services.repo-manager.deploy.environment = development
@@ -45,34 +50,44 @@ services.validator.mail.mode = ssl
services.validator.mail.debug = false
services.validator.mail.overrideEmail = pkanakakis@di.uoa.gr
services.validator.mail.specialRecipients = pkanakakis@di.uoa.gr
-#
+
services.validator.repoRegistration.override = pkanakakis@di.uoa.gr
-#
-#
+
+
repomanager.db.driverClassName = org.postgresql.Driver
repomanager.db.url = jdbc:postgresql://194.177.192.119:5432/repomanager
repomanager.db.username = dnet
repomanager.db.password = dnetPwd
-#
+
services.repomanager.analyticsURL = http://analytics.openaire.eu/addsite.php?
-#
+
topic_types.url = https://beta.services.openaire.eu/provision/mvc/vocabularies/dnet:topic_types.json
-#
+
oidc.issuer = https://aai.openaire.eu/oidc/
oidc.id = 767422b9-5461-4807-a80a-f9a2072d3a7d
oidc.secret = AMQtGlbTXNjwjhF0st28LmM6V0XypMdaVS7tJmGuYFlmH36iIv4t7tVqYuLYrNPkhnZ_GPUJvhymBhFupdgb6aU
-#
-#oidc.dev.home = http://koulis.athenarc.gr:4200/uoa-repository-manager-service/openid_connect_login
-#webapp.dev.front = http://koulis.athenarc.gr:4200/landing
-oidc.dev.home = http://aleka.athenarc.gr:4200/uoa-repository-manager-service/openid_connect_login
-webapp.dev.front = http://aleka.athenarc.gr:4200/landing
-#
+
+oidc.dev.home = http://koulis.athenarc.gr:4200/uoa-repository-manager-service/openid_connect_login
+webapp.dev.front = http://koulis.athenarc.gr:4200/landing
+#oidc.dev.home = http://aleka.athenarc.gr:4200/uoa-repository-manager-service/openid_connect_login
+#webapp.dev.front = http://aleka.athenarc.gr:4200/landing
+
+##REDIS-AAI
+
redis.host = audrey.athenarc.gr
redis.port = 6379
redis.password = E#Szvnidd
-#
+aai.mode = develop
+
+
+
services.repomanager.usageStatisticsDiagramsBaseURL = https://beta.openaire.eu/stats3/
services.repomanager.usageStatisticsNumbersBaseURL = https://beta.services.openaire.eu/usagestats/datasources/
services.repomanager.usagestats.adminEmail = pkanakakis@di.uoa.gr
+##SUSHI
+services.repomanager.usagestats.sushiliteEndpoint = http://beta.services.openaire.eu/usagestats/sushilite/
+
+##SEARCH API
+search.api.baseAddress=https://beta.services.openaire.eu/search/v2/api
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/applicationContext.xml b/src/main/webapp/WEB-INF/applicationContext.xml
index 41423aa..66ec56e 100644
--- a/src/main/webapp/WEB-INF/applicationContext.xml
+++ b/src/main/webapp/WEB-INF/applicationContext.xml
@@ -19,6 +19,9 @@
+
+
+
diff --git a/src/test/java/unitest/SushiTest.java b/src/test/java/unitest/SushiTest.java
new file mode 100644
index 0000000..347e647
--- /dev/null
+++ b/src/test/java/unitest/SushiTest.java
@@ -0,0 +1,25 @@
+package unitest;
+
+import eu.dnetlib.repo.manager.service.controllers.SushiliteApi;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = "classpath:applicationContext.xml")
+//@WebAppConfiguration
+public class SushiTest {
+
+ @Autowired
+ SushiliteApi sushiliteApi;
+
+
+ @Test
+ public void getReportResults(){
+ System.out.println("test");
+ }
+
+}
diff --git a/src/test/resources/application-context.xml b/src/test/resources/application-context.xml
new file mode 100644
index 0000000..66f1ab9
--- /dev/null
+++ b/src/test/resources/application-context.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ classpath*:/gr/**/springContext-*.properties
+ classpath*:/eu/**/springContext-*.properties
+
+ classpath*:/application.properties
+ classpath*:/email-texts.properties
+
+ classpath*:dnet-site-wizard.properties
+ classpath*:dnet-site-override.properties
+ classpath*:dnet-wizard.properties
+ classpath*:dnet-override.properties
+ classpath*:dnet-validator-wizard.properties
+ classpath*:dnet-validator-override.properties
+ classpath*:dnet-site-force-override.properties
+ classpath*:dnet-force-override.properties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/resources/applicationContext.xml b/src/test/resources/applicationContext.xml
new file mode 100644
index 0000000..66ec56e
--- /dev/null
+++ b/src/test/resources/applicationContext.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ classpath*:/gr/**/springContext-*.properties
+ classpath*:/eu/**/springContext-*.properties
+
+ classpath*:/application.properties
+ classpath*:/email-texts.properties
+
+ classpath*:dnet-site-wizard.properties
+ classpath*:dnet-site-override.properties
+ classpath*:dnet-wizard.properties
+ classpath*:dnet-override.properties
+ classpath*:dnet-validator-wizard.properties
+ classpath*:dnet-validator-override.properties
+ classpath*:dnet-site-force-override.properties
+ classpath*:dnet-force-override.properties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file