Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/NotificationMode.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/NotificationMode.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/NotificationMode.java	(revision 49757)
@@ -0,0 +1,10 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 10-Mar-17.
+ */
+public enum NotificationMode implements IsSerializable {
+    MOCK, EMAIL
+}
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/SimpleSubscriptionDesc.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/SimpleSubscriptionDesc.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/SimpleSubscriptionDesc.java	(revision 49757)
@@ -0,0 +1,57 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 10-Mar-17.
+ */
+public class SimpleSubscriptionDesc implements IsSerializable {
+
+    private String id;
+    private String datasource;
+    private String topic;
+    private long count;
+
+    public SimpleSubscriptionDesc() {
+    }
+
+    public SimpleSubscriptionDesc(final String id, final String datasource, final String topic, final long count) {
+        this.id = id;
+        this.datasource = datasource;
+        this.topic = topic;
+        this.count = count;
+    }
+
+    public String getId() {
+        return this.id;
+    }
+
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+    public String getDatasource() {
+        return this.datasource;
+    }
+
+    public void setDatasource(final String datasource) {
+        this.datasource = datasource;
+    }
+
+    public String getTopic() {
+        return this.topic;
+    }
+
+    public void setTopic(final String topic) {
+        this.topic = topic;
+    }
+
+    public long getCount() {
+        return this.count;
+    }
+
+    public void setCount(final long count) {
+        this.count = count;
+    }
+
+}
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourceRegistrationState.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourceRegistrationState.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourceRegistrationState.java	(revision 49757)
@@ -0,0 +1,48 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import eu.dnetlib.domain.data.Repository;
+
+/**
+ * Created by stefania on 12/17/15.
+ */
+public class DatasourceRegistrationState extends WizardState implements IsSerializable {
+
+    private String mode;
+    private String selectedRepositoryId;
+
+    private Repository repository;
+
+    public DatasourceRegistrationState() {
+    }
+
+    public DatasourceRegistrationState(String mode, String selectedRepositoryId, Repository repository) {
+        this.mode = mode;
+        this.selectedRepositoryId = selectedRepositoryId;
+        this.repository = repository;
+    }
+
+    public String getMode() {
+        return mode;
+    }
+
+    public void setMode(String mode) {
+        this.mode = mode;
+    }
+
+    public String getSelectedRepositoryId() {
+        return selectedRepositoryId;
+    }
+
+    public void setSelectedRepositoryId(String selectedRepositoryId) {
+        this.selectedRepositoryId = selectedRepositoryId;
+    }
+
+    public Repository getRepository() {
+        return repository;
+    }
+
+    public void setRepository(Repository repository) {
+        this.repository = repository;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/ValidationServiceException.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/ValidationServiceException.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/ValidationServiceException.java	(revision 49757)
@@ -0,0 +1,46 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by nikonas on 7/12/15.
+ */
+public class ValidationServiceException extends Exception implements IsSerializable {
+
+    public enum ErrorCode implements IsSerializable {
+        NO_ADMIN_EMAILS,
+        NOT_VALID_BASEURL,
+        GENERAL_ERROR, NOT_VALID_SET
+    }
+
+    private ErrorCode errorCode = null;
+
+    public ValidationServiceException() {
+    }
+
+    public ValidationServiceException(ErrorCode errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public ValidationServiceException(String message, Throwable cause, ErrorCode errorCode) {
+        super(message, cause);
+
+        this.errorCode = errorCode;
+    }
+
+    public ValidationServiceException(String message, ErrorCode errorCode) {
+        super(message);
+
+        this.errorCode = errorCode;
+    }
+
+    public ValidationServiceException(Throwable cause, ErrorCode errorCode) {
+        super(cause);
+
+        this.errorCode = errorCode;
+    }
+
+    public ErrorCode getErrorCode() {
+        return errorCode;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Country.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Country.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Country.java	(revision 49757)
@@ -0,0 +1,24 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+public class Country {
+
+    private String name;
+    private String code;
+
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/ValidationState.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/ValidationState.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/ValidationState.java	(revision 49757)
@@ -0,0 +1,16 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import eu.dnetlib.domain.functionality.validator.JobForValidation;
+
+/**
+ * Created by stefania on 2/10/16.
+ */
+public class ValidationState extends WizardState implements IsSerializable {
+
+    private JobForValidation jobForValidation = new JobForValidation();
+
+    public JobForValidation getJobForValidation() {
+        return jobForValidation;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Triple.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Triple.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Triple.java	(revision 49757)
@@ -0,0 +1,27 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefania on 3/8/16.
+ */
+public class Triple<K, V, L> extends Tuple<K, V> implements IsSerializable {
+
+    private L third;
+
+    public Triple() {
+    }
+
+    public Triple(K first, V second, L third) {
+        super(first, second);
+        this.third = third;
+    }
+
+    public L getThird() {
+        return third;
+    }
+
+    public void setThird(L third) {
+        this.third = third;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApi.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApi.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApi.java	(revision 49757)
@@ -0,0 +1,116 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+import eu.dnetlib.repo.manager.service.shared.Country;
+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.List;
+import java.util.Map;
+import java.util.Set;
+
+@RestController
+@RequestMapping(value = "/repository")
+public interface RepositoryApi {
+
+    @RequestMapping(value = "/getCountries", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    Country[] getCountries() ;
+
+    @RequestMapping(value = "/getRepositoriesByCountry/{country}", method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    Set<String> getRepositoriesByCountry(String country) throws JSONException;
+
+    @RequestMapping(value = "/getRepositoriesOfUser/{userEmail}/{page}/{size}")
+    @ResponseBody
+    List<Repository> getRepositoriesOfUser( String userEmail,
+                                        String page,
+                                        String size) throws JSONException;
+
+    @RequestMapping(value = "/getRepositoryById/{id}", method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    Repository getRepositoryById(String id) throws JSONException;
+
+    @RequestMapping(value = "/getRepositoriesByName/{name}/{page}/{size}/", method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    List<Repository> getRepositoriesByName(String name,
+                                          String page,
+                                          String size) throws JSONException;
+
+    @RequestMapping(value = "/getRepositoryInterface/{id}", method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    RepositoryInterface getRepositoyInterface(String id) throws JSONException;
+
+    @RequestMapping(value = "/addRepository", method = RequestMethod.POST,
+            consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String addRepository(Repository repository) throws JSONException;
+
+    @RequestMapping(value = "/addInterface", method = RequestMethod.POST,
+            consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String addRepositoryInterface(RepositoryInterface repositoryInterface) throws JSONException;
+
+    @RequestMapping(value = "/getDnetCountries", method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    List<String> getDnetCountries();
+
+    @RequestMapping(value = "/getTypologies", method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    List<String> getTypologies();
+
+    @RequestMapping(value = "/getTimezones", method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    List<String> getTimezones();
+
+    @RequestMapping(value = "/updateManagedStatus", method = RequestMethod.POST,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String updateManagedStatus(String id,String managed);
+
+    @RequestMapping(value = "/updateEnglishName", method = RequestMethod.POST,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String updateEnglishName(String id,String englishName);
+
+    @RequestMapping(value = "/updateLatitude", method = RequestMethod.POST,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String updateLatitude(String id,String latitude);
+
+    @RequestMapping(value = "/updateLongitude", method = RequestMethod.POST,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String updateLongitude(String id,String longitude);
+
+    @RequestMapping(value = "/updateOfficialName", method = RequestMethod.POST,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String updateOfficialName(String id,String officialName);
+
+    @RequestMapping(value = "/getUrlsOfUserRepos/{user_email}",method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    String getUrlsOfUserRepos(String user_email);
+
+    @RequestMapping(value = "/getDatasourceVocabularies/{mode}",method = RequestMethod.GET,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    List<String> getDatasourceVocabularies(String mode);
+
+
+
+
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/PiwikInfo.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/PiwikInfo.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/PiwikInfo.java	(revision 49757)
@@ -0,0 +1,49 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.Date;
+
+/**
+ * Created by stefania on 12/19/16.
+ */
+public class PiwikInfo implements IsSerializable {
+
+    private String repositoryId;
+    private String siteId;
+    private Date creationDate;
+
+    public PiwikInfo() {
+
+    }
+
+    public PiwikInfo(String repositoryId, String siteId, Date creationDate) {
+        this.repositoryId = repositoryId;
+        this.siteId = siteId;
+        this.creationDate = creationDate;
+    }
+
+    public String getRepositoryId() {
+        return repositoryId;
+    }
+
+    public void setRepositoryId(String repositoryId) {
+        this.repositoryId = repositoryId;
+    }
+
+    public String getSiteId() {
+        return siteId;
+    }
+
+    public void setSiteId(String siteId) {
+        this.siteId = siteId;
+    }
+
+    public Date getCreationDate() {
+        return creationDate;
+    }
+
+    public void setCreationDate(Date creationDate) {
+        this.creationDate = creationDate;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/WizardState.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/WizardState.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/WizardState.java	(revision 49757)
@@ -0,0 +1,9 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefania on 2/10/16.
+ */
+public class WizardState implements IsSerializable {
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/ValidatorApi.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/ValidatorApi.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/ValidatorApi.java	(revision 49757)
@@ -0,0 +1,35 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import eu.dnetlib.domain.functionality.validator.JobForValidation;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import org.json.JSONException;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+@RestController
+@RequestMapping(value = "/validator")
+public interface ValidatorApi {
+
+    @RequestMapping(value = "/submitJobForValidation",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE )
+    @ResponseBody
+    void submitJobForValidation(@RequestBody JobForValidation jobForValidation);
+
+    @RequestMapping(value = "/reSubmitJobForValidation/",method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE )
+    @ResponseBody
+    void reSubmitJobForValidation(@RequestBody String jobId) throws JSONException;
+
+    @RequestMapping(value = "/getRuleSets/{mode}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    List<RuleSet> getRuleSets(String mode);
+
+    @RequestMapping(value = "/getSetsOfRepository" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    List<String> getSetsOfRepository(@RequestBody String url);
+
+
+
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/BrokerException.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/BrokerException.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/BrokerException.java	(revision 49757)
@@ -0,0 +1,17 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+
+/**
+ * Created by stefanos on 27-Oct-16.
+ */
+public class BrokerException extends Exception {
+
+    public BrokerException(Throwable th) {
+        super(th);
+    }
+
+    public BrokerException() {
+    }
+
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RestService.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RestService.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RestService.java	(revision 49757)
@@ -0,0 +1,19 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+@Component
+public class RestService {
+
+    private static RestTemplate restTemplate = new org.springframework.web.client.RestTemplate();
+
+
+    public static String executeGET(String uri){
+        return  restTemplate.getForObject(uri,String.class);
+    }
+
+    public static String executePOST(String uri,String json){
+        return  restTemplate.postForObject(uri,json,String.class);
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Provenance.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Provenance.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Provenance.java	(revision 49757)
@@ -0,0 +1,42 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by claudio on 26/07/16.
+ */
+public class Provenance implements IsSerializable {
+
+    private String repositoryName;
+
+    private String url;
+
+    private String id;
+
+    public Provenance() {
+    }
+
+    public String getRepositoryName() {
+        return repositoryName;
+    }
+
+    public void setRepositoryName(String repositoryName) {
+        this.repositoryName = repositoryName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/config/RepoManagerContextLoaderListener.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/config/RepoManagerContextLoaderListener.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/config/RepoManagerContextLoaderListener.java	(revision 49757)
@@ -0,0 +1,109 @@
+package eu.dnetlib.repo.manager.service.config;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+import javax.servlet.ServletContext;
+import java.util.Properties;
+
+public class RepoManagerContextLoaderListener extends ContextLoaderListener {
+	private static Logger logger = Logger.getLogger(RepoManagerContextLoaderListener.class);
+
+
+	public RepoManagerContextLoaderListener() {
+		super();
+	}
+
+	public RepoManagerContextLoaderListener(WebApplicationContext context) {
+		super(context);
+	}
+
+	@Override
+	protected WebApplicationContext createWebApplicationContext(
+			ServletContext servletContext)
+			throws BeansException {
+		logger.debug("Creating web application context");
+		Properties props = this.loadProperties();
+		String repoMode = props.getProperty("services.validator.mode.repo");
+		String userMode = props.getProperty("services.validator.mode.user");
+		Boolean standaloneMode = Boolean.parseBoolean(props.getProperty("services.validator.mode.standalone"));
+		
+		logger.info("User mode: " + userMode);
+		logger.info("Repo mode: " + repoMode);
+		logger.info("Standalone mode: " + standaloneMode);
+//		logger.info("Dnet workflow enabled: " + repoMode);
+		XmlWebApplicationContext ctx = new XmlWebApplicationContext();
+
+		ctx.setServletContext(servletContext);
+
+		String userApiContext = null;
+		if (userMode.equalsIgnoreCase("local"))
+			userApiContext = "eu/dnetlib/validator/web/api/impls/users/springContext-validator-user-local.xml";
+		else if (userMode.equalsIgnoreCase("ldap"))
+			userApiContext = "eu/dnetlib/users/springContext-users-ldap.xml";
+
+		String[] springContextCore = new  String[] {
+				"classpath:META-INF/cxf/cxf.xml",
+				"classpath:META-INF/cxf/cxf-extension-soap.xml",
+				"classpath:META-INF/cxf/cxf-extension-jaxws.xml",
+				"classpath:META-INF/cxf/cxf-servlet.xml",
+				"classpath*:/cxf.xml",
+				"classpath*:/eu/dnetlib/repos/ehcacher/springContext-repos-ehcacher.xml",
+				"classpath*:/eu/dnetlib/clients/ws/springContext-locatorFactory.xml",
+				"classpath*:/eu/dnetlib/soap/cxf/applicationContext-eprbuilders.xml",
+//				"classpath*:/eu/dnetlib/validator/web/actions/springContext-validator-struts.xml",
+//				"classpath*:/eu/dnetlib/validator/web/actions/springContext-validator-emailer.xml",
+//				"classpath*:/eu/dnetlib/validator/web/config/springContext-validator.xml",
+				"classpath*:/eu/dnetlib/repo/manager/server/config/springContext-repo-manager-config.xml",
+//				"classpath*:/eu/dnetlib/validator/commons/dao/springContext-*.xml",
+				"classpath*:/eu/dnetlib/repos/springContext-repos-" + repoMode + ".xml",
+				"classpath*:/" + userApiContext
+		};
+
+
+		String[] springContextForStandalone = new String[] {
+		};
+
+		String[] springContextForIS = new String[] {
+				"classpath*:/gr/uoa/di/driver/util/springContext-locators.xml",
+				"classpath*:/gr/uoa/di/driver/app/springContext-lookupFactory.xml",
+				"classpath*:/gr/uoa/di/driver/app/springContext-lookupClients.xml",
+				"classpath*:/eu/dnetlib/enabling/hcm/springContext-hcmService.xml",
+				"classpath*:/gr/uoa/di/driver/app/springContext-commons.xml",
+				"classpath*:/gr/uoa/di/driver/app/springContext-registrator.xml"
+		};
+		
+		if (standaloneMode) {
+			logger.debug("Loading contexts for standalone mode");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForStandalone));
+		} else {
+			logger.debug("Loading contexts for dnet");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForIS));
+		}
+		
+		ctx.refresh();
+		
+		logger.debug("done");
+		
+		return ctx;
+	}	
+	
+	private Properties loadProperties() {
+		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {
+				"classpath*:/eu/dnetlib/repo/manager/server/config/springContext-repo-manager-config.xml"
+		});
+		
+		CascadingPropertyLoader pLoader = (CascadingPropertyLoader) ctx.getBean("propertyLoader");
+		Properties props = pLoader.getProperties();
+		
+		ctx.destroy();
+		ctx.close();
+		return props;
+	}
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ExternalReference.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ExternalReference.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ExternalReference.java	(revision 49757)
@@ -0,0 +1,52 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by claudio on 22/07/16.
+ */
+public class ExternalReference implements IsSerializable {
+
+    private String url;
+
+    private String sitename;
+
+    private String type;
+
+    private String refidentifier;
+
+    public ExternalReference() {
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getSitename() {
+        return sitename;
+    }
+
+    public void setSitename(String sitename) {
+        this.sitename = sitename;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getRefidentifier() {
+        return refidentifier;
+    }
+
+    public void setRefidentifier(String refidentifier) {
+        this.refidentifier = refidentifier;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/config/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/config/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/config/CascadingPropertyLoader.java	(revision 49757)
@@ -0,0 +1,55 @@
+package eu.dnetlib.repo.manager.service.config;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+
+import java.util.Properties;
+
+/**
+ * CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
+ * override the previous. It also supports property expansion like:
+ * 
+ * <code>
+ *   something = 1
+ *   somethingelse = 2
+ *   test = ${something}/${somethingelse}
+ *  </code>
+ * 
+ * <p>
+ * And if you override something to XX, then test will become XX/2
+ * </p>
+ * 
+ * 
+ * @author marko
+ * 
+ */
+public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
+
+	private Properties properties;
+
+	public void afterPropertiesSet() throws Exception {
+		this.properties = mergeProperties();
+
+		// Convert the merged properties, if necessary.
+		convertProperties(this.properties);
+		
+		logger.debug("Properties: " + properties);
+	}
+
+	@Override
+	protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
+		super.processProperties(beanFactoryToProcess, props);
+	}
+
+	public Properties getProperties() {
+		return properties;
+	}
+
+	public void setProperties(final Properties properties) {
+		super.setProperties(properties);
+		
+		this.properties = properties;
+	}
+}
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/EventsPage.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/EventsPage.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/EventsPage.java	(revision 49757)
@@ -0,0 +1,80 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+
+import java.util.List;
+
+/**
+ * Created by stefanos on 26/10/2016.
+ */
+public class EventsPage implements IsSerializable{
+
+    private String datasource;
+    private String topic;
+    private long currPage;
+    private long totalPages;
+    private long total;
+    private List<OpenAireEventPayload> values;
+
+    public EventsPage() {
+
+    }
+    public EventsPage(final String datasource, final String topic, final long currPage, final long totalPages, final long total,
+                      final List<OpenAireEventPayload> values) {
+        this.datasource = datasource;
+        this.topic = topic;
+        this.currPage = currPage;
+        this.totalPages = totalPages;
+        this.total = total;
+        this.values = values;
+    }
+
+    public String getDatasource() {
+        return datasource;
+    }
+
+    public void setDatasource(String datasource) {
+        this.datasource = datasource;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public long getCurrPage() {
+        return currPage;
+    }
+
+    public void setCurrPage(long currPage) {
+        this.currPage = currPage;
+    }
+
+    public long getTotalPages() {
+        return totalPages;
+    }
+
+    public void setTotalPages(long totalPages) {
+        this.totalPages = totalPages;
+    }
+
+    public long getTotal() {
+        return total;
+    }
+
+    public void setTotal(long total) {
+        this.total = total;
+    }
+
+    public List<OpenAireEventPayload> getValues() {
+        return values;
+    }
+
+    public void setValues(List<OpenAireEventPayload> values) {
+        this.values = values;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ConditionOperator.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ConditionOperator.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ConditionOperator.java	(revision 49757)
@@ -0,0 +1,10 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 17/3/2017.
+ */
+public enum ConditionOperator implements IsSerializable {
+    EXACT, MATCH_ANY, MATCH_ALL, RANGE
+}
Index: modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/timezones.txt
===================================================================
--- modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/timezones.txt	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/timezones.txt	(revision 49757)
@@ -0,0 +1,11 @@
+-2.0	[GMT - 2] Fernando de Noronha Time,	South Georg...
+-1.0	[GMT - 1] Azores Standard Time, Cape Verde Time...
+0.0	[GMT] Western European Time, Greenwich Mean Time
+1.0	[GMT + 1] Central European Time, West African Time
+2.0	[GMT + 2] Eastern European Time, Central Africa...
+3.0	[GMT + 3] Moscow Standard Time, Eastern African...
+3.5	[GMT + 3:30] Iran Standard Time
+4.0	[GMT + 4] Gulf Standard Time, Samara Standard Time
+4.5	[GMT + 4:30] Afghanistan Time
+5.0	[GMT + 5] Pakistan Standard Time, Yekaterinburg...
+8.0	[GMT + 8] Beijing, Hong Kong, Irkutsk, Kuala Lumpur, Manila, Perth
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Instance.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Instance.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Instance.java	(revision 49757)
@@ -0,0 +1,52 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by claudio on 22/07/16.
+ */
+public class Instance implements IsSerializable {
+
+    private String url;
+
+    private String license;
+
+    private String hostedby;
+
+    private String instancetype;
+
+    public Instance() {
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getLicense() {
+        return license;
+    }
+
+    public void setLicense(String license) {
+        this.license = license;
+    }
+
+    public String getHostedby() {
+        return hostedby;
+    }
+
+    public void setHostedby(String hostedby) {
+        this.hostedby = hostedby;
+    }
+
+    public String getInstancetype() {
+        return instancetype;
+    }
+
+    public void setInstancetype(String instancetype) {
+        this.instancetype = instancetype;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/countries.txt
===================================================================
--- modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/countries.txt	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/countries.txt	(revision 49757)
@@ -0,0 +1,195 @@
+Afghanistan
+Albania
+Algeria
+Andorra
+Angola
+Antigua & Deps
+Argentina
+Armenia
+Australia
+Austria
+Azerbaijan
+Bahamas
+Bahrain
+Bangladesh
+Barbados
+Belarus
+Belgium
+Belize
+Benin
+Bhutan
+Bolivia
+Bosnia Herzegovina
+Botswana
+Brazil
+Brunei
+Bulgaria
+Burkina
+Burundi
+Cambodia
+Cameroon
+Canada
+Cape Verde
+Central African Rep
+Chad
+Chile
+China
+Colombia
+Comoros
+Congo
+Congo {Democratic Rep}
+Costa Rica
+Croatia
+Cuba
+Cyprus
+Czech Republic
+Denmark
+Djibouti
+Dominica
+Dominican Republic
+East Timor
+Ecuador
+Egypt
+El Salvador
+Equatorial Guinea
+Eritrea
+Estonia
+Ethiopia
+Fiji
+Finland
+France
+Gabon
+Gambia
+Georgia
+Germany
+Ghana
+Greece
+Grenada
+Guatemala
+Guinea
+Guinea-Bissau
+Guyana
+Haiti
+Honduras
+Hungary
+Iceland
+India
+Indonesia
+Iran
+Iraq
+Ireland {Republic}
+Israel
+Italy
+Ivory Coast
+Jamaica
+Japan
+Jordan
+Kazakhstan
+Kenya
+Kiribati
+Korea North
+Korea South
+Kosovo
+Kuwait
+Kyrgyzstan
+Laos
+Latvia
+Lebanon
+Lesotho
+Liberia
+Libya
+Liechtenstein
+Lithuania
+Luxembourg
+Macedonia
+Madagascar
+Malawi
+Malaysia
+Maldives
+Mali
+Malta
+Marshall Islands
+Mauritania
+Mauritius
+Mexico
+Micronesia
+Moldova
+Monaco
+Mongolia
+Montenegro
+Morocco
+Mozambique
+Myanmar, {Burma}
+Namibia
+Nauru
+Nepal
+Netherlands
+New Zealand
+Nicaragua
+Niger
+Nigeria
+Norway
+Oman
+Pakistan
+Palau
+Panama
+Papua New Guinea
+Paraguay
+Peru
+Philippines
+Poland
+Portugal
+Qatar
+Romania
+Russian Federation
+Rwanda
+St Kitts & Nevis
+St Lucia
+Saint Vincent & the Grenadines
+Samoa
+San Marino
+Sao Tome & Principe
+Saudi Arabia
+Senegal
+Serbia
+Seychelles
+Sierra Leone
+Singapore
+Slovakia
+Slovenia
+Solomon Islands
+Somalia
+South Africa
+Spain
+Sri Lanka
+Sudan
+Suriname
+Swaziland
+Sweden
+Switzerland
+Syria
+Taiwan
+Tajikistan
+Tanzania
+Thailand
+Togo
+Tonga
+Trinidad & Tobago
+Tunisia
+Turkey
+Turkmenistan
+Tuvalu
+Uganda
+Ukraine
+United Arab Emirates
+United Kingdom
+United States
+Uruguay
+Uzbekistan
+Vanuatu
+Vatican City
+Venezuela
+Vietnam
+Yemen
+Zambia
+Zimbabwe
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Vocabulary.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Vocabulary.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Vocabulary.java	(revision 49757)
@@ -0,0 +1,36 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefania on 3/8/16.
+ */
+public class Vocabulary implements IsSerializable {
+
+    private String id;
+    private String name;
+
+    public Vocabulary() {
+    }
+
+    public Vocabulary(String id, String name) {
+        this.id = id;
+        this.name = name;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Project.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Project.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Project.java	(revision 49757)
@@ -0,0 +1,73 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public class Project implements IsSerializable {
+
+    private String code;
+    private String acronym;
+    private String title;
+    private String funder;
+    private String fundingProgram;
+    private String jurisdiction;
+
+    public Project() {
+    }
+
+    public Project(final String code, final String acronym, final String title, final String funder, final String fundingProgram, final String jurisdiction) {
+        this.code = code;
+        this.acronym = acronym;
+        this.title = title;
+        this.funder = funder;
+        this.fundingProgram = fundingProgram;
+        this.jurisdiction = jurisdiction;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getAcronym() {
+        return acronym;
+    }
+
+    public void setAcronym(String acronym) {
+        this.acronym = acronym;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getFunder() {
+        return funder;
+    }
+
+    public void setFunder(String funder) {
+        this.funder = funder;
+    }
+
+    public String getFundingProgram() {
+        return fundingProgram;
+    }
+
+    public void setFundingProgram(String fundingProgram) {
+        this.fundingProgram = fundingProgram;
+    }
+
+    public String getJurisdiction() {
+        return jurisdiction;
+    }
+
+    public void setJurisdiction(String jurisdiction) {
+        this.jurisdiction = jurisdiction;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/spring-servlet.xml
===================================================================
--- modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/spring-servlet.xml	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/spring-servlet.xml	(revision 49757)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/mvc"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xmlns:beans="http://www.springframework.org/schema/beans"
+             xmlns:task="http://www.springframework.org/schema/task"
+             xmlns:mvc="http://www.springframework.org/schema/mvc"
+             xmlns:context="http://www.springframework.org/schema/context"
+             xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
+		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+
+    <context:property-placeholder location="classpath*:/application.properties"/>
+    <context:annotation-config/>
+    <context:component-scan base-package="eu.dnetlib.repo.manager.service.controllers"/>
+    <mvc:annotation-driven/>
+</beans:beans>
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/applicationContext.xml	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/applicationContext.xml	(revision 49757)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="classpath*:/application-context.xml"/>
+
+
+    <import resource="classpath:META-INF/cxf/cxf.xml"/>
+   <!-- <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>-->
+    <import resource="classpath:META-INF/cxf/cxf-extension-jaxws.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
+    <import resource="classpath*:/cxf.xml"/>
+    <import resource="classpath*:/eu/dnetlib/repos/ehcacher/springContext-repos-ehcacher.xml"/>
+    <import resource="classpath*:/eu/dnetlib/soap/cxf/applicationContext-eprbuilders.xml"/>
+    <import resource="classpath*:/eu/dnetlib/clients/ws/springContext-locatorFactory.xml"/>
+    <import resource="classpath*:/eu/dnetlib/users/springContext-users-ldap.xml"/>
+    <import resource="classpath*:/gr/uoa/di/driver/util/springContext-locators.xml"/>
+    <import resource="classpath*:/gr/uoa/di/driver/app/springContext-lookupFactory.xml"/>
+    <import resource="classpath*:/gr/uoa/di/driver/app/springContext-lookupClients.xml"/>
+    <import resource="classpath*:/eu/dnetlib/enabling/hcm/springContext-hcmService.xml"/>
+    <import resource="classpath*:/gr/uoa/di/driver/app/springContext-commons.xml"/>
+    <import resource="classpath*:/gr/uoa/di/driver/app/springContext-registrator.xml"/>
+
+    <import resource="classpath*:/eu/dnetlib/repos/springContext-repos-dms-cached.xml"/>
+
+
+
+    <bean class="eu.dnetlib.repo.manager.service.config.CascadingPropertyLoader" id="propertyLoader">
+        <property name="order" value="2" />
+        <property name="properties">
+            <bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+                <property name="propertyFetcher">
+                    <bean class="eu.dnetlib.conf.PropertyFetcher" />
+                </property>
+            </bean>
+        </property>
+        <property name="ignoreUnresolvablePlaceholders" value="true" />
+        <property name="locations">
+            <list>
+                <value>classpath*:/gr/**/springContext-*.properties</value>
+                <value>classpath*:/eu/**/springContext-*.properties</value>
+
+                <value>classpath*:/eu/dnetlib/repo/manager/service/email-texts.properties</value>
+
+                <value>classpath*:dnet-site-wizard.properties</value>
+                <value>classpath*:dnet-site-override.properties</value>
+                <value>classpath*:dnet-wizard.properties</value>
+                <value>classpath*:dnet-override.properties</value>
+                <value>classpath*:dnet-validator-wizard.properties</value>
+                <value>classpath*:dnet-validator-override.properties</value>
+                <value>classpath*:dnet-site-force-override.properties</value>
+                <value>classpath*:dnet-force-override.properties</value>
+            </list>
+        </property>
+    </bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/UserAccessException.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/UserAccessException.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/UserAccessException.java	(revision 49757)
@@ -0,0 +1,51 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by nikonas on 7/12/15.
+ */
+public class UserAccessException extends Exception implements IsSerializable {
+
+    public enum ErrorCode implements IsSerializable {
+        USER_ALREADY_EXISTS,
+        SQL_ERROR,
+        INVALID_USERNAME,
+        INVALID_PASSWORD,
+        NOT_ACTIVATED,
+        ACTIVATION_ERROR,
+        LDAP_ERROR,
+        USERNAME_ALREADY_EXISTS, MAIL_ALREADY_EXISTS, GENERAL_ERROR, ALREADY_ACTIVATED, INVALID_EMAIL_FORMAT, WRONG_SECURITY_CODE, INCORRECT_CAPTCHA
+    }
+
+    private ErrorCode errorCode = null;
+
+    public UserAccessException() {
+    }
+
+    public UserAccessException(ErrorCode errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public UserAccessException(String message, Throwable cause, ErrorCode errorCode) {
+        super(message, cause);
+
+        this.errorCode = errorCode;
+    }
+
+    public UserAccessException(String message, ErrorCode errorCode) {
+        super(message);
+
+        this.errorCode = errorCode;
+    }
+
+    public UserAccessException(Throwable cause, ErrorCode errorCode) {
+        super(cause);
+
+        this.errorCode = errorCode;
+    }
+
+    public ErrorCode getErrorCode() {
+        return errorCode;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/OpenaireSubscription.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/OpenaireSubscription.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/OpenaireSubscription.java	(revision 49757)
@@ -0,0 +1,62 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import eu.dnetlib.repo.manager.service.shared.NotificationMode;
+
+/**
+ * Created by stefanos on 10-Mar-17.
+ */
+
+public class OpenaireSubscription implements IsSerializable {
+
+    private String subscriber;
+    private NotificationFrequency frequency;
+    private NotificationMode mode;
+    private AdvQueryObject query;
+
+    public OpenaireSubscription() {
+    }
+
+    public OpenaireSubscription(final String subscriber, final NotificationFrequency frequency, final
+    NotificationMode mode,
+                                final AdvQueryObject query) {
+        this.subscriber = subscriber;
+        this.frequency = frequency;
+        this.mode = mode;
+        this.query = query;
+    }
+
+    public String getSubscriber() {
+        return this.subscriber;
+    }
+
+    public void setSubscriber(final String subscriber) {
+        this.subscriber = subscriber;
+    }
+
+    public NotificationFrequency getFrequency() {
+        return this.frequency;
+    }
+
+    public void setFrequency(final NotificationFrequency frequency) {
+        this.frequency = frequency;
+    }
+
+    public NotificationMode getMode() {
+        return this.mode;
+    }
+
+    public void setMode(final NotificationMode mode) {
+        this.mode = mode;
+    }
+
+    public AdvQueryObject getQuery() {
+        return this.query;
+    }
+
+    public void setQuery(final AdvQueryObject query) {
+        this.query = query;
+    }
+
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/JobsOfUser.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/JobsOfUser.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/JobsOfUser.java	(revision 49757)
@@ -0,0 +1,59 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+
+import java.util.List;
+
+/**
+ * Created by nikonas on 29/3/16.
+ */
+public class JobsOfUser implements IsSerializable {
+
+    private int totalJobs;
+    private int totalJobsSuccessful;
+    private int totalJobsFailed;
+    private int totalJobsOngoing;
+
+    private List<StoredJob> jobs;
+
+    public int getTotalJobs() {
+        return totalJobs;
+    }
+
+    public void setTotalJobs(int totalJobs) {
+        this.totalJobs = totalJobs;
+    }
+
+    public int getTotalJobsSuccessful() {
+        return totalJobsSuccessful;
+    }
+
+    public void setTotalJobsSuccessful(int totalJobsSuccessful) {
+        this.totalJobsSuccessful = totalJobsSuccessful;
+    }
+
+    public int getTotalJobsFailed() {
+        return totalJobsFailed;
+    }
+
+    public void setTotalJobsFailed(int totalJobsFailed) {
+        this.totalJobsFailed = totalJobsFailed;
+    }
+
+    public int getTotalJobsOngoing() {
+        return totalJobsOngoing;
+    }
+
+    public void setTotalJobsOngoing(int totalJobsOngoing) {
+        this.totalJobsOngoing = totalJobsOngoing;
+    }
+
+    public List<StoredJob> getJobs() {
+        return jobs;
+    }
+
+    public void setJobs(List<StoredJob> jobs) {
+        this.jobs = jobs;
+    }
+}
Index: modules/uoa-repository-manager-service/pom.xml
===================================================================
--- modules/uoa-repository-manager-service/pom.xml	(nonexistent)
+++ modules/uoa-repository-manager-service/pom.xml	(revision 49757)
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>eu.dnetlib</groupId>
+    <artifactId>uoa-repository-manager-service</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+
+
+    <properties>
+        <spring.version>[4.0.0.RELEASE]</spring.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <!-- compile for Java 1.8 -->
+                <configuration>
+                    <source>1.7</source>
+                    <target>1.7</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.6</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+            <!--<plugin>
+                <groupId>cz.habarta.typescript-generator</groupId>
+                <artifactId>typescript-generator-maven-plugin</artifactId>
+                <version>1.27.339</version>
+                <executions>
+                    <execution>
+                        <id>generate1</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <jsonLibrary>jackson2</jsonLibrary>
+                            <outputFileType>implementationFile</outputFileType>
+                            <mapClasses>asClasses</mapClasses>
+                            <classPatterns>
+                                <pattern>eu.dnetlib.domain.data.*</pattern>
+                            </classPatterns>
+                            <outputFile>target/typeScriptClasses.ts</outputFile>
+                            <outputKind>module</outputKind>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>-->
+        </plugins>
+    </build>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator-annotation-processor</artifactId>
+            <version>4.1.0.Final</version>
+        </dependency>
+
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>(1.2, 1.5]</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>dnet-runtime</artifactId>
+            <version>[1.0.0]</version>
+            <exclusions>
+                <exclusion>  <!-- declare the exclusion here -->
+                    <groupId>org.apache.geronimo.specs</groupId>
+                    <artifactId>geronimo-javamail_1.4_spec</artifactId>
+                </exclusion>
+                <exclusion>  <!-- declare the exclusion here -->
+                    <groupId>com.sun.xml.bind</groupId>
+                    <artifactId>jaxb-impl</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-utils</artifactId>
+            <version>[1.2.0-SNAPSHOT, )</version>
+        </dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-domain</artifactId>
+            <version>[1.2.0-SNAPSHOT, )</version>
+        </dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-commons</artifactId>
+            <version>[1.2.0-SNAPSHOT, )</version>
+        </dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-clients</artifactId>
+            <version>[1.2.0-SNAPSHOT, )</version>
+        </dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-hcm</artifactId>
+            <version>[1.2.0-SNAPSHOT, )</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+        </dependency>
+
+        <dependency>
+            <groupId>se.kb</groupId>
+            <artifactId>oai4j</artifactId>
+            <version>[0.6b1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>xalan</groupId>
+            <artifactId>xalan</artifactId>
+            <version>2.7.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>1.5.6</version>
+        </dependency>
+
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aop</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+            <version>2.5.1</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.5.1</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <version>1.7.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>4.2.5.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-client</artifactId>
+            <version>1.19.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.aksw.gson</groupId>
+            <artifactId>gson-utils-core</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <version>20080701</version>
+        </dependency>
+
+
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>dnet-deps</id>
+            <name>dnet-dependencies</name>
+            <url>http://maven.research-infrastructures.eu/nexus/content/repositories/dnet-deps</url>
+            <layout>default</layout>
+        </repository>
+        <repository>
+            <id>dnet4-snapshots</id>
+            <name>D-Net 4 Snapshots</name>
+            <url>http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-snapshots</url>
+            <layout>default</layout>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>dnet4-releases</id>
+            <name>D-Net 4 Releases</name>
+            <url>http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-releases</url>
+            <layout>default</layout>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+</project>
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourcesCollection.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourcesCollection.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourcesCollection.java	(revision 49757)
@@ -0,0 +1,47 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import eu.dnetlib.domain.data.Repository;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by nikonas on 14/1/16.
+ */
+public class DatasourcesCollection implements IsSerializable{
+
+    private List<Repository> datasourcesOfUser;
+    private List<Repository> sharedDatasources;
+    private List<Repository> datasourcesOfOthers;
+
+    public DatasourcesCollection() {
+        this.datasourcesOfOthers = new ArrayList<Repository>();
+        this.datasourcesOfUser = new ArrayList<Repository>();
+        this.datasourcesOfOthers = new ArrayList<Repository>();
+    }
+
+    public List<Repository> getDatasourcesOfUser() {
+        return datasourcesOfUser;
+    }
+
+    public void setDatasourcesOfUser(List<Repository> datasourcesOfUser) {
+        this.datasourcesOfUser = datasourcesOfUser;
+    }
+
+    public List<Repository> getDatasourcesOfOthers() {
+        return datasourcesOfOthers;
+    }
+
+    public void setDatasourcesOfOthers(List<Repository> datasourcesOfOthers) {
+        this.datasourcesOfOthers = datasourcesOfOthers;
+    }
+
+    public List<Repository> getSharedDatasources() {
+        return sharedDatasources;
+    }
+
+    public void setSharedDatasources(List<Repository> sharedDatasources) {
+        this.sharedDatasources = sharedDatasources;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/MapConditions.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/MapConditions.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/MapConditions.java	(revision 49757)
@@ -0,0 +1,52 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by stefanos on 17/3/2017.
+ */
+public class MapConditions implements IsSerializable {
+
+    private String field;
+    private MapValueType fieldType;
+    private ConditionOperator operator;
+    private List<ConditionParams> listParams = new ArrayList<>();
+
+    public MapConditions() {
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public MapValueType getFieldType() {
+        return fieldType;
+    }
+
+    public void setFieldType(MapValueType fieldType) {
+        this.fieldType = fieldType;
+    }
+
+    public ConditionOperator getOperator() {
+        return operator;
+    }
+
+    public void setOperator(ConditionOperator operator) {
+        this.operator = operator;
+    }
+
+    public List<ConditionParams> getListParams() {
+        return listParams;
+    }
+
+    public void setListParams(List<ConditionParams> listParams) {
+        this.listParams = listParams;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourceVocabularies.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourceVocabularies.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/DatasourceVocabularies.java	(revision 49757)
@@ -0,0 +1,61 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by nikonas on 21/12/15.
+ */
+public class DatasourceVocabularies implements IsSerializable {
+
+    Map<String, String> countries;
+    List<Timezone> timezones;
+    Map<String, String> datasourceClasses;
+    List<String> typologies;
+    Map<String, String> compatibilityLevels;
+
+    public DatasourceVocabularies() {
+    }
+
+    public Map<String, String> getCountries() {
+        return countries;
+    }
+
+    public void setCountries(Map<String, String> countries) {
+        this.countries = countries;
+    }
+
+    public List<Timezone> getTimezones() {
+        return timezones;
+    }
+
+    public void setTimezones(List<Timezone> timezones) {
+        this.timezones = timezones;
+    }
+
+    public Map<String, String> getDatasourceClasses() {
+        return datasourceClasses;
+    }
+
+    public void setDatasourceClasses(Map<String, String> datasourceClasses) {
+        this.datasourceClasses = datasourceClasses;
+    }
+
+    public List<String> getTypologies() {
+        return typologies;
+    }
+
+    public void setTypologies(List<String> typologies) {
+        this.typologies = typologies;
+    }
+
+    public Map<String, String> getCompatibilityLevels() {
+        return compatibilityLevels;
+    }
+
+    public void setCompatibilityLevels(Map<String, String> compatibilityLevels) {
+        this.compatibilityLevels = compatibilityLevels;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/NotificationFrequency.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/NotificationFrequency.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/NotificationFrequency.java	(revision 49757)
@@ -0,0 +1,10 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 10-Mar-17.
+ */
+public enum NotificationFrequency implements IsSerializable {
+    never, realtime, daily, weekly, monthly
+}
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/MonitorApiImpl.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/MonitorApiImpl.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/MonitorApiImpl.java	(revision 49757)
@@ -0,0 +1,98 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import eu.dnetlib.api.functionality.ValidatorService;
+import eu.dnetlib.api.functionality.ValidatorServiceException;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.repo.manager.service.shared.JobsOfUser;
+import eu.dnetlib.repo.manager.service.shared.Constants;
+import gr.uoa.di.driver.util.ServiceLocator;
+import org.apache.log4j.Logger;
+import org.json.JSONException;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+
+@Component
+public class MonitorApiImpl implements MonitorApi {
+
+    @Resource(name = "validatorServiceLocator")
+    private ServiceLocator<ValidatorService> validatorServiceLocator;
+
+    private ValidatorService getValidationService() {
+        return this.validatorServiceLocator.getService();
+    }
+
+    public ServiceLocator<ValidatorService> getValidatorServiceLocator() {
+        return validatorServiceLocator;
+    }
+
+    public void setValidatorServiceLocator(ServiceLocator<ValidatorService> validatorServiceLocator) {
+        this.validatorServiceLocator = validatorServiceLocator;
+    }
+
+
+    private static final Logger LOGGER = Logger
+            .getLogger(MonitorApiImpl.class);
+
+    @Override
+    public JobsOfUser getJobsOfUser(String user,
+                                         String jobType,
+                                         String offset,
+                                         String limit,
+                                         String dateFrom,
+                                         String dateTo,
+                                         String validationStatus,
+                                         String includeJobsTotal) throws JSONException, ValidatorServiceException {
+
+        if (jobType.equals(""))
+            jobType = null;
+        if(dateFrom.equals(""))
+            dateFrom = null;
+        if(dateTo.equals(""))
+            dateTo = null;
+        if(validationStatus.equals(""))
+            validationStatus = null;
+
+
+        JobsOfUser retJobs = new JobsOfUser();
+        retJobs.setJobs(getValidationService().getStoredJobsNew(user, jobType, Integer.parseInt(offset),
+                Integer.parseInt(limit), dateFrom, dateTo, validationStatus));
+        if (Boolean.parseBoolean(includeJobsTotal)) {
+            retJobs.setTotalJobs(this.getJobsTotalNumberOfUser(user, jobType, null));
+            retJobs.setTotalJobsSuccessful(this.getJobsTotalNumberOfUser(user, jobType, Constants.VALIDATION_JOB_STATUS_SUCCESSFUL));
+            retJobs.setTotalJobsFailed(this.getJobsTotalNumberOfUser(user, jobType, Constants.VALIDATION_JOB_STATUS_FAILED));
+            retJobs.setTotalJobsOngoing(this.getJobsTotalNumberOfUser(user, jobType,Constants.VALIDATION_JOB_STATUS_ONGOING));
+        }
+        return retJobs;
+
+    }
+
+    private int getJobsTotalNumberOfUser(String user, String jobType, String validationStatus) throws ValidatorServiceException {
+        return  getValidationService().getStoredJobsTotalNumberNew(user, jobType, validationStatus);
+    }
+
+    @Override
+    public int getJobsOfUserPerValidationStatus(String user,
+                                                String jobType,
+                                                String validationStatus) throws JSONException {
+
+        try {
+            return getValidationService().getStoredJobsTotalNumberNew(user, jobType, validationStatus);
+        } catch (ValidatorServiceException e) {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+
+    @Override
+    public StoredJob getJobSummary(String jobId,
+                                   String groupBy) throws JSONException {
+
+        try {
+            return getValidationService().getStoredJob(Integer.parseInt(jobId), groupBy);
+        } catch (ValidatorServiceException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Publication.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Publication.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Publication.java	(revision 49757)
@@ -0,0 +1,185 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by claudio on 22/07/16.
+ */
+public class Publication implements IsSerializable {
+
+    private String originalId;
+
+    private List<String> titles = new ArrayList<>();
+
+    private List<String> abstracts = new ArrayList<>();
+
+    private String language;
+
+    private List<String> subjects = new ArrayList<>();
+
+    private List<String> creators = new ArrayList<>();
+
+    private String publicationdate;
+
+    private String publisher;
+
+    private String embargoenddate;
+
+    private List<String> contributor = new ArrayList<>();
+
+    private Journal journal;
+
+    private List<String> collectedFrom = new ArrayList<>();
+
+    private List<Pid> pids = new ArrayList<>();
+
+    private List<Instance> instances = new ArrayList<>();
+
+    private List<ExternalReference> externalReferences = new ArrayList<>();
+
+    private List<Project> projects = new ArrayList<>();
+
+    private List<Dataset> datasets = new ArrayList<>();
+
+    public Publication() {
+    }
+
+    public String getOriginalId() {
+        return originalId;
+    }
+
+    public void setOriginalId(String originalId) {
+        this.originalId = originalId;
+    }
+
+    public List<String> getTitles() {
+        return titles;
+    }
+
+    public void setTitles(List<String> titles) {
+        this.titles = titles;
+    }
+
+    public List<String> getAbstracts() {
+        return abstracts;
+    }
+
+    public void setAbstracts(List<String> abstracts) {
+        this.abstracts = abstracts;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public List<String> getSubjects() {
+        return subjects;
+    }
+
+    public void setSubjects(List<String> subjects) {
+        this.subjects = subjects;
+    }
+
+    public List<String> getCreators() {
+        return creators;
+    }
+
+    public void setCreators(List<String> creators) {
+        this.creators = creators;
+    }
+
+    public String getPublicationdate() {
+        return publicationdate;
+    }
+
+    public void setPublicationdate(String publicationdate) {
+        this.publicationdate = publicationdate;
+    }
+
+    public String getPublisher() {
+        return publisher;
+    }
+
+    public void setPublisher(String publisher) {
+        this.publisher = publisher;
+    }
+
+    public String getEmbargoenddate() {
+        return embargoenddate;
+    }
+
+    public void setEmbargoenddate(String embargoenddate) {
+        this.embargoenddate = embargoenddate;
+    }
+
+    public List<String> getContributor() {
+        return contributor;
+    }
+
+    public void setContributor(List<String> contributor) {
+        this.contributor = contributor;
+    }
+
+    public Journal getJournal() {
+        return journal;
+    }
+
+    public void setJournal(Journal journal) {
+        this.journal = journal;
+    }
+
+    public List<String> getCollectedFrom() {
+        return collectedFrom;
+    }
+
+    public void setCollectedFrom(List<String> collectedFrom) {
+        this.collectedFrom = collectedFrom;
+    }
+
+    public List<Pid> getPids() {
+        return pids;
+    }
+
+    public void setPids(List<Pid> pids) {
+        this.pids = pids;
+    }
+
+    public List<Instance> getInstances() {
+        return instances;
+    }
+
+    public void setInstances(List<Instance> instances) {
+        this.instances = instances;
+    }
+
+    public List<ExternalReference> getExternalReferences() {
+        return externalReferences;
+    }
+
+    public void setExternalReferences(List<ExternalReference> externalReferences) {
+        this.externalReferences = externalReferences;
+    }
+
+    public List<Project> getProjects() {
+        return projects;
+    }
+
+    public void setProjects(List<Project> projects) {
+        this.projects = projects;
+    }
+
+    public List<Dataset> getDatasets() {
+        return datasets;
+    }
+
+    public void setDatasets(List<Dataset> datasets) {
+        this.datasets = datasets;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/MonitorApi.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/MonitorApi.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/MonitorApi.java	(revision 49757)
@@ -0,0 +1,41 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import eu.dnetlib.api.functionality.ValidatorServiceException;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.repo.manager.service.shared.JobsOfUser;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "/monitor")
+public interface MonitorApi {
+
+    @RequestMapping(value = "/getJobsOfUser" , method = RequestMethod.GET,consumes = MediaType.APPLICATION_JSON_VALUE,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    JobsOfUser getJobsOfUser(@RequestBody String user,
+                             @RequestBody String jobType,
+                             @RequestBody String offset,
+                             @RequestBody String limit,
+                             @RequestBody String dateFrom,
+                             @RequestBody String dateTo,
+                             @RequestBody String validationStatus,
+                             @RequestBody String includeJobsTotal) throws JSONException, ValidatorServiceException;
+
+    @RequestMapping(value = "/getJobsOfUserPerValidationStatus" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    int getJobsOfUserPerValidationStatus(@RequestBody String user,
+                                         @RequestBody String jobType,
+                                         @RequestBody String validationStatus) throws JSONException;
+
+    @RequestMapping(value = "/getJobSummary" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    StoredJob getJobSummary(@RequestBody String jobId,
+                            @RequestBody String groupBy) throws JSONException;
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Journal.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Journal.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Journal.java	(revision 49757)
@@ -0,0 +1,52 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by claudio on 22/07/16.
+ */
+public class Journal implements IsSerializable {
+
+    private String name;
+
+    private String issn;
+
+    private String eissn;
+
+    private String lissn;
+
+    public Journal() {
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getIssn() {
+        return issn;
+    }
+
+    public void setIssn(String issn) {
+        this.issn = issn;
+    }
+
+    public String getEissn() {
+        return eissn;
+    }
+
+    public void setEissn(String eissn) {
+        this.eissn = eissn;
+    }
+
+    public String getLissn() {
+        return lissn;
+    }
+
+    public void setLissn(String lissn) {
+        this.lissn = lissn;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApi.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApi.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApi.java	(revision 49757)
@@ -0,0 +1,28 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import eu.dnetlib.repo.manager.service.shared.BrokerException;
+import eu.dnetlib.repo.manager.service.shared.broker.BrowseEntry;
+import eu.dnetlib.repo.manager.service.shared.broker.DatasourcesBroker;
+import eu.dnetlib.repo.manager.service.shared.broker.EventsPage;
+import org.json.JSONException;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping(value = "/broker")
+public interface BrokerApi {
+
+    @RequestMapping(value = "/getDatasourcesOfUser" , method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
+    DatasourcesBroker getDatasourcesOfUser(@RequestBody String params) throws BrokerException, JSONException;
+
+    @RequestMapping(value = "/getTopicsForDatasource/{datasourceName}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
+    List<BrowseEntry> getTopicsForDatasource(String datasourceName) throws BrokerException;
+
+    @RequestMapping(value = "/advancedShowEvents" , method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
+    EventsPage advancedShowEvents(@RequestBody String params) throws BrokerException, JSONException;
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/MapValueType.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/MapValueType.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/MapValueType.java	(revision 49757)
@@ -0,0 +1,10 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 17/3/2017.
+ */
+public enum MapValueType implements IsSerializable {
+    STRING, INTEGER, FLOAT, DATE, BOOLEAN, LIST_STRING, LIST_INTEGER, LIST_FLOAT, LIST_DATE, LIST_BOOLEAN;
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/utils/OaiTools.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/utils/OaiTools.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/utils/OaiTools.java	(revision 49757)
@@ -0,0 +1,146 @@
+package eu.dnetlib.repo.manager.service.utils;
+
+import org.apache.log4j.Logger;
+import org.dom4j.io.DOMWriter;
+import org.w3c.dom.Document;
+import se.kb.oai.pmh.*;
+import se.kb.oai.pmh.Set;
+
+import javax.net.ssl.*;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.*;
+
+public class OaiTools {
+
+	{
+		disableSslVerification();
+	}
+
+	private static Logger LOGGER = Logger.getLogger(OaiTools.class);
+
+	public static List<String> getSetsOfRepo(String baseUrl) throws Exception {
+		try {
+			LOGGER.debug("Getting sets of repository " + baseUrl);
+			OaiPmhServer harvester = new OaiPmhServer(baseUrl);
+			SetsList setList = harvester.listSets();
+			ResumptionToken token = setList.getResumptionToken();
+			List<Set> sets = new ArrayList<Set>();
+			sets.addAll(setList.asList());
+			while (token != null) {
+				setList = harvester.listSets(token);
+				token = setList.getResumptionToken();
+				sets.addAll(setList.asList());
+			}
+
+			List<String> ret = new ArrayList<String>();
+			for (Set set : sets) {
+				ret.add(set.getSpec().trim());
+			}
+			if (ret.size() > 0 )
+				Collections.sort(ret);
+			return ret;
+
+		} catch (Exception e) {
+			LOGGER.error("Error getting sets of repository " + baseUrl, e);
+			return new ArrayList<String>();
+			//throw e;
+		}
+	}
+
+	public static boolean identifyRepository(String baseUrl) throws Exception {
+		LOGGER.debug("sending identify request to repo " + baseUrl);
+
+		OaiPmhServer harvester = new OaiPmhServer(baseUrl);
+
+		if (baseUrl.trim().isEmpty()) {
+			return false;
+		}
+
+		try {
+			Identification identification = harvester.identify();
+			DOMWriter d4Writer = new DOMWriter();
+			Document d = d4Writer.write(identification.getResponse());
+
+			return verifyIdentify(d);
+		} catch (Exception e) {
+			LOGGER.debug("Error verifying identify response", e);
+			throw e;
+		}
+	}
+
+	private static boolean verifyIdentify(Document doc) throws XPathExpressionException {
+		NamespaceContext ctx = new NamespaceContext() {
+			public String getNamespaceURI(String prefix) {
+				String uri;
+				if (prefix.equals("oai"))
+					uri = "http://www.openarchives.org/OAI/2.0/";
+				else
+					uri = null;
+				return uri;
+			}
+
+			// Dummy implementation - not used!
+			public Iterator<String> getPrefixes(String val) {
+				return null;
+			}
+
+			// Dummy implemenation - not used!
+			public String getPrefix(String uri) {
+				return null;
+			}
+		};
+
+		// Now the XPath expression
+
+		String xpathStr = "//oai:OAI-PMH/oai:Identify";
+		XPathFactory xpathFact = XPathFactory.newInstance();
+		XPath xpath = xpathFact.newXPath();
+		xpath.setNamespaceContext(ctx);
+		String result = xpath.evaluate(xpathStr, doc);
+
+		return (result != null && !result.equals(""));
+	}
+
+	private static void disableSslVerification() {
+		try
+		{
+			LOGGER.debug("disabling ssl verification");
+			// Create a trust manager that does not validate certificate chains
+			TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
+				public X509Certificate[] getAcceptedIssuers() {
+					return null;
+				}
+				public void checkClientTrusted(X509Certificate[] certs, String authType) {
+				}
+				public void checkServerTrusted(X509Certificate[] certs, String authType) {
+				}
+			}
+			};
+
+			// Install the all-trusting trust manager
+			SSLContext sc = SSLContext.getInstance("SSL");
+			sc.init(null, trustAllCerts, new java.security.SecureRandom());
+			HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+
+			// Create all-trusting host name verifier
+			HostnameVerifier allHostsValid = new HostnameVerifier() {
+				public boolean verify(String hostname, SSLSession session) {
+					return true;
+				}
+			};
+
+			// Install the all-trusting host verifier
+			HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
+		} catch (NoSuchAlgorithmException e) {
+			LOGGER.error("disabling ssl verification", e);
+		} catch (KeyManagementException e) {
+			LOGGER.error("error while disabling ssl verification", e);
+		}
+	}
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Pid.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Pid.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Pid.java	(revision 49757)
@@ -0,0 +1,32 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by claudio on 22/07/16.
+ */
+public class Pid implements IsSerializable {
+
+    private String value;
+
+    private String type;
+
+    public Pid() {
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/resources/application-context.xml
===================================================================
--- modules/uoa-repository-manager-service/src/main/resources/application-context.xml	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/resources/application-context.xml	(revision 49757)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:task="http://www.springframework.org/schema/task"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+    <!--<bean id="validationService" class="eu.dnetlib.repo.manager.service.controllers.ValidatorApiImpl">
+        <property name="validatorServiceLocator" ref="validatorServiceLocator"/>
+    </bean>
+
+    <bean id="monitorService" class="eu.dnetlib.repo.manager.service.controllers.MonitorApiImpl">
+        <property name="validatorServiceLocator" ref="validatorServiceLocator"/>
+    </bean>-->
+
+    <context:property-placeholder location="classpath*:/application.properties" />
+</beans>
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/OpenAireEventPayload.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/OpenAireEventPayload.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/OpenAireEventPayload.java	(revision 49757)
@@ -0,0 +1,52 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by claudio on 11/07/16.
+ */
+public class OpenAireEventPayload implements IsSerializable {
+
+    private Publication publication;
+
+    private Publication highlight;
+
+    private Provenance provenance;
+
+    private float trust;
+
+    public OpenAireEventPayload() {
+    }
+
+    public Publication getPublication() {
+        return publication;
+    }
+
+    public void setPublication(Publication publication) {
+        this.publication = publication;
+    }
+
+    public Publication getHighlight() {
+        return highlight;
+    }
+
+    public void setHighlight(Publication highlight) {
+        this.highlight = highlight;
+    }
+
+    public Provenance getProvenance() {
+        return provenance;
+    }
+
+    public void setProvenance(Provenance provenance) {
+        this.provenance = provenance;
+    }
+
+    public float getTrust() {
+        return trust;
+    }
+
+    public void setTrust(float trust) {
+        this.trust = trust;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/email-texts.properties
===================================================================
--- modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/email-texts.properties	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/email-texts.properties	(revision 49757)
@@ -0,0 +1,7 @@
+user.registration.mail.subject = OpenAIRE Account Activation
+user.registration.mail.message = Please follow this link to activate your account
+
+user.forgotPassword.mail.Subject = OpenAIRE Reset Password Request
+user.forgotPassword.mail.Body1 = To complete your password reset please follow this link
+user.forgotPassword.mail.Body2 = Security Code
+
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/DatasourcesBroker.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/DatasourcesBroker.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/DatasourcesBroker.java	(revision 49757)
@@ -0,0 +1,40 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import eu.dnetlib.repo.manager.service.shared.Tuple;
+
+import java.util.List;
+
+/**
+ * Created by stefanos on 31/10/2016.
+ */
+public class DatasourcesBroker implements IsSerializable {
+
+    private List<Tuple<BrowseEntry, String>> datasourcesOfUser;
+    private List<Tuple<BrowseEntry, String>> sharedDatasources;
+    private List<Tuple<BrowseEntry, String>> datasourcesOfOthers;
+
+    public List<Tuple<BrowseEntry, String>> getDatasourcesOfUser() {
+        return datasourcesOfUser;
+    }
+
+    public void setDatasourcesOfUser(List<Tuple<BrowseEntry, String>> datasourcesOfUser) {
+        this.datasourcesOfUser = datasourcesOfUser;
+    }
+
+    public List<Tuple<BrowseEntry, String>> getSharedDatasources() {
+        return sharedDatasources;
+    }
+
+    public void setSharedDatasources(List<Tuple<BrowseEntry, String>> sharedDatasources) {
+        this.sharedDatasources = sharedDatasources;
+    }
+
+    public List<Tuple<BrowseEntry, String>> getDatasourcesOfOthers() {
+        return datasourcesOfOthers;
+    }
+
+    public void setDatasourcesOfOthers(List<Tuple<BrowseEntry, String>> datasourcesOfOthers) {
+        this.datasourcesOfOthers = datasourcesOfOthers;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/BrowseEntry.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/BrowseEntry.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/BrowseEntry.java	(revision 49757)
@@ -0,0 +1,42 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 26/10/2016.
+ */
+public class BrowseEntry implements Comparable<BrowseEntry>, IsSerializable{
+
+    public String value;
+    public Long size;
+
+    public BrowseEntry() {
+    }
+
+    public BrowseEntry(final String value, final Long size) {
+        this.value = value;
+        this.size = size;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public Long getSize() {
+        return size;
+    }
+
+    public void setSize(Long size) {
+        this.size = size;
+    }
+
+    @Override
+    public int compareTo(final BrowseEntry bv) {
+        return Long.compare(getSize(), bv.getSize());
+    }
+
+}
Index: modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/log4j.properties
===================================================================
--- modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/log4j.properties	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/log4j.properties	(revision 49757)
@@ -0,0 +1,37 @@
+log4j.rootLogger = WARN, R
+
+log4j.logger.eu.dnetlib = DEBUG
+log4j.logger.eu.dnetlib.clients.data.datasourcemanager.ws.Converter = FATAL
+log4j.logger.org.springframework = DEBUG, S
+log4j.additivity.org.springframework = false
+
+log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL
+log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL
+
+log4j.logger.eu.dnetlib.repo.manager=DEBUG
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+#log4j.appender.R.File=/var/log/dnet/repo-manager/repo-manager-gui.log
+log4j.appender.R.File=/tmp/repo-manager-service.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+log4j.appender.S=org.apache.log4j.RollingFileAppender
+#log4j.appender.S.File=/var/log/dnet/repo-manager/repo-manager-gui-spring.log
+log4j.appender.S.File=/tmp/repo-manager-service-spring.log
+log4j.appender.S.MaxFileSize=10MB
+log4j.appender.S.MaxBackupIndex=10
+log4j.appender.S.layout=org.apache.log4j.PatternLayout
+log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+
+#org.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger
+#
+#log4j.rootLogger=INFO, CONSOLE
+#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+#log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+#log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+#
+#log4j.logger.eu.dnetlib.repo.manager=DEBUG
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Subscription.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Subscription.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Subscription.java	(revision 49757)
@@ -0,0 +1,99 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+/**
+ * Created by stefanos on 10-Mar-17.
+ */
+
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+import eu.dnetlib.repo.manager.service.shared.NotificationMode;
+
+import java.util.Date;
+import java.util.List;
+
+
+public class Subscription implements IsSerializable {
+
+    private String subscriptionId;
+
+    private String subscriber;
+
+    private String topic;
+
+    private NotificationFrequency frequency;
+
+    private NotificationMode mode;
+
+    private Date lastNotificationDate;
+
+    private String conditions;
+
+    private List<MapConditions> conditionsAsList;
+
+    public Subscription() {
+    }
+
+    public String getSubscriptionId() {
+        return subscriptionId;
+    }
+
+    public void setSubscriptionId(String subscriptionId) {
+        this.subscriptionId = subscriptionId;
+    }
+
+    public String getSubscriber() {
+        return subscriber;
+    }
+
+    public void setSubscriber(String subscriber) {
+        this.subscriber = subscriber;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public NotificationFrequency getFrequency() {
+        return frequency;
+    }
+
+    public void setFrequency(NotificationFrequency frequency) {
+        this.frequency = frequency;
+    }
+
+    public NotificationMode getMode() {
+        return mode;
+    }
+
+    public void setMode(NotificationMode mode) {
+        this.mode = mode;
+    }
+
+    public Date getLastNotificationDate() {
+        return lastNotificationDate;
+    }
+
+    public void setLastNotificationDate(Date lastNotificationDate) {
+        this.lastNotificationDate = lastNotificationDate;
+    }
+
+    public String getConditions() {
+        return conditions;
+    }
+
+    public void setConditions(String conditions) {
+        this.conditions = conditions;
+    }
+
+    public List<MapConditions> getConditionsAsList() {
+        return conditionsAsList;
+    }
+
+    public void setConditionsAsList(List<MapConditions> conditionsAsList) {
+        this.conditionsAsList = conditionsAsList;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Dataset.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Dataset.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Dataset.java	(revision 49757)
@@ -0,0 +1,58 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.List;
+
+public class Dataset implements IsSerializable {
+
+    private List<String> titles;
+
+    private List<String> collectedFrom;
+
+    private List<Pid> pids;
+
+    private List<Instance> instances;
+
+    public Dataset() {
+    }
+
+    public Dataset(final List<String> titles, final List<String> collectedFrom, final List<Pid> pids, final List<Instance> instances) {
+        this.titles = titles;
+        this.collectedFrom = collectedFrom;
+        this.pids = pids;
+        this.instances = instances;
+    }
+
+    public List<String> getTitles() {
+        return titles;
+    }
+
+    public void setTitles(List<String> titles) {
+        this.titles = titles;
+    }
+
+    public List<String> getCollectedFrom() {
+        return collectedFrom;
+    }
+
+    public void setCollectedFrom(List<String> collectedFrom) {
+        this.collectedFrom = collectedFrom;
+    }
+
+    public List<Pid> getPids() {
+        return pids;
+    }
+
+    public void setPids(List<Pid> pids) {
+        this.pids = pids;
+    }
+
+    public List<Instance> getInstances() {
+        return instances;
+    }
+
+    public void setInstances(List<Instance> instances) {
+        this.instances = instances;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/AdvQueryObject.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/AdvQueryObject.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/AdvQueryObject.java	(revision 49757)
@@ -0,0 +1,99 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AdvQueryObject implements IsSerializable {
+
+    private String datasource = "";
+    private String topic = "";
+    private List<String> titles = new ArrayList<>();
+    private List<String> subjects = new ArrayList<>();
+    private List<String> authors = new ArrayList<>();
+    private List<Range> dates = new ArrayList<>();
+    private Range trust = new Range("0", "1");
+
+    private long page = 0;
+
+    public AdvQueryObject() {
+    }
+
+    public AdvQueryObject(String datasource, String topic, List<String> titles, List<String> subjects, List<String> authors,
+                          List<Range> dates, Range trust, long page) {
+        this.datasource = datasource;
+        this.topic = topic;
+        this.titles = titles;
+        this.subjects = subjects;
+        this.authors = authors;
+        this.dates = dates;
+        this.trust = trust;
+        this.page = page;
+    }
+
+    public String getDatasource() {
+        return datasource;
+    }
+
+    public void setDatasource(String datasource) {
+        this.datasource = datasource;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public List<String> getTitles() {
+        return titles;
+    }
+
+    public void setTitles(List<String> titles) {
+        this.titles = titles;
+    }
+
+    public List<String> getSubjects() {
+        return subjects;
+    }
+
+    public void setSubjects(List<String> subjects) {
+        this.subjects = subjects;
+    }
+
+    public List<String> getAuthors() {
+        return authors;
+    }
+
+    public void setAuthors(List<String> authors) {
+        this.authors = authors;
+    }
+
+    public List<Range> getDates() {
+        return dates;
+    }
+
+    public void setDates(List<Range> dates) {
+        this.dates = dates;
+    }
+
+    public Range getTrust() {
+        return trust;
+    }
+
+    public void setTrust(Range trust) {
+        this.trust = trust;
+    }
+
+    public long getPage() {
+        return page;
+    }
+
+    public void setPage(long page) {
+        this.page = page;
+    }
+}
+
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ConditionParams.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ConditionParams.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/ConditionParams.java	(revision 49757)
@@ -0,0 +1,36 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 17/3/2017.
+ */
+public class ConditionParams implements IsSerializable {
+
+    private String value;
+    private String otherValue;
+
+    public ConditionParams() {
+    }
+
+    public ConditionParams(final String value, final String otherValue) {
+        this.value = value;
+        this.otherValue = otherValue;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    public void setValue(final String value) {
+        this.value = value;
+    }
+
+    public String getOtherValue() {
+        return this.otherValue;
+    }
+
+    public void setOtherValue(final String otherValue) {
+        this.otherValue = otherValue;
+    }
+}
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Range.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Range.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/broker/Range.java	(revision 49757)
@@ -0,0 +1,38 @@
+package eu.dnetlib.repo.manager.service.shared.broker;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefanos on 26/10/2016.
+ */
+public class Range implements IsSerializable {
+
+    private String min;
+    private String max;
+
+    public Range() {
+    }
+
+    public Range(final String min, final String max) {
+        super();
+        this.min = min;
+        this.max = max;
+    }
+
+    public String getMin() {
+        return this.min;
+    }
+
+    public void setMin(final String min) {
+        this.min = min;
+    }
+
+    public String getMax() {
+        return this.max;
+    }
+
+    public void setMax(final String max) {
+        this.max = max;
+    }
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/InterfaceInformation.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/InterfaceInformation.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/InterfaceInformation.java	(revision 49757)
@@ -0,0 +1,42 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.List;
+
+/**
+ * Created by nikonas on 7/1/16.
+ */
+public class InterfaceInformation implements IsSerializable {
+
+    private boolean identified;
+    private List<String> sets;
+    private List<String> adminEmails;
+
+    public InterfaceInformation() {
+    }
+
+    public boolean isIdentified() {
+        return identified;
+    }
+
+    public void setIdentified(boolean identified) {
+        this.identified = identified;
+    }
+
+    public List<String> getSets() {
+        return sets;
+    }
+
+    public void setSets(List<String> sets) {
+        this.sets = sets;
+    }
+
+    public List<String> getAdminEmails() {
+        return adminEmails;
+    }
+
+    public void setAdminEmails(List<String> adminEmails) {
+        this.adminEmails = adminEmails;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Constants.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Constants.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Constants.java	(revision 49757)
@@ -0,0 +1,44 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by nikonas on 23/12/15.
+ */
+
+public class Constants implements IsSerializable {
+
+    public static final String MODE_LOCAL = "local";
+    public static final String MODE_DNET = "dnet";
+    public static final String MODE_LDAP = "ldap";
+    public static final String ENV_LAREFERENCIA = "lareferencia";
+
+    public static final String ENV_MINCYT = "mincyt";
+    public static final String ENV_OPENAIRE_PRODUCTION = "openaire-production";
+    public static final String ENV_OPENAIRE_BETA = "openaire-beta";
+    public static final String ENV_DEVELOPMENT = "development";
+    public static final String LATITUDE_PATTERN = "^(\\+|-)?(?:90(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\\.[0-9]{1,6})?))$";
+
+    public static final String LONGITUDE_PATTERN = "^(\\+|-)?(?:180(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\\.[0-9]{1,6})?))$";
+    public static final String EMAIL_PATTERN = "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$";
+
+
+    public static final String REPOSITORY_MODE_OPENDOAR = "opendoar";
+    public static final String REPOSITORY_MODE_RE3DATA = "re3data";
+    public static final String REPOSITORY_MODE_JOURNAL = "journal";
+    public static final String REPOSITORY_MODE_AGGREGATOR = "aggregator";
+    public static final String REPOSITORY_MODE_ALL = "all";
+
+    public static final String VALIDATION_MODE_LITERATURE = "literature";
+    public static final String VALIDATION_MODE_DATA = "data";
+    public static final String VALIDATION_MODE_CRIS = "cris";
+
+    public static final String VALIDATION_JOB_TYPE_COMPATIBILITY_TEST = "Compatibility Test";
+    public static final String VALIDATION_JOB_TYPE_REGISTRATION_REQUEST = "Registration Request";
+    public static final String VALIDATION_JOB_TYPE_WORKFLOW_REQUEST = "Workflow Request";
+
+    public static final String VALIDATION_JOB_STATUS_SUCCESSFUL = "successful";
+    public static final String VALIDATION_JOB_STATUS_FAILED = "failed";
+    public static final String VALIDATION_JOB_STATUS_ONGOING = "ongoing";
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/RepositoryServiceException.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/RepositoryServiceException.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/RepositoryServiceException.java	(revision 49757)
@@ -0,0 +1,53 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by nikonas on 7/12/15.
+ */
+public class RepositoryServiceException extends Exception implements IsSerializable {
+
+    public enum ErrorCode implements IsSerializable {
+        REPOSITORY_ALREADY_EXISTS,
+        SQL_ERROR,
+        NOT_ACTIVATED,
+        ACTIVATION_ERROR,
+        LDAP_ERROR,
+        MAIL_ALREADY_EXISTS,
+        GENERAL_ERROR,
+        ALREADY_ACTIVATED,
+        INVALID_EMAIL_FORMAT,
+        NO_REPOS_FOR_THIS_COUNTRY, REPOSITORY_NOT_EXISTS, INCORRECT_CAPTCHA
+    }
+
+    private ErrorCode errorCode = null;
+
+    public RepositoryServiceException() {
+    }
+
+    public RepositoryServiceException(ErrorCode errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public RepositoryServiceException(String message, Throwable cause, ErrorCode errorCode) {
+        super(message, cause);
+
+        this.errorCode = errorCode;
+    }
+
+    public RepositoryServiceException(String message, ErrorCode errorCode) {
+        super(message);
+
+        this.errorCode = errorCode;
+    }
+
+    public RepositoryServiceException(Throwable cause, ErrorCode errorCode) {
+        super(cause);
+
+        this.errorCode = errorCode;
+    }
+
+    public ErrorCode getErrorCode() {
+        return errorCode;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Tuple.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Tuple.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Tuple.java	(revision 49757)
@@ -0,0 +1,36 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * Created by stefania on 12/18/15.
+ */
+public class Tuple<K, V> implements IsSerializable {
+
+    private K first;
+    private V second;
+
+    public Tuple() {
+    }
+
+    public Tuple(K first, V second) {
+        this.first = first;
+        this.second = second;
+    }
+
+    public K getFirst() {
+        return first;
+    }
+
+    public void setFirst(K first) {
+        this.first = first;
+    }
+
+    public V getSecond() {
+        return second;
+    }
+
+    public void setSecond(V second) {
+        this.second = second;
+    }
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Timezone.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Timezone.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/shared/Timezone.java	(revision 49757)
@@ -0,0 +1,17 @@
+package eu.dnetlib.repo.manager.service.shared;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public class Timezone implements IsSerializable {
+	public String name;
+	public double offset;
+
+	public Timezone(){
+	}
+
+	public Timezone(String name, double offset) {
+		super();
+		this.name = name;
+		this.offset = offset;
+	}
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/ValidatorApiImpl.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/ValidatorApiImpl.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/ValidatorApiImpl.java	(revision 49757)
@@ -0,0 +1,132 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import eu.dnetlib.api.functionality.ValidatorServiceException;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.repo.manager.service.utils.OaiTools;
+import gr.uoa.di.driver.util.ServiceLocator;
+import eu.dnetlib.domain.functionality.validator.JobForValidation;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.repo.manager.service.shared.Constants;
+
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import eu.dnetlib.api.functionality.ValidatorService;
+import org.apache.log4j.Logger;
+import org.json.JSONException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
+
+@Component
+public class ValidatorApiImpl implements ValidatorApi{
+
+    @Autowired
+    private MonitorApiImpl monitorApi;
+
+    @Resource(name = "validatorServiceLocator")
+    private ServiceLocator<ValidatorService> validatorServiceLocator;
+
+    private ValidatorService getValidationService() {
+        return this.validatorServiceLocator.getService();
+    }
+
+    public ServiceLocator<ValidatorService> getValidatorServiceLocator() {
+        return validatorServiceLocator;
+    }
+
+    public void setValidatorServiceLocator(ServiceLocator<ValidatorService> validatorServiceLocator) {
+        this.validatorServiceLocator = validatorServiceLocator;
+    }
+
+    private Map<String, List<RuleSet>> rulesetMap = new ConcurrentHashMap<String, List<RuleSet>>();
+
+    private static final Logger LOGGER = Logger
+            .getLogger(ValidatorApiImpl.class);
+
+    @PostConstruct
+    private void loadRules(){
+
+        try {
+            for (RuleSet ruleSet : getValidationService().getRuleSets()) {
+                if (ruleSet.getVisibility() != null && ruleSet.getVisibility().contains("development")) {
+                    String key = "";
+                    if (ruleSet.getGuidelinesAcronym().matches("^openaire[1-9].0_data$"))
+                        key = Constants.VALIDATION_MODE_DATA;
+                    else if (ruleSet.getGuidelinesAcronym().matches("^openaire[1-9].0$") || ruleSet.getGuidelinesAcronym().equals("driver"))
+                        key = Constants.VALIDATION_MODE_LITERATURE;
+                    else if (ruleSet.getGuidelinesAcronym().matches("^openaire[1-9].0_cris$"))
+                        key = Constants.VALIDATION_MODE_CRIS;
+
+                    if (rulesetMap.containsKey(key))
+                        rulesetMap.get(key).add(ruleSet);
+                    else {
+                        List<RuleSet> ruleSets = new ArrayList<RuleSet>();
+                        ruleSets.add(ruleSet);
+                        rulesetMap.put(key, ruleSets);
+                    }
+                }
+            }
+        } catch (ValidatorServiceException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    @Override
+    public void submitJobForValidation(JobForValidation jobForValidation) {
+        try {
+            this.getValidationService().submitValidationJob(jobForValidation);
+        } catch (ValidatorServiceException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void reSubmitJobForValidation(String jobId) throws JSONException {
+
+        StoredJob job = monitorApi.getJobSummary(jobId,"all");
+        Set<Integer> contentRules = new HashSet<Integer>();
+        Set<Integer> usageRules = new HashSet<Integer>();
+
+        RuleSet ruleSet = null;
+        for (List<RuleSet> ruleSets : this.rulesetMap.values()) {
+            for (RuleSet rSet : ruleSets)
+                if (rSet.getGuidelinesAcronym().equals(job.getDesiredCompatibilityLevel())) {
+                    ruleSet = rSet;
+                    break;
+                }
+        }
+
+        for (int ruleId : job.getRules()) {
+            if (ruleSet.getContentRulesIds().contains(ruleId))
+                contentRules.add(ruleId);
+            else if (ruleSet.getUsageRulesIds().contains(ruleId))
+                usageRules.add(ruleId);
+        }
+        if (!contentRules.isEmpty())
+            job.setSelectedContentRules(contentRules);
+        if (!usageRules.isEmpty())
+            job.setSelectedUsageRules(usageRules);
+        this.submitJobForValidation(job);
+    }
+
+    @Override
+    public List<RuleSet> getRuleSets(@PathVariable("mode") String mode) {
+        return rulesetMap.get(mode);
+    }
+
+    @Override
+    public List<String> getSetsOfRepository(String url) {
+        try {
+            return OaiTools.getSetsOfRepo(url);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java	(revision 49757)
@@ -0,0 +1,304 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+import eu.dnetlib.domain.enabling.Vocabulary;
+import eu.dnetlib.repo.manager.service.shared.Country;
+import eu.dnetlib.repo.manager.service.utils.Converter;
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+import gr.uoa.di.driver.enabling.vocabulary.VocabularyLoader;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+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.*;
+import java.util.concurrent.ConcurrentHashMap;
+
+
+@Component
+public class RepositoryApiImpl implements RepositoryApi {
+
+    @Value("${api.baseAddress}")
+    private String baseAddress;
+
+    private RestTemplate restTemplate = null;
+
+    private final String[] vocabularyNames = {"dnet:countries", "dnet:datasource_typologies", "dnet:compatibilityLevel"};
+
+    @Autowired
+    private VocabularyLoader vocabularyLoader;
+
+    private Map<String, Vocabulary> vocabularyMap = new ConcurrentHashMap<String, Vocabulary>();
+
+
+    @PostConstruct
+    private void init(){
+        restTemplate = new RestTemplate();
+        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
+
+        for (String vocName : vocabularyNames) {
+            vocabularyMap.put(vocName, vocabularyLoader.getVocabulary(vocName, Locale.ENGLISH, Locale.ROOT));
+        }
+
+    }
+
+    @Override
+    public Country[] getCountries()  {
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/countries")
+                .build().encode();
+        return restTemplate.getForObject(uriComponents.toUri(),Country[].class);
+    }
+
+
+    @Override
+    public Set<String> getRepositoriesByCountry(@PathVariable("country") String country) throws JSONException {
+
+
+        int page = 1;
+        int size = 10;
+        String mode = "openaire____::opendoar";
+
+        UriComponents uriComponents = UriComponentsBuilder
+                                            .fromHttpUrl(baseAddress + "/ds/search/country/")
+                                            .path("/{page}/{size}/")
+                                            .queryParam("country",country)
+                                            .build().expand(page,size).encode();
+
+        String rs = restTemplate.getForObject(uriComponents.toUri(), String.class);
+        Set<String> resultSet = new HashSet<>();
+        while(!rs.equals("[]")){
+            List<Repository> rep = Converter.jsonToRepositoryList(new JSONArray(rs));
+
+            Collection<String> repos = this.getRepositoriesByMode(mode,rep);
+            this.addRepos(resultSet,repos);
+            
+            page+=1;
+            uriComponents = UriComponentsBuilder
+                    .fromHttpUrl(baseAddress + "/ds/search/country/")
+                    .path("/{page}/{size}/")
+                    .queryParam("country",country)
+                    .build().expand(page,size).encode();
+            rs = restTemplate.getForObject(uriComponents.toUri(), String.class);
+        }
+
+        return resultSet;
+    }
+
+    private void addRepos(Set<String> resultSet, Collection<String> repos) {
+        for(String s : repos)
+            if(!resultSet.contains(s))
+                resultSet.add(s);
+    }
+
+    private Collection<String> getRepositoriesByMode(String mode, List<Repository> rs) {
+
+        List<String> reps = new ArrayList<>();
+
+        for(Repository r : rs)
+            if(r.getCollectedFrom().equals(mode))
+                reps.add(r.getOfficialName());
+
+        return reps;
+    }
+
+    @Override
+    public List<Repository> getRepositoriesOfUser(@PathVariable("userEmail") String userEmail,
+                                                  @PathVariable("page") String page,
+                                                  @PathVariable("size") String size) throws JSONException {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/search/email/")
+                .path("/{page}/{size}/")
+                .queryParam("contactemail",userEmail)
+                .build().expand(page,size).encode();
+
+        String rs = restTemplate.getForObject(uriComponents.toUri(), String.class);
+        return Converter.jsonToRepositoryList(new JSONArray(rs));
+    }
+
+    @Override
+    public Repository getRepositoryById(@PathVariable("id") String id) throws JSONException {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/get/")
+                .path("/{id}/")
+                .build().expand(id).encode();
+
+        String rs = restTemplate.getForObject(uriComponents.toUri(), String.class);
+        return  Converter.jsonToRepositoryObject(new JSONObject(rs));
+    }
+
+    @Override
+    public List<Repository> getRepositoriesByName(@PathVariable("name") String name,
+                                                  @PathVariable("page") String page,
+                                                  @PathVariable("size") String size) throws JSONException {
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/search/name/")
+                .path("/{page}/{size}")
+                .queryParam("name",name)
+                .build().expand(page,size).encode();
+
+        String rs = restTemplate.getForObject(uriComponents.toUri(), String.class);
+        return Converter.jsonToRepositoryList(new JSONArray(rs));
+    }
+
+    @Override
+    public RepositoryInterface getRepositoyInterface(@PathVariable("id") String id) throws JSONException {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/service/")
+                .path("/{id}/")
+                .build().expand(id).encode();
+
+        String rs = restTemplate.getForObject(uriComponents.toUri(),String.class);
+        return  Converter.jsonToRepositoryInterfaceObject(new JSONArray(rs).getJSONObject(0));
+    }
+
+    @Override
+    public String addRepository(@RequestBody Repository repository) throws JSONException {
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/add/")
+                .build()
+                .encode();
+        return restTemplate.postForObject(uriComponents.toUri(),Converter.repositoryObjectToJson(repository),String.class);
+    }
+
+    @Override
+    public String addRepositoryInterface(RepositoryInterface repositoryInterface) throws JSONException {
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/service/add/")
+                .build()
+                .encode();
+        return restTemplate.postForObject(uriComponents.toUri(), Converter.repositoryInterfaceObjectToJson(repositoryInterface),String.class);
+    }
+
+    @Override
+    public List<String> getDnetCountries() {
+        return Converter.readFile("countries.txt");
+    }
+
+    @Override
+    public List<String> getTypologies() {
+        return Converter.readFile("typologies.txt");
+    }
+
+    @Override
+    public List<String> getTimezones() {
+        return Converter.readFile("timezones.txt");
+    }
+
+    @Override
+    public String updateManagedStatus(@RequestParam(value = "id")   String id,
+                                      @RequestParam(value = "managed")  String managed) {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/manage/")
+                .queryParam("id",id)
+                .queryParam("managed",managed)
+                .build().encode();
+
+        return restTemplate.postForObject(uriComponents.toUri(), null,String.class);
+    }
+
+    @Override
+    public String updateEnglishName(@RequestParam(value = "id")   String id,
+                                    @RequestParam(value = "englishname")  String englishName) {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/manage/")
+                .queryParam("dsId",id)
+                .queryParam("englishname",englishName)
+                .build().encode();
+        return restTemplate.postForObject(uriComponents.toUri(), null,String.class);
+
+
+    }
+
+    @Override
+    public String updateLatitude(@RequestParam(value = "id")   String id,
+                                 @RequestParam(value = "managed")  String latitude) {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/manage/")
+                .queryParam("dsId",id)
+                .queryParam("latitude",latitude)
+                .build().encode();
+        return restTemplate.postForObject(uriComponents.toUri(), null,String.class);
+    }
+
+    @Override
+    public String updateLongitude(@RequestParam(value = "id")   String id,
+                                  @RequestParam(value = "longitude")  String longitude) {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/manage/")
+                .queryParam("dsId",id)
+                .queryParam("longitude",longitude)
+                .build().encode();
+        return restTemplate.postForObject(uriComponents.toUri(), null,String.class);
+    }
+
+    @Override
+    public String updateOfficialName(@RequestParam(value = "id")   String id,
+                                     @RequestParam(value = "officialname")  String officialname) {
+
+        UriComponents uriComponents = UriComponentsBuilder
+                .fromHttpUrl(baseAddress + "/ds/manage/")
+                .queryParam("dsId",id)
+                .queryParam("officialname",officialname)
+                .build().encode();
+        return restTemplate.postForObject(uriComponents.toUri(), null,String.class);
+    }
+
+    @Override
+    public String getUrlsOfUserRepos(@PathVariable("user_email") String user_email) {
+
+        //TODO create service a join datasource d for user u method
+
+        return null;
+    }
+
+    @Override
+    public List<String> getDatasourceVocabularies(@PathVariable("mode") String mode) {
+
+        List<String> resultSet = new ArrayList<>();
+        for (Map.Entry<String, String> entry : this.getVocabulary("dnet:datasource_typologies").getAsMap().entrySet()) {
+            if (mode.equalsIgnoreCase("aggregator")) {
+                if (entry.getKey().contains("aggregator"))
+                    resultSet.add(entry.getValue());
+            } else if (mode.equalsIgnoreCase("journal")) {
+                if (entry.getKey().contains("journal"))
+                    resultSet.add(entry.getValue());
+            } else if (mode.equalsIgnoreCase("opendoar")) {
+                if (entry.getKey().contains("pubsrepository"))
+                    resultSet.add(entry.getValue());
+            } else if (mode.equalsIgnoreCase("re3data")) {
+                if (entry.getKey().contains("datarepository"))
+                    resultSet.add(entry.getValue());
+            }
+        }
+
+
+        return resultSet;
+    }
+
+    private Vocabulary getVocabulary(String vocName) {
+
+        if (!vocabularyMap.containsKey(vocName)) {
+            vocabularyMap.put(vocName, vocabularyLoader.getVocabulary(vocName, Locale.ENGLISH, Locale.ROOT));
+        }
+        return vocabularyMap.get(vocName);
+    }
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApiImpl.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApiImpl.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/controllers/BrokerApiImpl.java	(revision 49757)
@@ -0,0 +1,185 @@
+package eu.dnetlib.repo.manager.service.controllers;
+
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.repo.manager.service.shared.BrokerException;
+import eu.dnetlib.repo.manager.service.shared.Tuple;
+import eu.dnetlib.repo.manager.service.shared.broker.AdvQueryObject;
+import eu.dnetlib.repo.manager.service.shared.broker.BrowseEntry;
+import eu.dnetlib.repo.manager.service.shared.broker.DatasourcesBroker;
+import eu.dnetlib.repo.manager.service.shared.broker.EventsPage;
+import org.json.JSONException;
+import org.json.JSONObject;
+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.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.client.RestClientException;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.util.*;
+
+@Component
+public class BrokerApiImpl implements BrokerApi {
+
+
+    @Autowired
+    private RepositoryApiImpl repoAPI;
+    @Value("${services.broker.url}:${services.broker.port}/${services.broker.api}${services.broker.openaire}")
+    private String openairePath;
+
+    @Override
+    public DatasourcesBroker getDatasourcesOfUser(String params) throws JSONException {
+        JSONObject json_params = new JSONObject(params);
+        DatasourcesBroker ret = new DatasourcesBroker();
+
+        String userEmail = json_params.getString("userEmail");
+        boolean includeShared = json_params.getBoolean("includeShared");
+        boolean includeByOthers = json_params.getBoolean("includeByOthers");
+
+        try {
+            ret.setDatasourcesOfUser(getDatasourcesOfUserType(getRepositoriesOfUser(userEmail)));
+            if (includeShared) {
+                //TODO whatever nikonas was saying
+                List<String> sharedDatasourceIds = new ArrayList<String>();
+                ret.setSharedDatasources(getDatasourcesOfUserType(getRepositoriesByIds(sharedDatasourceIds)));
+            }
+
+            if (includeByOthers) {
+                ret.setDatasourcesOfOthers(getDatasourcesOfUserType(getRepositoriesOfUser(userEmail)));
+            }
+        } catch (BrokerException e) {
+            e.printStackTrace();
+        }
+
+        return ret;
+    }
+
+    @Override
+    public List<BrowseEntry> getTopicsForDatasource(@PathVariable("datasourceName")  String datasourceName) throws BrokerException {
+        final String service = "/topicsForDatasource";
+
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(openairePath + service)
+                .queryParam("ds", datasourceName);
+
+        RestTemplate template = new RestTemplate();
+        template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
+        ResponseEntity<List<BrowseEntry>> resp;
+        try {
+            resp = template.exchange(
+                    builder.build().encode().toUri(),
+                    HttpMethod.GET,
+                    null,
+                    new ParameterizedTypeReference<List<BrowseEntry>>() {
+                    });
+        } catch (RestClientException e) {
+            throw new BrokerException(e);
+        }
+
+        return resp.getBody();
+    }
+
+    @Override
+    public EventsPage advancedShowEvents(String params) throws BrokerException, JSONException {
+        JSONObject json_params = new JSONObject(params);
+
+        long page = json_params.getLong("page");
+        long pagesize = json_params.getLong("pagesize");
+
+        JSONObject json_advQueryObject = json_params.getJSONObject("advQueryObject");
+        ObjectMapper obj = new ObjectMapper();
+        AdvQueryObject advQueryObject = new Gson().fromJson(json_advQueryObject.toString(),AdvQueryObject.class);
+
+
+        final String service = "/events/{page}/{pageSize}";
+
+        Map<String, Long> uriParams = new HashMap<>();
+        uriParams.put("page", page);
+        uriParams.put("pageSize", pagesize);
+
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(openairePath + service);
+
+        MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+        headers.add("Content-Type", "application/json");
+
+        advQueryObject.setPage(page);
+
+        HttpEntity<AdvQueryObject> entity = new HttpEntity<>(advQueryObject, headers);
+
+        RestTemplate template = new RestTemplate();
+        template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
+        ResponseEntity<EventsPage> resp;
+        try {
+            resp = template.exchange(
+                    builder.buildAndExpand(uriParams).encode().toUri(),
+                    HttpMethod.POST,
+                    entity,
+                    new ParameterizedTypeReference<EventsPage>() {
+                    }
+            );
+        } catch (RestClientException e) {
+            throw new BrokerException(e);
+        }
+        return resp.getBody();
+
+
+    }
+
+
+    private List<Tuple<BrowseEntry, String>> getDatasourcesOfUserType(List<Repository> repositories) throws BrokerException {
+
+        List<Tuple<BrowseEntry, String>> entries = new ArrayList<>();
+        for (Repository repo : repositories) {
+            BrowseEntry temp = new BrowseEntry();
+            temp.setValue(repo.getOfficialName());
+            temp.setSize(new Long(0));
+            for (BrowseEntry e : getTopicsForDatasource(repo.getOfficialName())) {
+                temp.setSize(temp.getSize() + e.getSize());
+            }
+            Tuple<BrowseEntry, String> tup = new Tuple<>(temp, repo.getLogoUrl());
+            entries.add(tup);
+        }
+
+        // sort the collection by the second field of the tuple which is size
+        Collections.sort(entries, new Comparator<Tuple<BrowseEntry, String>>() {
+            @Override
+            public int compare(Tuple<BrowseEntry, String> e1, Tuple<BrowseEntry, String> e2) {
+                return (int) (e2.getFirst().getSize().longValue() - e1.getFirst().getSize().longValue());
+            }
+        });
+
+        return entries;
+    }
+
+
+
+    private List<Repository> getRepositoriesOfUser(String userEmail) throws JSONException {
+
+        int page = 1;
+        int size = 10;
+        List<Repository> rs = null;
+        List<Repository> resultSet = new ArrayList<>();
+
+        while (true){
+            rs = repoAPI.getRepositoriesOfUser(userEmail, String.valueOf(page), String.valueOf(size));
+            if(rs.size() == 0) break;
+            resultSet.addAll(rs);
+        }
+        return resultSet;
+    }
+
+    private List<Repository> getRepositoriesByIds(List<String> sharedDatasourceIds) {
+        return null;
+    }
+
+}
Index: modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/utils/Converter.java
===================================================================
--- modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/utils/Converter.java	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/java/eu/dnetlib/repo/manager/service/utils/Converter.java	(revision 49757)
@@ -0,0 +1,216 @@
+package eu.dnetlib.repo.manager.service.utils;
+
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+public class Converter {
+
+    public static Repository jsonToRepositoryObject(JSONObject jsonObject) throws JSONException {
+
+        Repository repository = new Repository();
+
+        if( jsonObject.get("datasource").equals(null))
+            return null;
+
+        JSONObject datasource = (JSONObject) jsonObject.get("datasource");
+
+        repository.setActivationId(datasource.get("activationId").toString());
+        repository.setAggregator(datasource.get("aggregator").toString());
+        repository.setCertificates(datasource.get("certificates").toString());
+        repository.setCitationGuidelineUrl(datasource.get("citationguidelineurl").toString());
+        repository.setCollectedFrom( datasource.get("collectedfrom").toString());
+        repository.setContactEmail(datasource.get("contactemail").toString());
+        repository.setDatabaseAccessRestriction(datasource.get("databaseaccessrestriction").toString());
+        repository.setDatabaseAccessType(datasource.get("databaseaccesstype").toString());
+        repository.setDataUploadRestriction(datasource.get("datauploadrestriction").toString());
+        repository.setDataUploadType(datasource.get("datauploadtype").toString());
+        repository.setDateOfCollection(convertDate( datasource.get("dateofcollection").toString()));
+        repository.setDateOfValidation(convertDate( datasource.get("dateofvalidation").toString()));
+        repository.setDescription(datasource.get("description").toString());
+        repository.setEissn(datasource.get("eissn").toString());
+        repository.setEnglishName( datasource.get("englishname").toString());
+        repository.setId(datasource.get("id").toString());
+        repository.setIssn(datasource.get("issn").toString());
+        repository.setOdLanguages(datasource.get("languages").toString());
+        repository.setLatitude( toDouble(datasource.get("latitude").toString()));
+        repository.setLissn(datasource.get("lissn").toString());
+        repository.setLogoUrl(datasource.get("logourl").toString());
+        repository.setLongitude(toDouble(datasource.get("longitude").toString()));
+        //datasource.get("managed");
+        repository.setMissionStatementUrl(datasource.get("missionstatementurl").toString());
+        repository.setNamespacePrefix(datasource.get("namespaceprefix").toString());
+        repository.setOdContentTypes(datasource.get("od_contenttypes").toString());
+        repository.setOfficialName(datasource.get("officialname").toString());
+        repository.setPidSystems(datasource.get("pidsystems").toString());
+        //datasource.get("platform");
+        repository.setProvenanceActionClass( datasource.get("provenanceaction").toString());
+        repository.setQualityManagementKind(datasource.get("qualitymanagementkind").toString());
+        repository.setRegisteredBy(datasource.get("registeredby").toString());
+        repository.setReleaseEndDate(convertDate(datasource.get("releaseenddate").toString()));
+        repository.setReleaseStartDate(convertDate(datasource.get("releasestartdate").toString()));
+        repository.setServiceProvider(Boolean.valueOf(datasource.get("serviceprovider").toString()));
+        //datasource.get("subjects");
+        Double timezone = toDouble(datasource.get("timezone").toString());
+        repository.setTimezone(timezone!=null?timezone:0.0);
+        repository.setTypology(datasource.get("typology").toString());
+        repository.setVersioning(Boolean.valueOf(datasource.get("versioning").toString()));
+        repository.setWebsiteUrl(datasource.get("websiteurl").toString());
+        return repository;
+    }
+
+    public static Date convertDate(String date){
+
+        if(Objects.equals(date, "null"))
+            return null;
+
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            return formatter.parse(date);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static String convertDateToString(String date){
+
+        if(Objects.equals(date, "null"))
+            return null;
+
+        SimpleDateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
+
+        Date d = null;
+        try {
+            d = (Date)formatter.parse(date);
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(d);
+            return cal.get(Calendar.DATE) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.YEAR);
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static Double toDouble(String number){
+        if(Objects.equals(number, "null"))
+            return null;
+        else
+            return Double.valueOf(number);
+    }
+
+    public static List<Repository> jsonToRepositoryList(JSONArray rs) throws JSONException {
+
+        List<Repository> resultSet = new ArrayList<>();
+        for(int i=0;i<rs.length();i++)
+            resultSet.add(jsonToRepositoryObject( rs.getJSONObject(i)) );
+        return resultSet;
+    }
+
+    public static RepositoryInterface jsonToRepositoryInterfaceObject(JSONObject jsonObject) throws JSONException {
+
+        RepositoryInterface repositoryInterface = new RepositoryInterface();
+
+        repositoryInterface.setBaseUrl(jsonObject.get("baseurl").toString());
+        repositoryInterface.setContentDescription(jsonObject.get("contentdescription").toString());
+        repositoryInterface.setId(jsonObject.get("id").toString());
+        repositoryInterface.setMetadataIdentifierPath(jsonObject.get("metadataIdentifierPath").toString());
+        repositoryInterface.setAccessProtocol(jsonObject.get("protocol").toString());
+        repositoryInterface.setTypology(jsonObject.get("typology").toString());
+        repositoryInterface.setDesiredCompatibilityLevel(jsonObject.get("compatibility").toString());
+        repositoryInterface.setActive(Boolean.parseBoolean(jsonObject.get("active").toString()));
+        repositoryInterface.setRemovable(Boolean.parseBoolean(jsonObject.get("removable").toString()));
+
+        return repositoryInterface;
+    }
+
+    public static String repositoryObjectToJson(Repository repository) throws JSONException {
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("activationId",repository.getActivationId());
+        jsonObject.put("aggregator",repository.getAggregator());
+        jsonObject.put("certificates",repository.getCertificates());
+        jsonObject.put("citationguidelineurl",repository.getCitationGuidelineUrl());
+        jsonObject.put("collectedfrom",repository.getCollectedFrom());
+        jsonObject.put("contactemail",repository.getContactEmail());
+        jsonObject.put("databaseaccessrestriction",repository.getDatabaseAccessRestriction());
+        jsonObject.put("databaseaccesstype",repository.getDatabaseAccessType());
+        jsonObject.put("datauploadrestriction",repository.getDataUploadRestriction());
+        jsonObject.put("datauploadtype",repository.getDataUploadType());
+        jsonObject.put("dateofcollection",convertDateToString(String.valueOf(repository.getDateOfCollection())));
+        jsonObject.put("dateofvalidation",convertDateToString(String.valueOf(repository.getDateOfValidation())));
+        jsonObject.put("description",repository.getDescription());
+        jsonObject.put("eissn",repository.getEissn());
+        jsonObject.put("englishname",repository.getEnglishName());
+        jsonObject.put("id",repository.getId());
+        jsonObject.put("issn",repository.getIssn());
+        jsonObject.put("languages",repository.getOdLanguages());
+        jsonObject.put("latitude",repository.getLatitude().toString());
+        jsonObject.put("lissn",repository.getLissn());
+        jsonObject.put("logourl",repository.getLogoUrl());
+        jsonObject.put("longitude",repository.getLongitude().toString());
+        jsonObject.put("missionstatementurl",repository.getMissionStatementUrl());
+        jsonObject.put("namespaceprefix",repository.getNamespacePrefix());
+        jsonObject.put("od_contenttypes",repository.getOdContentTypes());
+        jsonObject.put("officialname",repository.getOfficialName());
+        jsonObject.put("pidsystems",repository.getPidSystems());
+        jsonObject.put("provenanceaction",repository.getProvenanceActionClass());
+        jsonObject.put("qualitymanagementkind",repository.getQualityManagementKind());
+        jsonObject.put("registeredby",repository.getRegisteredBy());
+        jsonObject.put("releaseenddate",convertDateToString(String.valueOf(repository.getReleaseEndDate())));
+        jsonObject.put("releasestartdate",convertDateToString(String.valueOf(repository.getReleaseStartDate())));
+        jsonObject.put("serviceprovider",repository.getServiceProvider());
+        jsonObject.put("timezone",repository.getTimezone());
+        jsonObject.put("typology",repository.getTypology());
+        jsonObject.put("versioning",repository.getVersioning());
+        jsonObject.put("websiteurl",repository.getWebsiteUrl());
+
+        //datasource.get("managed");
+        //datasource.get("platform");
+        //datasource.get("subjects");
+        return jsonObject.toString();
+    }
+
+    public static String repositoryInterfaceObjectToJson(RepositoryInterface repositoryInterface) throws JSONException {
+
+        JSONObject jsonObject = new JSONObject();
+
+        jsonObject.put("baseurl",repositoryInterface.getBaseUrl());
+        jsonObject.put("contentdescription",repositoryInterface.getContentDescription());
+        jsonObject.put("id",repositoryInterface.getId());
+        jsonObject.put("metadataIdentifierPath",repositoryInterface.getMetadataIdentifierPath());
+        jsonObject.put("protocol",repositoryInterface.getAccessProtocol());
+        jsonObject.put("typology",repositoryInterface.getTypology());
+        jsonObject.put("compatibility",repositoryInterface.getDesiredCompatibilityLevel());
+        //jsonObject.put("removable",repositoryInterface.getRemovable());
+        //jsonObject.put("active",repositoryInterface.getActive());
+        return jsonObject.toString();
+    }
+
+    public static ArrayList<String> readFile(String filename) {
+        String line;
+        ArrayList<String> list = new ArrayList<String>();
+        try {
+            File file = new File(Converter.class.getResource("/eu/dnetlib/repo/manager/service/utils/"+filename).getFile());
+            BufferedReader br = new BufferedReader(new FileReader(file));
+            while((line = br.readLine()) != null) {
+                list.add(line.trim());
+            }
+            br.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+}
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/resources/application.properties
===================================================================
--- modules/uoa-repository-manager-service/src/main/resources/application.properties	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/resources/application.properties	(revision 49757)
@@ -0,0 +1,97 @@
+infrastructure.name=integration
+
+# Container properties
+container.hostname = localhost
+container.context=repoManager
+container.port = 8080
+
+# 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://localhost:9190/is/services/isLookUp
+#ISRegistryService.url = http://localhost:9190/is/services/isRegistry
+#ISSNService.url = http://localhost:9190/is/services/isSN
+# LDAP
+services.users.ldap.address = 194.177.192.119
+services.users.ldap.port = 389
+services.users.ldap.username = cn=admin,dc=openaire,dc=eu
+services.users.ldap.password = serenata
+services.users.ldap.usersDN = ou=users,dc=openaire,dc=eu
+
+#services.repo-manager.repository.testing.mode = true
+
+ValidatorService.url=http://adonis.athenarc.gr:8080/validator-service/services/validatorWebService
+
+# Broker Service
+services.broker.url = http://broker1-dev-dnet.d4science.org
+#services.broker.url = http://localhost
+services.broker.port = 8080
+#services.broker.port = 9090
+services.broker.api = api/
+services.broker.openaire = openaireBroker
+
+#
+# Configuration file classpath
+configurationFileClassPath=classpath:application-context.xml
+
+api.baseAddress=https://dev-openaire.d4science.org/openaire
+
+service.repository-rest-api.baseUrl = http://localhost:8080
+
+
+# the address where validator is running and is accessible from the controllers of the web
+services.repo-manager.baseUrl = http://${container.hostname}:${container.port}/${container.context}
+
+# base address for soap web services
+transport.soap.baseAddress = http://${container.hostname}:${container.port}/${container.context}
+
+transport.soap.force.local.address = false
+
+# the email of the administrator
+# he will receive all the automatic bug reports and feedback created
+services.repo-manager.adminEmail = nikonas@di.uoa.gr
+
+# if set to true, getRepositories will return dummy repositories
+services.repo-manager.repository.testing.mode = false
+
+services.repo-manager.deploy.environment = development
+
+# the mailhost for the mail service
+services.validator.mail.host = smtp.gmail.com
+# the port where the mail service is running
+services.validator.mail.port = 465
+# the address that appears in the from field in the mails send by the validator
+services.validator.mail.fromAddress = no-reply@openaire.eu
+# the reply-to field value in the mails send by the validator
+services.validator.mail.replyToAddress = no-reply@openaire.eu
+# the username of the account used to login in the mail server
+services.validator.mail.username = test.openaire@gmail.com
+# the password of the account used to login in the mail server
+services.validator.mail.password = ^($*@$)*!$
+# if authentication should take place
+# if set to false username and password is not needed
+services.validator.mail.authenticate = true
+# is set to yes then all mails will not be sent to their targets but to the address specified in services.validator.mail.overrideEmail
+services.validator.mail.override = false
+# if set to true then no mails are send, they are only logged as a debug message
+services.validator.mail.logonly = false
+# the mode used for the mails send by the validator
+services.validator.mail.mode = ssl
+# used by eu.dnetlib.utils.MailLibrary to control debuggin messages
+services.validator.mail.debug = false
+# if services.validator.mail.override is true then all mails will be send only to this address
+services.validator.mail.overrideEmail = nikonas@di.uoa.gr
+# a comma-seperated list of address that will receive all mails about validations and repo registrations
+services.validator.mail.specialRecipients = nikonas@di.uoa.gr
+
+# a comma-seperated list of addresses that have the ability to register repos without the need for validation and registration
+services.validator.repoRegistration.override = nikonas@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?
\ No newline at end of file
Index: modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/typologies.txt
===================================================================
--- modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/typologies.txt	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/resources/eu/dnetlib/repo/manager/service/utils/typologies.txt	(revision 49757)
@@ -0,0 +1,42 @@
+CONTENTdm
+Digibib
+Digital Commons
+DigiTool
+DIVA
+Diva-Portal
+dLibra
+Doks
+Drupal
+DSpace
+Earmas
+EPrints
+ETD
+ETD-db
+Fedora
+Fez
+Greenstone
+HAL
+invenio
+MyCoRe
+Open Repository
+OPUS
+Pica-Verbundkatalog
+Proprietary Software
+PUMA
+PURE
+SciELO
+SFIX
+VITAL
+VTOAI
+WEKO
+XooNIps
+------------------------
+OJS
+HyperJournal
+ePubTk
+GAPworks
+DPubS
+E-Journal
+------------------------
+[Other]
+
Index: modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/web.xml	(nonexistent)
+++ modules/uoa-repository-manager-service/src/main/webapp/WEB-INF/web.xml	(revision 49757)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
+http://xmlns.jcp.org/xml/ns/javaee "
+         version="3.1">
+
+    <context-param>
+        <param-name>log4jConfigLocation</param-name>
+        <param-value>/WEB-INF/log4j.properties</param-value>
+    </context-param>
+    <context-param>
+        <param-name>log4jRefreshInterval</param-name>
+        <param-value>1000</param-value>
+    </context-param>
+    <context-param>
+        <param-name>log4jExposeWebAppRoot</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <listener>
+        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+    </listener>
+
+
+    <listener>
+        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+    </listener>
+
+    <context-param>
+        <param-name>contextConfigLocation</param-name>
+        <param-value>/WEB-INF/applicationContext.xml
+        </param-value>
+    </context-param>
+
+
+    <servlet>
+        <servlet-name>spring</servlet-name>
+        <servlet-class>
+            org.springframework.web.servlet.DispatcherServlet
+        </servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>spring</servlet-name>
+        <url-pattern>/</url-pattern>
+    </servlet-mapping>
+
+</web-app>
\ No newline at end of file
Index: modules/uoa-repository-manager-service
===================================================================
--- modules/uoa-repository-manager-service	(nonexistent)
+++ modules/uoa-repository-manager-service	(revision 49757)

Property changes on: modules/uoa-repository-manager-service
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,3 ##
+.idea
+target
+uoa-repository-manager-service.iml
