Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionFactory.java	(revision 48242)
@@ -0,0 +1,51 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import eu.dnetlib.domain.ActionType;
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.ResourceType;
+import eu.dnetlib.domain.enabling.Subscription;
+
+public class SubscriptionFactory {
+
+	public Subscription createSubscription(ActionType actionType,
+			ResourceType resourceType, EPR epr) {
+
+		return createSubscription(actionType, resourceType, null, epr);
+	}
+
+	public Subscription createSubscription(ActionType actionType,
+			ResourceType resourceType, String resourceId, EPR epr) {
+
+		return createSubscription(actionType, resourceType, resourceId,
+				null, epr);
+	}
+
+	public Subscription createSubscription(ActionType actionType,
+			ResourceType resourceType, String resourceId, String path, EPR epr) {
+
+		return configureSubscription(actionType, resourceType, resourceId,
+				path, epr);
+	}
+
+	private Subscription configureSubscription(ActionType actionType,
+			ResourceType resourceType, String resourceId, String path, EPR epr) {
+		Subscription sub = new Subscription();
+		StringBuffer buffer = new StringBuffer();
+
+		buffer.append(actionType.getValue()).append("/");
+		buffer.append(resourceType.getValue());
+
+		if (resourceId != null && !resourceId.trim().equals(""))
+			buffer.append("/").append(resourceId);
+		else
+			buffer.append("/").append("*");
+
+		if (path != null && !path.trim().equals(""))
+				buffer.append("/").append(path);
+
+		sub.setTopic(buffer.toString());
+		sub.setEpr(epr);
+
+		return sub;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionManagerImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionManagerImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionManagerImpl.java	(revision 48242)
@@ -0,0 +1,185 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import eu.dnetlib.api.enabling.ISSNService;
+import eu.dnetlib.api.enabling.ISSNServiceException;
+import eu.dnetlib.domain.enabling.Subscription;
+import gr.uoa.di.driver.util.ServiceLocator;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.log4j.Logger;
+
+/**
+ * 
+ * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+ *
+ */
+public class SubscriptionManagerImpl implements SubscriptionManager {
+	private static Logger logger = Logger.getLogger(SubscriptionManagerImpl.class);
+
+	private ServiceLocator<ISSNService> snLocator = null;
+	private ScheduledExecutorService executor = null;
+	private List<Subscription> refreshList = new ArrayList<Subscription>();
+
+	private int threads = 3;
+	private int timeToLive = 3600;
+
+	public void setSnLocator(ServiceLocator<ISSNService> snLocator) {
+		this.snLocator = snLocator;
+	}
+
+	public void setThreads(int threads) {
+		this.threads = threads;
+	}
+
+	public void setTimeToLive(int timeToLive) {
+		this.timeToLive = timeToLive;
+	}
+
+	public void init() {
+		logger.debug("Creating thread pool (size: " + threads + ")");
+		executor = Executors.newScheduledThreadPool(threads);
+
+		// scheduling a thread to run every timeToLive seconds and
+		// refresh all subscriptions. The initial delay is 0.8 of
+		// timeToLive is to make sure that it will have enough time to finish
+		// working before the first refreshed subscriptions need to be refreshed
+		// again.
+		logger.debug("Adding refresh task (period: " + timeToLive + " sec)");
+		executor.scheduleAtFixedRate(new RefreshTask(),
+				(long) (0.8 * timeToLive), timeToLive, TimeUnit.SECONDS);
+	}
+
+	public void shutdown() {
+		logger.debug("Stopping thread pool");
+		executor.shutdownNow();
+		
+		logger.debug("unsubscribing active subscriptions");
+		synchronized (refreshList) {
+			for (Subscription sub:refreshList) {
+				try {
+					snLocator.getService().unsubscribe(sub.getId());
+				} catch (ISSNServiceException e) {
+					logger.error("Error unsubscibing", e);
+				}
+			}
+		}
+	}
+
+	@Override
+	public void subscribe(Subscription subscription) {
+		this.subscribe(subscription, true);
+	}
+	
+	@Override
+	public void subscribe(Subscription subscription, boolean refresh) {
+		if (refresh)
+			subscription.setTimeToLive(timeToLive);
+
+		logger.debug("Subscribing with ttl " + subscription.getTimeToLive());
+		logger.debug("Subscribing epr " + subscription.getEpr());
+		logger.debug("Subscribing topic " + subscription.getTopic());
+		
+		executor.submit(new SubscriptionTask(subscription, refresh));
+	}
+
+	@Override
+	public void unsubscribe(String subscriptionId) {
+		// TODO check if subscription is new (null id) and?
+		// either remove from pending list or ignore request
+
+		try {
+			snLocator.getService().unsubscribe(subscriptionId);
+		} catch (ISSNServiceException e) {
+			logger.error("Error unsubscibing", e);
+		}
+
+		synchronized (refreshList) {
+			for (int i = 0; i < refreshList.size(); i++)
+				if (refreshList.get(i).getId().equals(subscriptionId)) {
+					refreshList.remove(i);
+
+					break;
+				}
+		}
+	}
+
+	/**
+	 * The task that submits a new subscription to the subscription service.
+	 * Nothing to see here, move along...
+	 * 
+	 * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+	 *
+	 */
+	private class SubscriptionTask implements Runnable {
+		private Subscription subscription = null;
+		private boolean addToList = true;
+		
+		public SubscriptionTask(Subscription subscription, boolean addToList) {
+			this.subscription = subscription;
+			this.addToList = addToList;
+		}
+
+		public void run() {
+			try {
+				logger.debug("Adding new subscription : " + subscription);
+				logger.debug("Epr: " + subscription.getEpr());
+				logger.debug("Topic: " + subscription.getTopic());
+				
+				String subId = snLocator.getService().subscribe(
+						subscription.getEpr(), subscription.getTopic(),
+						subscription.getTimeToLive());
+	
+				logger.debug("Subscription id: " + subId);
+				subscription.setId(subId);
+	
+				if (addToList) {
+					logger.debug("Adding subscription " + subId + " to refresh list");
+					synchronized (refreshList) {
+						refreshList.add(0, subscription);
+					}
+				}
+			} catch (Throwable t) {
+				logger.error(t);
+			}
+		}
+
+	}
+
+	/**
+	 * A task that refreshes the subscriptions (those that were created by this
+	 * manager).
+	 * The implementation locks the list of subscriptions which means
+	 * that during the refresh process no new subscriptions will be submitted to
+	 * the service and no subscriptions can be removed. This is generally not a 
+	 * problem because the refresh period is large (typically around 1 hour or
+	 * even more) and with the new subscription topic format only few new 
+	 * subscriptions are needed.
+	 * A possible drawback of this locking is that if the refresh process has not
+	 * been completed in the 0.2*timeToLive period, a new thread will be started
+	 * for the next period, but it will not be able to proceed...
+	 *  
+	 * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+	 *
+	 */
+	private class RefreshTask implements Runnable {
+		public void run() {
+			logger.debug("Refreshing subscriptions");
+			
+			synchronized (refreshList) {
+				for (Subscription sub : refreshList) {
+					logger.debug("Refreshing subscription with id " + sub.getId());
+					try {
+						snLocator.getService().renew(sub.getId(), timeToLive);
+					} catch (ISSNServiceException e) {
+						logger.error("Error renewing subscription", e);
+					}
+				}
+			}
+		}
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationListener.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationListener.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationListener.java	(revision 48242)
@@ -0,0 +1,8 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import eu.dnetlib.domain.enabling.Notification;
+
+public interface NotificationListener {
+
+	public void processNotification(Notification notification);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/pom.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/pom.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/pom.xml	(revision 48242)
@@ -0,0 +1,123 @@
+<?xml version="1.0" ?>
+<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/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet45-parent</artifactId>
+		<version>1.0.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>uoa-commons</artifactId>
+	<packaging>jar</packaging>
+	<version>2.0.0</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet45/modules/uoa-commons/tags/uoa-commons-2.0.0</developerConnection>
+	</scm>
+
+	<properties>
+		<gwtVersion>2.7.0</gwtVersion>
+	</properties>
+
+	<dependencies>
+		<!-- Added to override 2.1.4 from icm-something -->
+		<dependency>
+			<groupId>com.sun.xml.bind</groupId>
+			<artifactId>jaxb-core</artifactId>
+			<version>2.2.7</version>
+		</dependency>
+		<dependency>
+			<groupId>com.sun.xml.bind</groupId>
+			<artifactId>jaxb-impl</artifactId>
+			<version>2.2.7</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.ehcache</groupId>
+			<artifactId>ehcache</artifactId>
+			<version>2.8.0</version>
+			<type>pom</type>
+		</dependency>
+		<dependency>
+			<groupId>com.unboundid</groupId>
+			<artifactId>unboundid-ldapsdk</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+		<dependency>
+			<groupId>apache</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>[0.0.0,)</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>[0.0.0,)</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>[1.2.14,1.3.0-SNAPSHOT)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>uoa-api</artifactId>
+			<version>[2.0.0-SNAPSHOT, 3.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>uoa-domain</artifactId>
+			<version>[2.0.0-SNAPSHOT, 3.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context-support</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-misc-utils</artifactId>
+			<version>[1.0.0,)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-spring-utils</artifactId>
+			<version>[1.0.0,)</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>[1.2,2.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.gwt</groupId>
+			<artifactId>gwt-user</artifactId>
+			<version>${gwtVersion}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>3.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.antlr</groupId>
+			<artifactId>antlr-runtime</artifactId>
+			<version>3.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-service-utils</artifactId>
+			<version>[1.0.0, 2.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-service-common</artifactId>
+			<version>[2.1.6-SNAPSHOT, 3.0.0)</version>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
+		<dependency>
+			<groupId>javax.mail</groupId>
+			<artifactId>javax.mail-api</artifactId>
+			<version>1.5.6</version>
+		</dependency>
+	</dependencies>
+</project>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/RepositoryVocabularyLoader.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/RepositoryVocabularyLoader.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/RepositoryVocabularyLoader.java	(revision 48242)
@@ -0,0 +1,45 @@
+package gr.uoa.di.driver.enabling.vocabulary;
+
+import eu.dnetlib.api.data.DatasourceManagerService;
+import eu.dnetlib.api.data.DatasourceManagerServiceException;
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.enabling.Vocabulary;
+import gr.uoa.di.driver.util.ServiceLocator;
+import org.apache.log4j.Logger;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TreeMap;
+
+public class RepositoryVocabularyLoader implements VocabularyLoader {
+	
+    private ServiceLocator<DatasourceManagerService> datasourceManagerService = null;
+
+	private Logger logger = Logger.getLogger(RepositoryVocabularyLoader.class);
+
+	public Vocabulary getVocabulary(String vocabularyName, Locale locale, Locale defaultloLocale) {
+
+        List<Repository> repositories = null;
+
+        try {
+            repositories = datasourceManagerService.getService().listAllDatasources();
+
+		} catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting repositories.", e);
+        }
+		
+		Map<String, String> map = new TreeMap<String, String>();
+		
+		for (Repository rep:repositories)
+			map.put(rep.getOfficialName(), rep.getOfficialName());
+		
+		Vocabulary vocabulary = new Vocabulary(vocabularyName, map);
+		
+		return vocabulary;
+	}
+
+    public void setDatasourceManagerService(ServiceLocator<DatasourceManagerService> datasourceManagerService) {
+        this.datasourceManagerService = datasourceManagerService;
+    }
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/SQLVocabularyLoader.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/SQLVocabularyLoader.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/SQLVocabularyLoader.java	(revision 48242)
@@ -0,0 +1,57 @@
+package gr.uoa.di.driver.enabling.vocabulary;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.sql.DataSource;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.enabling.Vocabulary;
+
+public class SQLVocabularyLoader implements VocabularyLoader {
+	private static Logger logger = Logger.getLogger(SQLVocabularyLoader.class);
+	private DataSource dataSource = null;
+	private Map<String, String> queryMap = null;
+	
+	@Override
+	public Vocabulary getVocabulary(String vocabularyName, Locale locale, Locale defaultLocale) {
+		Vocabulary vocab = null;
+		
+		try {
+			Connection con = dataSource.getConnection();
+			Statement stmt = con.createStatement();
+			String query = queryMap.get(vocabularyName);
+			ResultSet rs = stmt.executeQuery(query);
+			
+			Map<String, String> map = new HashMap<String, String>();
+			
+			while (rs.next()) {
+				map.put(rs.getString(2), rs.getString(1));
+			}
+			
+			vocab = new Vocabulary(vocabularyName, map);
+			
+			rs.close();
+			con.close();
+			
+		} catch (SQLException sqle) {
+			logger.error("Error loading vocabulary " + vocabularyName, sqle);
+		}
+
+		return vocab;
+	}
+
+	public void setDataSource(DataSource dataSource) {
+		this.dataSource = dataSource;
+	}
+	
+	public void setQueryMap(Map<String, String> queryMap) {
+		this.queryMap = queryMap;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/eu/dnetlib/utils/parser/text.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/eu/dnetlib/utils/parser/text.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/eu/dnetlib/utils/parser/text.xml	(revision 48242)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<result xmlns:dri="http://www.driver-repository.eu/namespace/dri" xmlns:oaf="http://namespace.openaire.eu/oaf" xmlns:dc="http://purl.org/dc/elements/1.1/" type="result">
+   <field name="resultId" multiplicity="false" indexId="objIdentifier" label="Object id" value="WOS:000277866500014"/>
+   <field name="title" indexId="resulttitle" multiplicity="true" label="Title" value="Analysis of cell viability in intervertebral disc: Effect of endplate permeability on cell population"/>
+   <field name="subject" indexId="resultsubject" multiplicity="true" label="Subject(s)" value="Biophysics"/>
+   <field name="subject" indexId="resultsubject" multiplicity="true" label="Subject(s)" value="Engineering, Biomedical"/>
+   <field name="dateofacceptance" indexId="resultdateofacceptance" multiplicity="true" label="Date of acceptance" value="2010-01-01"/>
+   <field name="description" indexId="resultdescription" multiplicity="true" label="Description" value="Responsible for making and maintaining the extracellular matrix, the cells of intervertebral discs are supplied with essential nutrients by diffusion from the blood supply through mainly the cartilaginous endplates (CEPs) and disc tissue. Decrease in transport rate and increase in cellular activity may adversely disturb the intricate supply-demand balance leading ultimately to cell death and disc degeneration. The present numerical study aimed to introduce for the first time cell viability criteria into nonlinear coupled nutrition transport equations thereby evaluating the dynamic nutritional processes governing viable cell population and concentrations of oxygen, glucose and lactic acid in the disc as CEP exchange area dropped from a fully permeable condition to an almost impermeable one. A uniaxial model of an in vitro cell culture analogue of the disc is first employed to examine and validate cell viability criteria. An axisymmetric model of the disc with four distinct regions was subsequently used to investigate the survival of cells at different CEP exchange areas. In agreement with measurements, predictions of the diffusion chamber model demonstrated substantial cell death as essential nutrient concentrations fell to levels too low to support cells. Cells died away from the nutrient supply and at higher cell densities. In the disc model, the nucleus region being farthest away from supply sources was most affected; cell death initiated first as CEP exchange area dropped below similar to 40% and continued exponentially thereafter to depletion as CEP calcified further. In cases with loss of endplate permeability and/or disruptions therein, as well as changes in geometry and fall in diffusivity associated with fluid outflow, the nutrient concentrations could fall to levels inadequate to maintain cellular activity or viability, resulting in cell death and disc degeneration. (C) 2010 Elsevier Ltd. All rights reserved."/>
+   <field name="publisher" indexId="resultpublisher" multiplicity="true" label="Publisher(s)" value="ELSEVIER SCI LTD"/>
+   <field name="typeclass" indexId="resulttypeclass" multiplicity="true" label="Type class" value="0001"/>
+   <field name="language" indexId="resultlanguage" multiplicity="true" label="Language(s)" value="eng"/>
+   <field name="rights" indexId="resultrights" multiplicity="true" label="Acces mode" value="Closed Access"/>
+   <field name="type" indexId="resulttype" multiplicity="true" label="Type" value="Article"/>
+   <field name="booleanValue" indexId="resulttype" multiplicity="true" label="Type" value="wrongvalue"/>
+   <field name="compliancy" indexId="resulttype" multiplicity="true" label="Type" value="true"/>
+   <field name="odnumberofitemsdate" indexId="datasourceodnumberofitemsdate" multiplicity="true" label="date" value="2012-10-30"/>
+   <field name="author" indexId="" multiplicity="true">
+      <field name="personId" indexId="relpersonid" multiplicity="false" label="Person id" value="WOS:000277866500014_A._Shirazi-Adl"/>
+      <field name="fullname" indexId="relperson" multiplicity="false" label="Person fullname" value="A. Shirazi-Adl"/>
+   </field>
+   <field name="author" indexId="" multiplicity="true">
+      <field name="personId" indexId="relpersonid" multiplicity="false" label="Person id" value="WOS:000277866500014_M._Taheri"/>
+      <field name="fullname" indexId="relperson" multiplicity="false" label="Person fullname" value="M. Taheri"/>
+   </field>
+   <field name="author" indexId="" multiplicity="true">
+      <field name="personId" indexId="relpersonid" multiplicity="false" label="Person id" value="WOS:000277866500014_J._P._G._Urban"/>
+      <field name="fullname" indexId="relperson" multiplicity="false" label="Person fullname" value="J. P. G. Urban"/>
+   </field>
+   <field name="project" indexId="" multiplicity="true">
+      <field name="project id" indexId="relprojectid" multiplicity="false" label="Project id" value="ec::201626"/>
+      <field name="projectname" indexId="relprojectname" multiplicity="false" label="Project(s)" value="GENODISC"/>
+      <field name="projectdescription" indexId="relprojectdescription" multiplicity="false" label="Project description" value="Disc-degeneration linked pathologies: novel biomarkers and diagnostics for targeting treatment and repair"/>
+      <field name="projectcontracttypeclass" indexId="???" multiplicity="false" label="Project contract type class" value="CP"/>
+      <field name="projectcontracttypescheme" indexId="???" multiplicity="false" label="Project contract type scheme" value="ec:FP7contractTypes"/>
+   </field>
+   <field name="project" indexId="" multiplicity="true">
+		<field name="project id" indexId="objIdentifier" multiplicity="false" label="Project id" value="ec::216444"/>
+		<field name="projectcode" indexId="projectcode" multiplicity="false" label="Project(s)" value="216444"/>
+		<field name="projectacronym" indexId="projectacronym" multiplicity="false" label="Project(s)" value="PETAMEDIA"/>
+		<field name="projecttitle" indexId="projecttitle" multiplicity="false" label="Project title" value="PEer-to-peer TAgged MEDIA"/>
+		<field name="projectcontracttypeid" indexId="projectcontracttypeid" multiplicity="false" label="Project contract type id" value="NoE"/>
+		<field name="projectcontracttypename" indexId="projectcontracttypename" multiplicity="false" label="Project contract type name" value="Network of Excellence"/>
+	</field>
+   <field name="repository" indexId="" multiplicity="true">
+      <field name="instanceId" indexId="" multiplicity="false" value="WOS:000277866500014"/>
+      <field name="datasource" indexId="" multiplicity="true">
+         <field name="hostedby" indexId="resulthostingdatasourceid" multiplicity="false" value="openaire"/>
+         <field name="collectedfrom" indexId="resultcollectedfromdatasourceid" multiplicity="false" value=""/>
+      </field>
+      <field name="identifier" indexId="resultidentifier" multiplicity="true" value="http://dx.doi.org/10.1016/j.jbiomech.2010.01.023"/>
+   </field>
+</result>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/A2WrapperImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/A2WrapperImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/A2WrapperImpl.java	(revision 48242)
@@ -0,0 +1,143 @@
+package gr.uoa.di.driver.enabling.a2;
+
+import eu.dnetlib.api.enabling.A2Service;
+//import eu.dnetlib.enabling.aas.ctx.tools.CodingContext;
+//import eu.dnetlib.enabling.aas.ctx.tools.SimpleContextRecoder;
+//import eu.dnetlib.enabling.aas.rmi.AuthenticateRequest;
+//import eu.dnetlib.enabling.aas.rmi.AuthenticateResp;
+//import eu.dnetlib.enabling.aas.rmi.AuthorizeRequest;
+//import eu.dnetlib.enabling.aas.rmi.AuthorizeResp;
+//import eu.dnetlib.enabling.aas.rmi.InvalidateRequest;
+//import eu.dnetlib.enabling.aas.rmi.TypedString;
+import gr.uoa.di.driver.util.ServiceLocator;
+
+//TODO remove???
+
+public class A2WrapperImpl implements A2Wrapper {
+	private ServiceLocator<A2Service> locator = null;
+
+	public void setLocator(ServiceLocator<A2Service> locator) {
+		this.locator = locator;
+	}
+
+	
+	@Override
+	public String authenticateService(String certificate) {
+		throw new UnsupportedOperationException();
+//		// TODO check certificates
+//		String contextId = null;
+//		AuthenticateRequest request = new AuthenticateRequest();
+//
+//		TypedString principals = this.createTypedString("certificate",
+//				certificate);
+//		//TypedString credentials = this.createTypedString("", "");
+//		
+//		TypedString principalsArray[] = new TypedString[] {principals};
+//		//TypedString credentialsArray[] = new TypedString[] {credentials};
+//
+//		request.setPrincipals(principalsArray);
+//		// request.setCredentials(credentialsArray);
+//
+//		AuthenticateResp a2Response = locator.getService()
+//				.authenticate(request);
+//
+//		if (a2Response.getErrors() == null
+//				|| a2Response.getErrors().length == 0)
+//			contextId = a2Response.getContextId();
+//
+//		return contextId;
+	}
+
+	@Override
+	public String authenticateUser(String email, String password) {
+		throw new UnsupportedOperationException();
+		
+	/*String contextId = null;
+		AuthenticateRequest request = new AuthenticateRequest();
+
+		TypedString principals = this.createTypedString("login", email);
+		TypedString credentials = this.createTypedString("password", password);
+
+		TypedString principalsArray[] = new TypedString[] {principals};
+		TypedString credentialsArray[] = new TypedString[] {credentials};
+
+		request.setPrincipals(principalsArray);
+		request.setCredentials(credentialsArray);
+
+		AuthenticateResp a2Response = locator.getService()
+				.authenticate(request);
+
+		if (a2Response.getErrors() == null
+				|| a2Response.getErrors().length == 0) {
+
+			contextId = a2Response.getContextId();
+			//TODO remove
+			contextId = "contextId";
+		}
+
+		return contextId; */
+	}
+
+	@Override
+	public boolean authorizeAction(String resource, String action,
+			String contextId) {
+		
+		throw new UnsupportedOperationException();
+		
+	/*	AuthorizeRequest request = new AuthorizeRequest();
+
+		request.setContextId(contextId);
+
+		TypedString resourceType = this.createTypedString(null, resource);
+		TypedString actionType = this.createTypedString(null, action);
+
+		request.setResource(resourceType);
+		request.setAction(actionType);
+
+		AuthorizeResp a2Response = locator.getService().authorize(request);
+
+		return a2Response.isAuthorized(); */
+	}
+
+	@Override
+	public String createSecurityContextChain(String contextIdA,
+			String contextIdB) {
+		
+		throw new UnsupportedOperationException();
+		
+/*		String secCtxIdChain = null;
+		SimpleContextRecoder recoder = new SimpleContextRecoder();
+
+		CodingContext ctx = new CodingContext();
+		ctx.secCtxId = contextIdA;
+		secCtxIdChain = recoder.encode(ctx, secCtxIdChain, null);
+		ctx.secCtxId = contextIdB;
+		secCtxIdChain = recoder.encode(ctx, secCtxIdChain, null);
+		secCtxIdChain = recoder.appendVersionPrefix(secCtxIdChain);
+
+		return secCtxIdChain;
+*/
+	}
+
+	@Override
+	public void invalidate(String contextId) {
+		throw new UnsupportedOperationException();
+	/*	
+		InvalidateRequest request = new InvalidateRequest();
+
+		request.setContextId(contextId);
+
+		locator.getService().invalidate(request);*/
+	}
+
+	/*
+	private TypedString createTypedString(String type, String value) {
+		TypedString string = new TypedString();
+
+		string.setText(value);
+		string.setType(type);
+
+		return string;
+	}*/
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetFactory.java	(revision 48242)
@@ -0,0 +1,18 @@
+package gr.uoa.di.driver.enabling.resultset;
+
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.SecureDriverResource;
+
+/**
+ * Created by antleb on 2/4/14.
+ */
+public interface ResultSetFactory {
+
+    public <D> ResultSet<D> createResultSet(ResultSet<?> rs, Class<D> resourceClass);
+
+    public ResultSet<String> createResultSet(EPR epr);
+
+    public <D> ResultSet<D> createResultSet(EPR epr, Class<D> resourceClass);
+
+    public <D extends SecureDriverResource> ResultSet<D> createSecurityAwareRS(EPR epr, Class<D> resourceClass);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/eu/dnetlib/utils/parser/ParserTest.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/eu/dnetlib/utils/parser/ParserTest.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/eu/dnetlib/utils/parser/ParserTest.java	(revision 48242)
@@ -0,0 +1,134 @@
+package eu.dnetlib.utils.parser;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import javax.xml.xpath.XPathExpressionException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class ParserTest {
+
+	private String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><result xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" type=\"result\">   <field name=\"resultId\" multiplicity=\"false\" indexId=\"objIdentifier\" label=\"Object id\" value=\"WOS:000277866500014\"/>   <field name=\"title\" indexId=\"resulttitle\" multiplicity=\"true\" label=\"Title\" value=\"Analysis of cell viability in intervertebral disc: Effect of endplate permeability on cell population\"/>   <field name=\"subject\" indexId=\"resultsubject\" multiplicity=\"true\" label=\"Subject(s)\" value=\"Biophysics\"/>   <field name=\"subject\" indexId=\"resultsubject\" multiplicity=\"true\" label=\"Subject(s)\" value=\"Engineering, Biomedical\"/>   <field name=\"dateofacceptance\" indexId=\"resultdateofacceptance\" multiplicity=\"true\" label=\"Date of acceptance\" value=\"2010-01-01\"/>   <field name=\"description\" indexId=\"resultdescription\" multiplicity=\"true\" label=\"Description\" value=\"Responsible for making and maintaining the extracellular matrix, the cells of intervertebral discs are supplied with essential nutrients by diffusion from the blood supply through mainly the cartilaginous endplates (CEPs) and disc tissue. Decrease in transport rate and increase in cellular activity may adversely disturb the intricate supply-demand balance leading ultimately to cell death and disc degeneration. The present numerical study aimed to introduce for the first time cell viability criteria into nonlinear coupled nutrition transport equations thereby evaluating the dynamic nutritional processes governing viable cell population and concentrations of oxygen, glucose and lactic acid in the disc as CEP exchange area dropped from a fully permeable condition to an almost impermeable one. A uniaxial model of an in vitro cell culture analogue of the disc is first employed to examine and validate cell viability criteria. An axisymmetric model of the disc with four distinct regions was subsequently used to investigate the survival of cells at different CEP exchange areas. In agreement with measurements, predictions of the diffusion chamber model demonstrated substantial cell death as essential nutrient concentrations fell to levels too low to support cells. Cells died away from the nutrient supply and at higher cell densities. In the disc model, the nucleus region being farthest away from supply sources was most affected; cell death initiated first as CEP exchange area dropped below similar to 40% and continued exponentially thereafter to depletion as CEP calcified further. In cases with loss of endplate permeability and/or disruptions therein, as well as changes in geometry and fall in diffusivity associated with fluid outflow, the nutrient concentrations could fall to levels inadequate to maintain cellular activity or viability, resulting in cell death and disc degeneration. (C) 2010 Elsevier Ltd. All rights reserved.\"/>   <field name=\"publisher\" indexId=\"resultpublisher\" multiplicity=\"true\" label=\"Publisher(s)\" value=\"ELSEVIER SCI LTD\"/>   <field name=\"typeclass\" indexId=\"resulttypeclass\" multiplicity=\"true\" label=\"Type class\" value=\"0001\"/>   <field name=\"language\" indexId=\"resultlanguage\" multiplicity=\"true\" label=\"Language(s)\" value=\"eng\"/>   <field name=\"rights\" indexId=\"resultrights\" multiplicity=\"true\" label=\"Acces mode\" value=\"Closed Access\"/>   <field name=\"type\" indexId=\"resulttype\" multiplicity=\"true\" label=\"Type\" value=\"Article\"/>   " + 
+	"<field name=\"author\" indexId=\"\" multiplicity=\"true\" value=\"WOS:000277866500014_A._Shirazi-Adl\">" +
+		" <field name=\"personId\" indexId=\"relpersonid\" multiplicity=\"false\" label=\"Person id\" value=\"WOS:000277866500014_A._Shirazi-Adl\"/>" +
+		" <field name=\"fullname\" indexId=\"relperson\" multiplicity=\"false\" label=\"Person fullname\" value=\"A. Shirazi-Adl\"/>  " +
+	" </field> " +
+	"<field name=\"author\" indexId=\"objIdentifier\" multiplicity=\"true\" value=\"WOS:000292086400014_Yuriy_I._Prostov\">" +
+			"<field name=\"personId\" indexId=\"objIdentifier\" multiplicity=\"false\" label=\"Person id\" value=\"WOS:000292086400014_Yuriy_I._Prostov\"/>" +
+			"<field name=\"role\" indexId=\"\" multiplicity=\"false\" label=\"role\" value=\"author\"/>" +
+			"<field name=\"fullname\" indexId=\"personfullname\" multiplicity=\"false\" label=\"Person fullname\" value=\"Prostov, Yuriy I.\"/>" +
+			"<field name=\"ranking\" indexId=\"\" multiplicity=\"false\" label=\"ranking\" value=\"3\"/>" +
+	"</field>" +
+	"<field name=\"author\" indexId=\"objIdentifier\" multiplicity=\"true\" value=\"WOS:000292086400014_Duc-Truong_Pham\">" +
+		"<field name=\"personId\" indexId=\"objIdentifier\" multiplicity=\"false\" label=\"Person id\" value=\"WOS:000292086400014_Duc-Truong_Pham\"/>" +
+		"<field name=\"role\" indexId=\"\" multiplicity=\"false\" label=\"role\" value=\"author\"/>" +
+		"<field name=\"fullname\" indexId=\"personfullname\" multiplicity=\"false\" label=\"Person fullname\" value=\"Pham, Duc-Truong\"/>" +
+		"<field name=\"ranking\" indexId=\"\" multiplicity=\"false\" label=\"ranking\" value=\"1\"/>" +
+	"</field>" +
+	"<field name=\"author\" indexId=\"objIdentifier\" multiplicity=\"true\" value=\"WOS:000292086400014_Maria_M._Suarez-Alvarez\">" +
+		"<field name=\"personId\" indexId=\"objIdentifier\" multiplicity=\"false\" label=\"Person id\" value=\"WOS:000292086400014_Maria_M._Suarez-Alvarez\"/>" +
+		"<field name=\"role\" indexId=\"\" multiplicity=\"false\" label=\"role\" value=\"author\"/>" +
+		"<field name=\"fullname\" indexId=\"personfullname\" multiplicity=\"false\" label=\"Person fullname\" value=\"Suarez-Alvarez, Maria M.\"/>" +
+		"<field name=\"ranking\" indexId=\"\" multiplicity=\"false\" label=\"ranking\" value=\"2\"/>"+
+	"</field>" +	
+	"<field name=\"project\" indexId=\"objIdentifier\" multiplicity=\"true\" value=\"ec::216444\">" +
+		"<field name=\"projectid\" indexId=\"relprojectid\" multiplicity=\"false\" label=\"Project id\" value=\"ec::201626\"/>      " +
+		"<field name=\"projectname\" indexId=\"relprojectname\" multiplicity=\"false\" label=\"Project(s)\" value=\"GENODISC\"/>      " +
+		"<field name=\"projectdescription\" indexId=\"relprojectdescription\" multiplicity=\"false\" label=\"Project description\" value=\"Disc-degeneration linked pathologies: novel biomarkers and diagnostics for targeting treatment and repair\"/>      " +
+		"<field name=\"projectcontracttypeclass\" indexId=\"???\" multiplicity=\"false\" label=\"Project contract type class\" value=\"CP\"/>      " +
+		"<field name=\"projectcontracttypescheme\" indexId=\"???\" multiplicity=\"false\" label=\"Project contract type scheme\" value=\"ec:FP7contractTypes\"/>   " +
+	"</field>   " +
+	"<field name=\"project\" indexId=\"objIdentifier\" multiplicity=\"true\" value=\"ec::224853\">" +
+		"<field name=\"projectid\" indexId=\"objIdentifier\" multiplicity=\"false\" label=\"Project id\" value=\"ec::216444\"/>" +
+		"<field name=\"projectcode\" indexId=\"projectcode\" multiplicity=\"false\" label=\"Project(s)\" value=\"216444\"/>" +
+		"<field name=\"projectacronym\" indexId=\"projectacronym\" multiplicity=\"false\" label=\"Project(s)\" value=\"PETAMEDIA\"/>" +
+		"<field name=\"projecttitle\" indexId=\"projecttitle\" multiplicity=\"false\" label=\"Project title\" value=\"PEer-to-peer TAgged MEDIA\"/>" +
+		"<field name=\"projectcontracttypeid\" indexId=\"projectcontracttypeid\" multiplicity=\"false\" label=\"Project contract type id\" value=\"NoE\"/>" +
+		"<field name=\"projectcontracttypename\" indexId=\"projectcontracttypename\" multiplicity=\"false\" label=\"Project contract type name\" value=\"Network of Excellence\"/>" +
+	"</field>" +
+	
+	"<field name=\"repository\" indexId=\"\" multiplicity=\"true\">      " +
+		"<field name=\"instanceId\" indexId=\"\" multiplicity=\"false\" value=\"WOS:000277866500014\"/>      " +
+			"<field name=\"datasource\" indexId=\"\" multiplicity=\"true\">         " +
+			"<field name=\"hostedby\" indexId=\"resulthostingdatasourceid\" multiplicity=\"false\" value=\"\"/>         " +
+			"<field name=\"collectedfrom\" indexId=\"resultcollectedfromdatasourceid\" multiplicity=\"false\" value=\"openaire\"/>     " +
+		"</field>      " +
+		"<field name=\"identifier\" indexId=\"resultidentifier\" multiplicity=\"true\" value=\"http://dx.doi.org/10.1016/j.jbiomech.2010.01.023\"/>   " +
+	"</field>" +
+	
+	"<field name=\"booleanValue\" indexId=\"resulttype\" multiplicity=\"true\" label=\"Type\" value=\"wrongvalue\"/>" +
+	"<field name=\"compliancy\" indexId=\"resulttype\" multiplicity=\"true\" label=\"Type\" value=\"true\"/>" +
+	"<field name=\"odnumberofitemsdate\" indexId=\"datasourceodnumberofitemsdate\" multiplicity=\"true\" label=\"date\" value=\"2012-10-30\"/>" +
+	"<field name=\"odnumberofitems\" indexId=\"datasourceodnumberofitems\" multiplicity=\"true\" label=\"number of items\" value=\"9767\"/>" +
+	"<field name=\"numberofitems\" indexId=\"datasourceodnumberofitems\" multiplicity=\"true\" label=\"number of items\" value=\"\"/>" +		   
+"</result>";
+	
+	private Parser parser = null;
+	
+	@Before
+	public void setup() {
+		parser = new Parser(xml);
+	}
+	
+	@Test
+	public void getValuesTest() throws XPathExpressionException{
+		//String existing
+		assertNotNull(parser.getValues("author.fullname"));
+		assertEquals(4, parser.getValues("author.fullname").length);
+		assertEquals("Prostov, Yuriy I.", parser.getValues("author.fullname")[1]);
+		
+		//String existing
+		assertNotNull(parser.getValues("resultId"));
+		assertEquals(1, parser.getValues("resultId").length);
+		assertEquals("WOS:000277866500014", parser.getValue("resultId"));
+		
+		//String not existing
+		assertNull(parser.getValue("foo"));
+		assertNull(parser.getValues("foo"));
+		
+		assertEquals("openaire",parser.getValue("repository.datasource.collectedfrom"));		
+		assertNull(parser.getValue("repository.foo.collectedfrom"));
+		
+		//String existing - wrong request		
+		assertNull(parser.getValue("project", new String[]{"ec::216444"}));
+		
+		//String existing - right request
+		assertEquals("PETAMEDIA", parser.getValue("project.projectacronym", new String[]{"ec::224853"}));
+		
+		//String existing - right request
+		assertEquals("PETAMEDIA", parser.getValue("project.projectacronym",new String[]{"ec::224853"}));
+		
+		//String not existing - right request
+		assertNull(parser.getValue("project.projectname", new String[]{"ec::224853"}));
+		
+		//Boolean check
+		assertNotNull(parser.getBoolean("booleanValue"));
+		assertEquals(Boolean.FALSE, parser.getBoolean("booleanValue"));
+		
+		assertNotNull(parser.getBoolean("compliancy"));
+		assertEquals(Boolean.TRUE, parser.getBoolean("compliancy"));
+		
+		assertNull(parser.getBoolean("notexisting"));
+		
+		//Date check
+		assertNull(parser.getDate("notexisting","wrong-format"));
+		assertNull(parser.getDate("odnumberofitemsdate","wrong-format"));
+		
+		assertNotNull(parser.getDate("odnumberofitemsdate","yyyy-mm-dd"));
+		
+		//Integer check
+		assertNull(parser.getInteger("repository.datasource.collectedfrom"));
+		assertNotNull(parser.getInteger("odnumberofitems"));
+		
+		assertEquals(parser.getInteger("odnumberofitems"), new Integer(9767));
+		assertNull(parser.getInteger("numberofitems"));
+
+		for (String name :parser.getValues("author")) {
+			System.out.println(parser.getValue("author.fullname", new String[]{name}));
+		}
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestVocabularyXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestVocabularyXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestVocabularyXmlConverter.java	(revision 48242)
@@ -0,0 +1,26 @@
+package gr.uoa.di.driver.xml;
+
+import javax.xml.bind.JAXBException;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import eu.dnetlib.domain.enabling.Vocabulary;
+
+public class TestVocabularyXmlConverter {
+
+	private String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><RESOURCE_PROFILE><HEADER><RESOURCE_IDENTIFIER value=\"aecdb60c-e1ed-40bd-a6c1-edc9993f07cb_Vm9jYWJ1bGFyeURTUmVzb3VyY2VzL1ZvY2FidWxhcnlEU1Jlc291cmNlVHlwZQ==\"/><RESOURCE_TYPE value=\"VocabularyDSResourceType\"/><RESOURCE_KIND value=\"VocabularyDSResources\"/><RESOURCE_URI value=\"\"/><DATE_OF_CREATION value=\"2013-11-18T10:46:37+01:00\"/></HEADER><BODY><CONFIGURATION><VOCABULARY_NAME code=\"dnet:countries\">dnet:countries</VOCABULARY_NAME><VOCABULARY_DESCRIPTION>dnet:countries</VOCABULARY_DESCRIPTION><TERMS><TERM english_name=\"ANDORRA\" native_name=\"ANDORRA\" encoding=\"OPENAIRE\" code=\"AD\"><SYNONYMS/></TERM> <TERM code=\"ZW\" encoding=\"OPENAIRE\" english_name=\"Zimbabwe\" native_name=\"Zimbabwe\"><SYNONYMS/></TERM></TERMS></CONFIGURATION><STATUS><LAST_UPDATE value=\"2013-11-18T10:46:36Z\"/></STATUS><SECURITY_PARAMETERS>String</SECURITY_PARAMETERS></BODY></RESOURCE_PROFILE>";
+	
+	@Test
+	public void xml2ObjectTest() throws JAXBException{
+		VocabularyXmlConverter vocabularyXmlConverter = new VocabularyXmlConverter();		
+		Vocabulary vocabulary = vocabularyXmlConverter.XmlToObject(xml);
+		
+		Assert.assertNotNull(vocabulary.getEnglishName("ZW"));
+		Assert.assertEquals("Zimbabwe", vocabulary.getEnglishName("ZW"));
+		
+		Assert.assertNotNull(vocabulary.getEncoding("Zimbabwe"));
+		Assert.assertEquals("ZW", vocabulary.getEncoding("Zimbabwe"));
+		
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/SecurityAwareResultSet.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/SecurityAwareResultSet.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/SecurityAwareResultSet.java	(revision 48242)
@@ -0,0 +1,93 @@
+package gr.uoa.di.driver.enabling.resultset;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.enabling.SecurityProfileSearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+
+public class SecurityAwareResultSet<D extends SecureDriverResource> implements
+		ResultSet<D> {
+
+	private Logger logger = Logger.getLogger(SecurityAwareResultSet.class);
+	private ResultSet<D> resultSet = null;
+	private ISLookUp<SecurityProfile> securityLookUp = null;
+
+	@Override
+	public void close() {
+		resultSet.close();
+	}
+
+	@Override
+	public List<D> get(int from, int to) {
+		List<D> list = resultSet.get(from, to);
+
+		try {
+			Map<String, SecurityProfile> secProfiles = this
+					.getSecurityProfiles(list);
+
+			for (D d : list) {
+				SecurityProfile secProfile = secProfiles.get(d.getResourceId());
+
+				d.setSecurityProfile(secProfile);
+			}
+		} catch (ISLookUpException e) {
+			logger.error("Error getting security profiles for resources");
+		}
+
+		return list;
+	}
+	@Override
+	public List<String> getElements(int from, int to) {
+		return resultSet.getElements(from, to);
+	}
+
+	@Override
+	public boolean isAlive() {
+		return resultSet.isAlive();
+	}
+
+	@Override
+	public boolean isOpen() {
+		return resultSet.isOpen();
+	}
+
+	@Override
+	public int size() {
+		return resultSet.size();
+	}
+
+	public void setSecurityLookUp(ISLookUp<SecurityProfile> securityLookUp) {
+		this.securityLookUp = securityLookUp;
+	}
+
+	public void setResultSet(ResultSet<D> resultSet) {
+		this.resultSet = resultSet;
+	}
+
+	private Map<String, SecurityProfile> getSecurityProfiles(List<D> profiles)
+			throws ISLookUpException {
+		SecurityProfileSearchCriteria crit = new SecurityProfileSearchCriteria();
+		Map<String, SecurityProfile> map = new HashMap<String, SecurityProfile>();
+
+		for (D d : profiles)
+			crit.getDriverResourceIds().add(d.getResourceId());
+
+		for (SecurityProfile secProfile : securityLookUp.fetch(crit))
+			map.put(secProfile.getDriverResourceId(), secProfile);
+
+		return map;
+	}
+
+	@Override
+	public EPR getEpr() {
+		return this.resultSet.getEpr();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/ISRegistryImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/ISRegistryImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/ISRegistryImpl.java	(revision 48242)
@@ -0,0 +1,100 @@
+package gr.uoa.di.driver.enabling.registry;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.enabling.ISRegistryService;
+import eu.dnetlib.api.enabling.ISRegistryServiceException;
+import eu.dnetlib.domain.DriverResource;
+import gr.uoa.di.driver.enabling.ISRegistry;
+import gr.uoa.di.driver.enabling.ISRegistryException;
+import gr.uoa.di.driver.util.ServiceLocator;
+import gr.uoa.di.driver.xml.ResourceToXmlConverter;
+
+public class ISRegistryImpl<D extends DriverResource> implements ISRegistry<D> {
+	private static Logger logger = Logger.getLogger(ISRegistry.class);
+
+	private ServiceLocator<ISRegistryService> registryLocator = null;
+	private ResourceToXmlConverter<D> converter = null;
+	private String resourceUri = null;
+
+	public D save(D object) throws ISRegistryException {
+		try {
+			String profileId = object.getResourceId();
+
+			if (object.getResourceUri() == null) {
+				object.setResourceUri(resourceUri);
+			}
+			
+			String xml = converter.ObjectToXml(object);
+
+			if (profileId == null) {
+				logger.debug("Saving profile: " + xml);
+				profileId = registryLocator.getService().registerProfile(
+						xml);
+
+				object.setResourceId(profileId);
+
+				logger.debug("done");
+			} else {
+				logger.debug("updating profile: " + xml);
+				registryLocator.getService().updateProfile(profileId, xml,
+						object.getResourceType());
+				logger.debug("done");
+			}
+		} catch (ISRegistryServiceException rse) {
+			throw new ISRegistryException("Error saving object", rse);
+		} catch (JAXBException je) {
+			throw new ISRegistryException("Error saving object", je);
+		}
+		
+		return object;
+	}
+
+	public void delete(D object) throws ISRegistryException {
+
+		try {
+			String profileId = object.getResourceId();
+
+			registryLocator.getService().deleteProfile(profileId);
+		} catch (ISRegistryServiceException rse) {
+			throw new ISRegistryException("Error deleting profile", rse);
+		}
+	}
+
+	@Override
+	public D insertForValidation(D object) throws ISRegistryException {
+		try {
+			
+			if (object.getResourceUri() == null) {
+				object.setResourceUri(resourceUri);
+			}
+			
+			String id = registryLocator.getService().insertProfileForValidation(
+					object.getResourceType(), converter.ObjectToXml(object));
+			
+			object.setResourceId(id);
+			
+			return object;
+		} catch (ISRegistryServiceException e) {
+			throw new ISRegistryException(
+					"Error inserting profile for validation", e);
+		} catch (JAXBException e) {
+			throw new ISRegistryException(
+					"Error inserting profile for validation", e);
+		}
+	}
+
+	public void setRegistryLocator(ServiceLocator<ISRegistryService> registryLocator) {
+		this.registryLocator = registryLocator;
+	}
+
+	public void setConverter(ResourceToXmlConverter<D> converter) {
+		this.converter = converter;
+	}
+
+	public void setResourceUri(String resourceUri) {
+		this.resourceUri = resourceUri;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISRegistryException.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISRegistryException.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISRegistryException.java	(revision 48242)
@@ -0,0 +1,18 @@
+package gr.uoa.di.driver.enabling;
+
+public class ISRegistryException extends Exception {
+	private static final long serialVersionUID = -1416313006769865476L;
+
+	public ISRegistryException() {
+		super();
+	}
+
+	public ISRegistryException(String message, Throwable cause) {
+		super(message, cause);
+	}
+	
+	public ISRegistryException(String message) {
+		super(message);
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/RefreshingServiceLocator.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/RefreshingServiceLocator.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/RefreshingServiceLocator.java	(revision 48242)
@@ -0,0 +1,97 @@
+package gr.uoa.di.driver.util;
+
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.DriverService;
+
+/**
+ * An implementation of the service locator that keeps a cache of the service
+ * and refreshes it periodically.
+ * 
+ * The actual task of service discovery is performed by a locator that is 
+ * injected. 
+ * 
+ * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+ *
+ * @param <S> the service type
+ */
+public class RefreshingServiceLocator<S extends DriverService> implements
+		ServiceLocator<S> {
+	/** The locator used to discover the service */
+	private ServiceLocator<S> locator = null;
+	/** the cached instance of the service */
+	private S service = null;
+	/** the executor that runs the refresh tasks */
+	private ScheduledExecutorService executor = null;
+	/** the discovery period in milliseconds*/
+	private long period = 0;
+
+	@Override
+	public synchronized S getService() {
+		if (service == null)
+			init();
+		
+		return service;
+	}
+
+	/** 
+	 * Called to initialize the locator. Performs the first service lookup and
+	 * also schedules the periodic refresh of the cache. 
+	 * 
+	 * */
+	private void init() {
+		this.service = locator.getService();
+
+		executor.scheduleWithFixedDelay(new RefreshTask(), period, period,
+				TimeUnit.MILLISECONDS);
+	}
+
+	/**
+	 * A very simple runnable that refreshed the cache. No synchronization is
+	 * needed during cache refresh: The old instance will be returned while the
+	 * locator is working to refresh the cache.
+	 * 
+	 * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+	 *
+	 */
+	private class RefreshTask implements Runnable {
+		private Logger logger = Logger.getLogger(RefreshTask.class);
+
+		@Override
+		public void run() {
+			try {
+				logger.debug("Refreshing service cache");
+				service = locator.getService();
+			} catch (Exception e) {
+				logger.info("Error refreshing service", e);
+			}
+		}
+	}
+
+	public ServiceLocator<S> getLocator() {
+		return locator;
+	}
+
+	public void setLocator(ServiceLocator<S> locator) {
+		this.locator = locator;
+	}
+
+	public ScheduledExecutorService getExecutor() {
+		return executor;
+	}
+
+	public void setExecutor(ScheduledExecutorService executor) {
+		this.executor = executor;
+	}
+
+	public long getPeriod() {
+		return period;
+	}
+
+	public void setPeriod(long period) {
+		this.period = period;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestCollectionXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestCollectionXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestCollectionXmlConverter.java	(revision 48242)
@@ -0,0 +1,82 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+import javax.xml.XMLConstants;
+import javax.xml.bind.JAXBException;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+
+import org.junit.Assert;
+
+import org.junit.Test;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import eu.dnetlib.domain.functionality.Collection;
+
+public class TestCollectionXmlConverter {
+	
+
+	@Test
+	public void test() throws SAXException, JAXBException, IOException {
+		Schema schema = loadSchema("src/xsd/CollectionDSResourceType.xsd");
+		
+		CollectionXmlConverter conv = new CollectionXmlConverter();
+		
+		//String xml1 = loadCollectionFromFile("test/junit/gr/uoa/di/driver/xml/collection.xml");
+		
+		Collection collection = new Collection();
+		collection.setDescription(java.util.Arrays.asList("description"));
+		collection.setName("Collection 1");
+		collection.setSubject("No subject");
+		collection.setDateOfCreation(new Date());
+		collection.setQuery("Query 1");
+		collection.setContainer(true);
+		collection.setRetrievalCondition("Condition 1");
+		collection.setFrozen(false);
+		
+		
+		collection.getDocumentsInBasket().add("document1");
+		collection.getDocumentsInBasket().add("document2");
+		
+		
+		String xml = conv.ObjectToXml(collection);
+		System.out.println(xml);
+		
+		Assert.assertEquals(xml, conv.ObjectToXml(conv.XmlToObject(xml)));
+		
+		validateXml(schema, xml);
+		validateXml(schema,conv.ObjectToXml(conv.XmlToObject(xml)));
+		
+	
+	}
+
+	
+	
+	
+	public static void validateXml(Schema schema, String xml)
+			throws SAXException, IOException {
+		Validator validator = schema.newValidator();
+		SAXSource source = new SAXSource(new InputSource(
+				new ByteArrayInputStream(xml.getBytes())));
+
+		validator.validate(source);
+	}
+
+	private Schema loadSchema(String name) throws SAXException {
+		String language = XMLConstants.W3C_XML_SCHEMA_NS_URI;
+		SchemaFactory factory = SchemaFactory.newInstance(language);
+		Schema schema = factory.newSchema(new File(name));
+
+		return schema;
+	}
+	
+	
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestUserProfileXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestUserProfileXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestUserProfileXmlConverter.java	(revision 48242)
@@ -0,0 +1,111 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+import javax.xml.XMLConstants;
+import javax.xml.bind.JAXBException;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+
+import org.junit.Assert;
+
+import org.junit.Test;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import eu.dnetlib.domain.functionality.SavedQuery;
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.domain.functionality.UserStore;
+
+public class TestUserProfileXmlConverter {
+	UserProfileXmlConverter conv;
+	Schema schema;
+
+	@Test
+	public void testSimpleUserProfile() throws Exception {
+
+		conv = new UserProfileXmlConverter();
+		UserProfile profile = new UserProfile();
+		profile.setEmail("Helenaki");
+		profile.setActivationId("123");
+		profile.setActive(true);
+		profile.setDateOfCreation(new Date());
+
+		testConverter(profile);
+		conv = null;
+
+	}
+	
+	
+	
+	@Test
+	public void testUserProfile() throws Exception {
+
+		conv = new UserProfileXmlConverter();
+		UserProfile profile = new UserProfile();
+		profile.setEmail("Helenaki");
+		profile.setActivationId("123");
+		profile.setActive(true);
+		profile.setDateOfCreation(new Date());
+
+		profile.setFilter(new SavedQuery());
+		profile.getFilter().setCqlText("cql");
+
+		profile.getFilter().setRefineText("refine");
+		profile.getFilter().getCollectionIds().add("Collection 1");
+
+		profile.getDocumentIds().add("Document 1");
+		profile.getDocumentIds().add("Document 2");
+
+		profile.setUserPhotoID("photoID");
+		profile.setStore(new UserStore());
+		profile.getStore().setStoreID("store ID");
+		profile.getStore().setStoreServiceURL("service URL");
+
+		SavedQuery squery = new SavedQuery();
+		squery.setCqlText("cqlTesxt");
+		squery.getCommunityIds().add("My community1");
+
+		profile.getSavedQueries().add(squery);
+
+		testConverter(profile);
+		conv = null;
+
+	}
+
+	private void testConverter(UserProfile userProfile) throws JAXBException,
+			SAXException, IOException {
+		String xml1 = conv.ObjectToXml(userProfile);
+
+		UserProfile user = conv.XmlToObject(xml1);
+
+		String xml2 = conv.ObjectToXml(user);
+
+		Assert.assertEquals(xml1, xml2);
+		System.out.println(xml1 + "\n\n\n");
+		schema = loadSchema("src/xsd/UserDSResourceType.xsd");
+		validateXml(schema, xml1);
+	}
+
+	public static void validateXml(Schema schema, String xml)
+			throws SAXException, IOException {
+		Validator validator = schema.newValidator();
+		SAXSource source = new SAXSource(new InputSource(
+				new ByteArrayInputStream(xml.getBytes())));
+
+		validator.validate(source);
+	}
+
+	private Schema loadSchema(String name) throws SAXException {
+		String language = XMLConstants.W3C_XML_SCHEMA_NS_URI;
+		SchemaFactory factory = SchemaFactory.newInstance(language);
+		Schema schema = factory.newSchema(new File(name));
+
+		return schema;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestCommunityXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestCommunityXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/xml/TestCommunityXmlConverter.java	(revision 48242)
@@ -0,0 +1,74 @@
+package gr.uoa.di.driver.xml;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import javax.xml.bind.JAXBException;
+
+import org.junit.Test;
+
+import eu.dnetlib.domain.functionality.Community;
+
+public class TestCommunityXmlConverter {
+	
+
+	@Test
+	public void test() throws JAXBException {
+		CommunityXmlConverter conv = new CommunityXmlConverter();
+		Community com = new Community();
+		
+		com.setName("communityName");
+		com.setResourceId("42");
+		com.setOwner("ownerId");
+		com.setDescription("Looooong descriptioooooon");
+		com.getAuthoritativeDocuments().add("authId1");
+		com.getAuthoritativeDocuments().add("authId2");
+		com.getAuthoritativeDocuments().add("authId3");
+		com.getAuthoritativeDocuments().add("authId4");
+		
+		String xml = conv.ObjectToXml(com);
+		assertNotNull(xml);
+		
+		com = conv.XmlToObject(xml);
+
+		assertEquals("communityName", com.getName());
+		assertEquals("42", com.getResourceId());
+		assertEquals("ownerId", com.getOwner());
+		assertEquals("Looooong descriptioooooon", com.getDescription());
+		assertNotNull(com.getAuthoritativeDocuments());
+		assertEquals(4, com.getAuthoritativeDocuments().size());
+	}
+	
+	@Test
+	public void testXml() throws JAXBException {
+		
+		String xml = "<RESOURCE_PROFILE>" +
+				"<HEADER>" +
+					"<RESOURCE_IDENTIFIER value=\"1-b42e67bf-b0f4-4cd2-b364-3acae398ee0b_Q29tbXVuaXR5RFNSZXNvdXJjZXMvQ29tbXVuaXR5RFNSZXNvdXJjZVR5cGU=\"/>" +
+					"<RESOURCE_TYPE value=\"CommunityDSResourceType\"/>" +
+					"<RESOURCE_KIND value=\"CommunityDSResources\"/>" +
+					"<RESOURCE_URI value=\"http://146.48.87.216:8180/community/services/CommunityService?wsdl\"/>" +
+					"<DATE_OF_CREATION value=\"2008-02-15T09:48:11+01:00\"/>" +
+					"</HEADER>"+
+					"<BODY>" +
+					"<CONFIGURATION>" +
+					"<NAME value=\"Computer Science in the UK\"/>"+
+					"<OWNER value=\"26-1fd69d42-a0e7-4c2a-8029-14c24fc05dec_VXNlckRTUmVzb3VyY2VzL1VzZXJEU1Jlc291cmNlVHlwZQ==\"/>"+
+					"<DESCRIPTION value=\"Publications in Computer Science from Repositories in the UK\"/>" +
+					"<COLLECTIONS>" + 
+					"<COLLECTION collection=\"22-8be06951-861f-44ac-9bd1-8a5a47df3c14_Q29sbGVjdGlvbkRTUmVzb3VyY2VzL0NvbGxlY3Rpb25EU1Jlc291cmNlVHlwZQ==\"/>"+
+					"<COLLECTION collection=\"32-46c93e25-f144-4665-bef2-f93856239328_Q29sbGVjdGlvbkRTUmVzb3VyY2VzL0NvbGxlY3Rpb25EU1Jlc291cmNlVHlwZQ==\"/>"+
+					"</COLLECTIONS>" +
+					"<MANAGERS/>" +
+					"<RECOMMENDATIONS/>" +
+					"</CONFIGURATION>" +
+					"<STATUS>value</STATUS>" +
+					"<SECURITY_PARAMETERS SECURITY_PARAMETER=\"Security Parameters\"/>" +
+					"</BODY>" +
+					"</RESOURCE_PROFILE>";
+		
+		CommunityXmlConverter conv = new CommunityXmlConverter();
+		conv.XmlToObject(xml);
+	}
+	
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/data/BrowseDataUtilTest.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/data/BrowseDataUtilTest.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/data/BrowseDataUtilTest.java	(revision 48242)
@@ -0,0 +1,69 @@
+package gr.uoa.di.driver.data;
+
+import eu.dnetlib.domain.data.BrowseData;
+import gr.uoa.di.driver.data.browsedata.BrowseDataUtil;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertArrayEquals;
+
+public class BrowseDataUtilTest {
+
+	private static String record = null;
+	
+	@Before
+	public void setup() {
+	}
+	
+	@Test
+	public void testFullRow(){
+		record =  "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
+                "<row>" +
+                        "<groupresult field=\"repositoryname\">" +
+                        "<count>12946</count>" +
+                        "<value>DigitalCommons@USU</value>" +
+                    "</groupresult>" +
+                "</row>";
+
+        record =  "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><row><groupresult field=\"repositoryname\"><count>12946</count><value>DigitalCommons@USU</value></groupresult><groupresult field=\"cobjcategory\"><count>12946</count><value>0000</value></groupresult><groupresult field=\"language\"><count>12946</count><value>und</value></groupresult></row>";
+
+/*           record = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
+                "<row>" +
+                    "<groupresult field=\"language\">" +
+                        "<count>266</count>" +
+                        "<value>spa</value>" +
+                    "</groupresult>" +
+                "</row>";
+*/
+		BrowseData expected = new BrowseData();
+		expected.addFieldEntry("repositoryName", "DigitalCommons@USU", 12946);
+		expected.addFieldEntry("cobjcategory", "0000", 12946);
+		expected.addFieldEntry("language", "und", 12946);
+
+//      expected.addFieldEntry("language", "spa", 266);
+		BrowseData actual = BrowseDataUtil.parseRows(record);
+		
+		//record =  "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><row><groupresult field=\"repositoryname\"><count>12946</count><value>DigitalCommons@USU</value></groupresult><groupresult field=\"cobjcategory\"><value>0000</value><count>12946</count></groupresult><groupresult field=\"language\"><value>und</value><count>12946</count></groupresult></row>";
+		assertArrayEquals(expected.getFields().toArray(), actual.getFields().toArray());
+		for (String field:expected.getFields()){
+			assertArrayEquals(expected.getFieldValues(field).toArray(), actual.getFieldValues(field).toArray());
+		}
+		
+	}
+	
+	@Test
+	public void testIncompleteRow(){
+		record =  "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><row><groupresult field=\"repositoryname\"><value>DigitalCommons@USU</value></groupresult><groupresult field=\"cobjcategory\"><count>12946</count><value>0000</value></groupresult><groupresult field=\"language\"><count>12946</count></groupresult></row>";
+		BrowseData expected = new BrowseData();
+		expected.addFieldEntry("repositoryName", "DigitalCommons@USU", 0);
+		expected.addFieldEntry("cobjcategory", "0000", 12946);
+		expected.addFieldEntry("language", null, 12946);
+		
+		BrowseData actual = BrowseDataUtil.parseRows(record);
+		
+		assertArrayEquals(expected.getFields().toArray(), actual.getFields().toArray());
+		for (String field:expected.getFields()){
+			assertArrayEquals(expected.getFieldValues(field).toArray(), actual.getFieldValues(field).toArray());
+		}
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/ChainVocabularyLoader.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/ChainVocabularyLoader.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/ChainVocabularyLoader.java	(revision 48242)
@@ -0,0 +1,48 @@
+package gr.uoa.di.driver.enabling.vocabulary;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.enabling.Vocabulary;
+
+public class ChainVocabularyLoader implements VocabularyLoader{
+
+	private Map<String, VocabularyLoader> vocabularyMap = null;
+	private VocabularyLoader defaultVocabularyLoader = null;
+	
+	private static Logger logger = Logger.getLogger(ChainVocabularyLoader.class);
+	
+	@Override
+	public Vocabulary getVocabulary(String vocabularyName, Locale locale, Locale defaultLocale) {
+		logger.debug("loading vocabulary with name " + vocabularyName + " locale " + locale + " default locale " + defaultLocale); 
+		
+		if (vocabularyName == null)
+			return null;
+		
+		VocabularyLoader loader = vocabularyMap.get(vocabularyName);
+		if (loader == null){
+			loader = defaultVocabularyLoader;
+		}
+		
+		return loader.getVocabulary(vocabularyName, locale, defaultLocale);
+	}
+
+	public Map<String, VocabularyLoader> getVocabularyMap() {
+		return vocabularyMap;
+	}
+
+	public void setVocabularyMap(Map<String, VocabularyLoader> vocabularyMap) {
+		this.vocabularyMap = vocabularyMap;
+	}
+
+	public VocabularyLoader getDefaultVocabularyLoader() {
+		return defaultVocabularyLoader;
+	}
+
+	public void setDefaultVocabularyLoader(VocabularyLoader defaultVocabularyLoader) {
+		this.defaultVocabularyLoader = defaultVocabularyLoader;
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/AASExecutor.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/AASExecutor.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/AASExecutor.java	(revision 48242)
@@ -0,0 +1,198 @@
+package gr.uoa.di.driver.enabling.a2;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * An implementation of the ScheduledExecutorService that takes care of 
+ * preserving the value of a ThreadLocal variable in each tasks thread.
+ *  
+ * @author antleb
+ *
+ */
+public class AASExecutor implements ScheduledExecutorService {
+	private ThreadLocal<String> callerSecurityContext = null;
+	private ScheduledExecutorService executorService = null;
+
+	@Override
+	public ScheduledFuture<?> schedule(Runnable command, long delay,
+			TimeUnit unit) {
+		return executorService.schedule(new AASRunnable(command), delay, unit);
+	}
+
+	@Override
+	public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay,
+			TimeUnit unit) {
+		return executorService.schedule(new AASCallable<V>(callable), delay,
+				unit);
+	}
+
+	@Override
+	public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
+			long initialDelay, long period, TimeUnit unit) {
+		return scheduleAtFixedRate(new AASRunnable(command), initialDelay,
+				period, unit);
+	}
+
+	@Override
+	public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
+			long initialDelay, long delay, TimeUnit unit) {
+		return executorService.scheduleWithFixedDelay(new AASRunnable(command),
+				initialDelay, delay, unit);
+	}
+
+	@Override
+	public boolean awaitTermination(long timeout, TimeUnit unit)
+			throws InterruptedException {
+		return executorService.awaitTermination(timeout, unit);
+	}
+
+	@Override
+	public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
+			throws InterruptedException {
+		Collection<Callable<T>> aasTasks = new ArrayList<Callable<T>>();
+
+		for (Callable<T> task : tasks)
+			aasTasks.add(new AASCallable<T>(task));
+
+		return executorService.invokeAll(tasks);
+	}
+
+	@Override
+	public <T> List<Future<T>> invokeAll(
+			Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
+			throws InterruptedException {
+		Collection<Callable<T>> aasTasks = new ArrayList<Callable<T>>();
+
+		for (Callable<T> task : tasks)
+			aasTasks.add(new AASCallable<T>(task));
+
+		return executorService.invokeAll(aasTasks, timeout, unit);
+	}
+
+	@Override
+	public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
+			throws InterruptedException, ExecutionException {
+		Collection<Callable<T>> aasTasks = new ArrayList<Callable<T>>();
+
+		for (Callable<T> task : tasks)
+			aasTasks.add(new AASCallable<T>(task));
+
+		return executorService.invokeAny(aasTasks);
+	}
+
+	@Override
+	public <T> T invokeAny(Collection<? extends Callable<T>> tasks,
+			long timeout, TimeUnit unit) throws InterruptedException,
+			ExecutionException, TimeoutException {
+		Collection<Callable<T>> aasTasks = new ArrayList<Callable<T>>();
+
+		for (Callable<T> task : tasks)
+			aasTasks.add(new AASCallable<T>(task));
+
+		return executorService.invokeAny(aasTasks, timeout, unit);
+	}
+
+	@Override
+	public boolean isShutdown() {
+		return executorService.isShutdown();
+	}
+
+	@Override
+	public boolean isTerminated() {
+		return executorService.isTerminated();
+	}
+
+	@Override
+	public void shutdown() {
+		executorService.shutdown();
+	}
+
+	@Override
+	public List<Runnable> shutdownNow() {
+		executorService.shutdownNow();
+		return null;
+	}
+
+	@Override
+	public <T> Future<T> submit(Callable<T> task) {
+		return executorService.submit(new AASCallable<T>(task));
+	}
+
+	@Override
+	public Future<?> submit(Runnable task) {
+		return executorService.submit(new AASRunnable(task));
+	}
+
+	@Override
+	public <T> Future<T> submit(Runnable task, T result) {
+		return executorService.submit(new AASRunnable(task), result);
+	}
+
+	@Override
+	public void execute(Runnable command) {
+		executorService.execute(new AASRunnable(command));
+	}
+
+	class AASRunnable implements Runnable {
+		private Runnable runnable = null;
+		String securityContext = null;
+
+		public AASRunnable(Runnable runnable) {
+			this.runnable = runnable;
+
+			// runs in main thread
+			this.securityContext = callerSecurityContext.get();
+		}
+
+		public void run() {
+			// runs in another thread
+			callerSecurityContext.set(securityContext);
+			runnable.run();
+		}
+	}
+
+	class AASCallable<V> implements Callable<V> {
+		private Callable<V> callable = null;
+		String securityContext = null;
+
+		public AASCallable(Callable<V> callable) {
+			this.callable = callable;
+
+			// runs in main thread
+			this.securityContext = callerSecurityContext.get();
+		}
+
+		public V call() throws Exception {
+			// runs in another thread
+			callerSecurityContext.set(securityContext);
+
+			return callable.call();
+		}
+	}
+
+	public ThreadLocal<String> getCallerSecurityContext() {
+		return callerSecurityContext;
+	}
+
+	public void setCallerSecurityContext(
+			ThreadLocal<String> callerSecurityContext) {
+		this.callerSecurityContext = callerSecurityContext;
+	}
+
+	public ScheduledExecutorService getExecutorService() {
+		return executorService;
+	}
+
+	public void setExecutorService(ScheduledExecutorService executorService) {
+		this.executorService = executorService;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetFactoryImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetFactoryImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetFactoryImpl.java	(revision 48242)
@@ -0,0 +1,82 @@
+package gr.uoa.di.driver.enabling.resultset;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.enabling.ResultSetService;
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.util.ObjectToXmlConverter;
+import eu.dnetlib.utils.resolver.EndpointResolver;
+import gr.uoa.di.driver.enabling.ISLookUp;
+
+public class ResultSetFactoryImpl implements ResultSetFactory {
+	private static Logger logger = Logger.getLogger(ResultSetFactoryImpl.class);
+	private Map<Class<?>, ObjectToXmlConverter<?>> converterMap = new HashMap<Class<?>, ObjectToXmlConverter<?>>();
+	private ISLookUp<SecurityProfile> securityLookUp = null;
+	private EndpointResolver endpointResolver = null;
+
+    @Override
+	public <D> ResultSet<D> createResultSet(ResultSet<?> rs,
+			Class<D> resourceClass) {
+		return createResultSet(rs.getEpr(), resourceClass);
+	}
+
+    @Override
+	public ResultSet<String> createResultSet(EPR epr) {
+		return createResultSet(epr, String.class);
+	}
+	
+	@SuppressWarnings("unchecked")
+    @Override
+	public <D> ResultSet<D> createResultSet(EPR epr, Class<D> resourceClass) {
+		logger.debug("Creating result set for resource type: "
+				+ resourceClass.getSimpleName() + " and RSService: " + epr.getAddress());
+		
+		ResultSetImpl<D> rs = null;
+		ResultSetService rsService = endpointResolver.getService(ResultSetService.class, epr);
+		String rsIdentifier = epr.getParameter("ResourceIdentifier");
+		
+		if (resourceClass.equals(String.class)) {
+			rs = new ResultSetImpl<D>(rsService, rsIdentifier);
+		} else {
+
+			ObjectToXmlConverter<D> converter = (ObjectToXmlConverter<D>) converterMap
+					.get(resourceClass);
+
+			if (converter != null)
+				rs = new ResultSetImpl<D>(rsService, rsIdentifier, converter);
+		}
+		
+		return rs;
+	}
+
+    @Override
+	public <D extends SecureDriverResource> ResultSet<D> createSecurityAwareRS(
+			EPR epr, Class<D> resourceClass) {
+		logger.debug("Creating security aware result set for resource type: "
+				+ resourceClass.getSimpleName());
+		
+		SecurityAwareResultSet<D> rs = new SecurityAwareResultSet<D>();
+
+		rs.setResultSet(createResultSet(epr, resourceClass));
+		rs.setSecurityLookUp(securityLookUp);
+
+		return rs;
+	}
+
+	public void setConverterMap(Map<Class<?>, ObjectToXmlConverter<?>> converterMap) {
+		this.converterMap = converterMap;
+	}
+
+	public void setSecurityLookUp(ISLookUp<SecurityProfile> securityLookUp) {
+		this.securityLookUp = securityLookUp;
+	}
+
+	public void setEndpointResolver(EndpointResolver endpointResolver) {
+		this.endpointResolver = endpointResolver;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSet.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSet.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSet.java	(revision 48242)
@@ -0,0 +1,21 @@
+package gr.uoa.di.driver.enabling.resultset;
+
+import java.util.List;
+
+import eu.dnetlib.domain.EPR;
+
+public interface ResultSet<D> {
+	public boolean isOpen();
+	
+	public boolean isAlive();
+	
+	public void close();
+
+	public int size();
+	
+	public List<String> getElements(int from, int to);
+	
+	public List<D> get(int from, int to);
+	
+	public EPR getEpr();
+}

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSet.java
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/CacheAwareRegistryImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/CacheAwareRegistryImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/CacheAwareRegistryImpl.java	(revision 48242)
@@ -0,0 +1,81 @@
+package gr.uoa.di.driver.enabling.registry;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.DriverService;
+import eu.dnetlib.domain.ActionType;
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.ResourceType;
+import eu.dnetlib.domain.enabling.Notification;
+import gr.uoa.di.driver.enabling.ISRegistry;
+import gr.uoa.di.driver.enabling.ISRegistryException;
+import gr.uoa.di.driver.xml.ResourceToXmlConverter;
+
+public class CacheAwareRegistryImpl<D extends DriverResource> implements ISRegistry<D> {
+	private static Logger logger = Logger.getLogger(CacheAwareRegistryImpl.class);
+	private ISRegistry<D> registry = null;
+	private DriverService notificationService = null;
+	private ResourceType resourceType = null;
+	private ResourceToXmlConverter<D> converter = null;
+	
+	@Override
+	public void delete(D object) throws ISRegistryException {
+		logger.debug("Deleting object " + object.getResourceId());
+		registry.delete(object);
+		
+		sendNotification(ActionType.DELETE, object);
+	}
+
+	@Override
+	public D insertForValidation(D object) throws ISRegistryException {
+		return registry.insertForValidation(object);
+	}
+
+	@Override
+	public D save(D object) throws ISRegistryException {
+		boolean newObject = (object.getResourceId() == null);
+
+		logger.debug("saving object with id " + object.getResourceId());
+		object = registry.save(object);
+		
+		if (newObject)
+			sendNotification(ActionType.CREATE, object);
+		else
+			sendNotification(ActionType.UPDATE, object);
+		
+		return object;
+	}
+	
+	private void sendNotification(ActionType actionType, D object) {
+		try {
+			if (logger.isDebugEnabled())
+				logger.debug("Sending immediate notification to cache: ("
+						+ actionType.getValue() + ", "
+						+ resourceType.getValue());
+
+			Notification notification = new Notification(null, converter
+					.ObjectToXml(object), object.getResourceId(),
+					this.resourceType, actionType);
+
+			notificationService.notify(notification);
+		} catch (Exception e) {
+			logger.error("Error notifying service", e);
+		}
+	}
+
+	public void setRegistry(ISRegistry<D> registry) {
+		this.registry = registry;
+	}
+
+	public void setNotificationService(DriverService notificationService) {
+		this.notificationService = notificationService;
+	}
+
+	public void setResourceType(ResourceType resourceType) {
+		this.resourceType = resourceType;
+	}
+
+	public void setConverter(ResourceToXmlConverter<D> converter) {
+		this.converter = converter;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/SubscriptionException.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/SubscriptionException.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/SubscriptionException.java	(revision 48242)
@@ -0,0 +1,13 @@
+package gr.uoa.di.driver.enabling;
+
+public class SubscriptionException extends Exception {
+	private static final long serialVersionUID = -8149316906947234472L;
+
+	public SubscriptionException(String mesg) {
+		super(mesg);
+	}
+
+	public SubscriptionException(String mesg, Throwable cause) {
+		super(mesg, cause);
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/enabling/a2/TestAASExecutor.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/enabling/a2/TestAASExecutor.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/enabling/a2/TestAASExecutor.java	(revision 48242)
@@ -0,0 +1,54 @@
+package gr.uoa.di.driver.enabling.a2;
+
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Assert;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class TestAASExecutor {
+
+	public static ThreadLocal<String> t = new ThreadLocal<String>();
+	public static AASExecutor executor = null;
+
+	@BeforeClass
+	public static void setup() {
+		ScheduledExecutorService service = java.util.concurrent.Executors
+				.newScheduledThreadPool(1);
+
+		executor = new AASExecutor();
+		executor.setExecutorService(service);
+		executor.setCallerSecurityContext(t);
+	}
+
+	@Test
+	public void test() throws InterruptedException {
+		t.set("value");
+		Task task = new Task(t);
+
+		executor.execute(task);
+		
+		TimeUnit.SECONDS.sleep(1);
+		
+		Assert.assertEquals(t.get(), task.getValueOfT());
+	}
+
+	class Task implements Runnable {
+		private ThreadLocal<String> t = null;
+		String valueOfT = null;
+
+		public String getValueOfT() {
+			return valueOfT;
+		}
+
+		public Task(ThreadLocal<String> t) {
+			this.t = t;
+		}
+
+		public void run() {
+			valueOfT = t.get();
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/FallBackServiceLocator.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/FallBackServiceLocator.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/FallBackServiceLocator.java	(revision 48242)
@@ -0,0 +1,37 @@
+package gr.uoa.di.driver.util;
+
+import eu.dnetlib.api.DriverService;
+
+public class FallBackServiceLocator<S extends DriverService>
+	implements ServiceLocator<S> {
+
+	private ServiceLocator<S> mainLocator = null;
+	private ServiceLocator<S> fallBackLocator = null;
+	
+	@Override
+	public S getService() {
+		S service = null;
+		
+		if (mainLocator != null)
+			service = mainLocator.getService();
+		
+		if (service == null && fallBackLocator != null)
+			service = fallBackLocator.getService();
+		
+		return service;
+	}
+
+	public FallBackServiceLocator(ServiceLocator<S> mainLocator,
+			ServiceLocator<S> fallBackLocator) {
+		this.mainLocator = mainLocator;
+		this.fallBackLocator = fallBackLocator;
+	}
+
+	public void setMainLocator(ServiceLocator<S> mainLocator) {
+		this.mainLocator = mainLocator;
+	}
+
+	public void setFallBackLocator(ServiceLocator<S> fallBackLocator) {
+		this.fallBackLocator = fallBackLocator;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/enabling/registry/TestValidation.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/enabling/registry/TestValidation.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/gr/uoa/di/driver/enabling/registry/TestValidation.java	(revision 48242)
@@ -0,0 +1,171 @@
+package gr.uoa.di.driver.enabling.registry;
+
+import java.util.Date;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.functionality.Collection;
+import eu.dnetlib.domain.functionality.Community;
+import eu.dnetlib.domain.functionality.QueryHash;
+import eu.dnetlib.domain.functionality.Recommendation;
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import gr.uoa.di.driver.xml.CollectionXmlConverter;
+import gr.uoa.di.driver.xml.CommunityXmlConverter;
+import gr.uoa.di.driver.xml.QueryHashXmlConverter;
+import gr.uoa.di.driver.xml.RecommendationXmlConverter;
+import gr.uoa.di.driver.xml.SecurityProfileXmlConverter;
+import gr.uoa.di.driver.xml.UserProfileXmlConverter;
+
+public class TestValidation {
+
+//	private static String registryAddress = "http://146.48.85.160:8280/is/services/isRegistry";
+	private static String registryAddress = "http://node3.t.openaire.research-infrastructures.eu:8280/cnr-container-latest/services/isRegistry";
+
+	private static ISRegistryService registry = null;
+
+	@BeforeClass
+	public static void setup() {
+		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
+		factory.setServiceClass(ISRegistryService.class);
+		factory.setAddress(registryAddress);
+
+		registry = (ISRegistryService) factory.create();
+	}
+
+	public void testSecProf() throws JAXBException {
+		SecurityProfile sp = new SecurityProfile();
+		String xml = new SecurityProfileXmlConverter().ObjectToXml(sp);
+
+		System.out.println(xml);
+
+		try {
+			System.out.println(registry.registerProfile(xml));
+		} catch (ISRegistryException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void testRecommendation() throws JAXBException {
+		Recommendation r = new Recommendation();
+		r.setExpirationDate(new Date());
+		String xml = new RecommendationXmlConverter().ObjectToXml(r);
+
+		System.out.println(xml);
+
+		try {
+			System.out.println(registry.registerProfile(xml));
+		} catch (ISRegistryException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void testHashQuery() throws JAXBException {
+		QueryHash qh = new QueryHash();
+		String xml = new QueryHashXmlConverter().ObjectToXml(qh);
+
+		System.out.println(xml);
+
+		try {
+			System.out.println(registry.registerProfile(xml));
+		} catch (ISRegistryException e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	public void testCollection() throws JAXBException {
+		Collection col = new Collection();
+		String xml = new CollectionXmlConverter().ObjectToXml(col);
+
+		System.out.println(xml);
+
+		try {
+			System.out.println(registry.registerProfile(xml));
+		} catch (ISRegistryException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void testCommunity() throws JAXBException {
+		Community comm = new Community();
+		String xml = new CommunityXmlConverter().ObjectToXml(comm);
+
+		System.out.println(xml);
+
+		try {
+			System.out.println(registry.registerProfile(xml));
+		} catch (ISRegistryException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void testProfile() throws JAXBException {
+		UserProfile prof = new UserProfile();
+
+		String xml = new UserProfileXmlConverter().ObjectToXml(prof);
+
+		System.out.println(xml);
+
+		try {
+			String id = registry.registerProfile(xml);
+
+			System.out.println(id);
+		} catch (ISRegistryException e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Test
+	public void testRepository() throws JAXBException {
+//		Repository repo = new Repository();
+//		RepositoryInterface repoInter = new RepositoryInterface();
+//
+////		repoInter.setAccessProtocol("OAI");
+//		repoInter.setAddress("http://www.www.ww.gr");
+//		repoInter.setExposedFormats(Arrays.asList("f1", "f2"));
+//		repoInter.setExposedSets(Arrays.asList("s1", "s2"));
+//
+//		repo.setResourceId("");
+////		repo.setResourceUri("uri");
+//
+//		repo.setOfficialName("officialName");
+//		repo.setAdminEmail("adminEmail");
+//		repo.setAdministratorContactInfo("administratorContactInfo");
+//		repo.setEnglishName("englishName");
+//		repo.setTypology("Eprints");
+//		repo.setCountry("gr");
+//		repo.setRepositoryInstitution("repositoryInstitution");
+//		repo.setEntryUrl("http://www.a.b.c");
+//		repo.setInterfaces(Arrays.asList(repoInter));
+//
+//		String xml = new RepositoryXmlConverter().ObjectToXml(repo);
+//
+//		System.out.println(xml);
+//
+//		try {
+//			String id = registry.insertProfileForValidation(
+//					"RepositoryServiceResourceType", xml);
+//
+//			id = registry.validateProfile(id);
+//
+//			System.out.println("id: " + id);
+//
+//			repo.setResourceId(id);
+//			xml = new RepositoryXmlConverter().ObjectToXml(repo);
+//
+//			System.out.println(xml);
+//
+//			registry.updateProfile(id, xml, "RepositoryServiceResourceType");
+//
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/CleanupSecurityProfiles.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/CleanupSecurityProfiles.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/java/CleanupSecurityProfiles.java	(revision 48242)
@@ -0,0 +1,116 @@
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.utils.md5.MD5;
+import gr.uoa.di.driver.xml.SecurityProfileXmlConverter;
+import gr.uoa.di.driver.xml.UserProfileXmlConverter;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+public class CleanupSecurityProfiles {
+	final static File rootDir = new File("/home/antleb/projects/dnet1.1/uoa-is/cnr-test-profiles/src/main/eu/dnetlib/test/profiles/");
+	final static File userDir = new File(rootDir, "UserDSResources/UserDSResourceType");
+	final static File secProfDir = new File(rootDir, "SecurityProfileDSResources/SecurityProfileDSResourceType");
+	
+	public static void cleanupUserProfiles()
+			throws JAXBException, IOException {
+		UserProfileXmlConverter conv = new UserProfileXmlConverter();
+		File[] xmlsFiles = userDir.listFiles(new FilenameFilter() {
+
+			@Override
+			public boolean accept(File dir, String name) {
+				return name.endsWith(".xml");
+			}
+		});
+		List<String> users = new ArrayList<String>();
+
+		for (File xmlFile : xmlsFiles) {
+			String xml = readXml(xmlFile);
+			UserProfile user = conv.XmlToObject(xml);
+			
+			if (users.contains(user.getEmail())) {
+				System.out.println("user with email '" + user.getEmail() + "' already exists. Removing profile");
+				xmlFile.delete();
+			} else {
+				users.add(user.getEmail());
+			}
+		}
+	}
+
+	public static void cleanupSecProfiles() throws JAXBException,
+			NoSuchAlgorithmException, IOException {
+		SecurityProfileXmlConverter conv = new SecurityProfileXmlConverter();
+		File[] xmlsFiles = secProfDir.listFiles(new FilenameFilter() {
+
+			@Override
+			public boolean accept(File dir, String name) {
+				return name.endsWith(".xml");
+			}
+		});
+
+		for (File xmlFile : xmlsFiles) {
+			String xml = readXml(xmlFile);
+			SecurityProfile secProfile = conv.XmlToObject(xml);
+			
+			if (secProfile.getDriverResourceId() == null
+					|| secProfile.getDriverResourceId().trim().equals("")) {
+				System.out.println("Security profile is orphan: " + secProfile.getResourceId());
+				xmlFile.delete();
+			} else if (!new File(userDir, secProfile.getDriverResourceId().split("_")[0] + ".xml").exists()) {
+				System.out.println("Security profile points to non existing user: " + secProfile.getResourceId());
+				xmlFile.delete();
+								
+			} else {
+				System.out.println("---");
+				if (secProfile.getPassword() != null) {
+					String oldPass = secProfile.getPassword();
+					String newPass = MD5.encrypt2Hex(oldPass);
+
+					System.out.println(oldPass + " -> " + newPass);
+
+					secProfile.setPassword(newPass);
+
+					xml = conv.ObjectToXml(secProfile);
+
+					saveXml(xml, xmlFile);
+				}
+			} 
+		}
+	}
+
+	private static void saveXml(String xml, File xmlFile) throws IOException {
+		FileWriter fw = new FileWriter(xmlFile);
+
+		fw.append(xml);
+
+		fw.close();
+	}
+
+	private static String readXml(File xmlFile) throws IOException {
+		FileReader fr = new FileReader(xmlFile);
+		StringBuilder sb = new StringBuilder();
+		char buffer[] = new char[1024];
+		while (fr.read(buffer) != -1) {
+			sb.append(buffer);
+
+			buffer = new char[1024];
+		}
+
+		fr.close();
+
+		return sb.toString().trim();
+	}
+
+	public static void main(String[] args) throws Exception {
+		cleanupUserProfiles();
+		cleanupSecProfiles();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISLookUpException.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISLookUpException.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISLookUpException.java	(revision 48242)
@@ -0,0 +1,22 @@
+package gr.uoa.di.driver.enabling;
+
+public class ISLookUpException extends Exception {
+	private static final long serialVersionUID = 4691603229194605466L;
+
+	public ISLookUpException() {
+		super();
+	}
+
+	public ISLookUpException(String message, Throwable cause) {
+		super(message, cause);
+	}
+	
+	public ISLookUpException(String message) {
+		super(message);
+	}
+
+	public ISLookUpException(Throwable cause) {
+		super(cause);
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/StaticServiceLocator.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/StaticServiceLocator.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/StaticServiceLocator.java	(revision 48242)
@@ -0,0 +1,39 @@
+package gr.uoa.di.driver.util;
+
+import eu.dnetlib.api.DriverService;
+
+/**
+ * An implementation of the ServiceLocator that returns a predefined instance
+ * of a service.
+ * 
+ * Can be used for debug purposes, FallBackLocator or when 2 services A and B 
+ * are deployed in the same application (in this case, service A will get an 
+ * instance of a StaticServiceLocator<B> in order to avoid calls to the IS and 
+ * traversing the whole SOAP stack in order to communicate with B). 
+ * 
+ * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+ *
+ * @param <S>
+ */
+public class StaticServiceLocator<S extends DriverService>
+	implements ServiceLocator<S> {
+	
+	private S service = null;
+	
+	public StaticServiceLocator() {
+		
+	}
+
+	public StaticServiceLocator(S service) {
+		this.service = service;
+	}
+	
+	@Override
+	public S getService() {
+		return service;
+	}
+
+	public void setService(S service) {
+		this.service = service;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceLocatorFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceLocatorFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceLocatorFactory.java	(revision 48242)
@@ -0,0 +1,34 @@
+package gr.uoa.di.driver.util;
+
+import eu.dnetlib.api.DriverService;
+
+/**
+ * A factory to create service locators.
+ * 
+ * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+ *
+ */
+public interface ServiceLocatorFactory {
+
+	/**
+	 * Creates a dynamic service locator.
+	 * 
+	 * @param <S> the service type.
+	 * @param serviceClass the service class.
+	 * @return A service locator for services of type S.
+	 */
+	public <S extends DriverService> ServiceLocator<S> newServiceLocator(
+			Class<S> serviceClass);
+	
+	/**
+	 * Creates a service locator. It can be either static (if serviceUrl != null)
+	 * or dynamic.
+	 * 
+	 * @param <S> the service type.
+	 * @param serviceClass the service class.
+	 * @param serviceUrl The service URL.
+	 * @return A service locator for services of type S.
+	 */
+	public <S extends DriverService> ServiceLocator<S> newServiceLocator(
+			Class<S> serviceClass, String serviceUrl);
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/data/browsedata/BrowseDataUtil.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/data/browsedata/BrowseDataUtil.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/data/browsedata/BrowseDataUtil.java	(revision 48242)
@@ -0,0 +1,112 @@
+package gr.uoa.di.driver.data.browsedata;
+
+import eu.dnetlib.domain.data.BrowseData;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import javax.xml.xpath.*;
+import java.io.StringReader;
+
+public class BrowseDataUtil {
+
+	static XPathExpression FIELD_EXPR = null;
+	static XPathExpression VALUE_EXPR = null;
+	static XPathExpression COUNT_EXPR = null;
+	static XPathExpression GROUP_RESULT_EXPR = null;
+	
+	static {
+		XPathFactory factory = XPathFactory.newInstance();
+		XPath xpath = factory.newXPath();
+		//xpath.setNamespaceContext(new RSClientNSContext());
+
+		try {
+			FIELD_EXPR = xpath.compile("//groupresult/@field");
+			VALUE_EXPR = xpath.compile("//value");
+			COUNT_EXPR = xpath.compile("//count");
+			GROUP_RESULT_EXPR = xpath.compile("//groupresult");
+			
+		} catch (XPathExpressionException e) {
+			throw new RuntimeException("Failed to build xpath expression.", e);
+		}
+	}
+	
+	static Logger logger = Logger.getLogger(BrowseDataUtil.class);
+	
+	
+	private static InputSource source(String message) {
+		return 	new InputSource(new StringReader(message));
+	}
+	
+	private static String parseString(String record, XPathExpression expr) {
+		String result = null;
+		try {
+			result = (String) expr.evaluate(
+					source(record), XPathConstants.STRING);
+
+		} catch (XPathExpressionException xpee) {
+			logger.error("Cannot parse record "
+					+ record.replaceAll("\n", " "), xpee);
+		}
+		return result;
+	}
+	
+	public static BrowseData parseRows(String record) {
+        logger.debug("Record " + record);
+
+    //    record = record.replaceAll("\t","");
+        record = record.replaceAll("\n","");
+
+        //    logger.debug("Record new " + record);
+        //record = record.replaceAll(" ","");
+
+		BrowseData bd = new BrowseData();
+		
+		try {
+			NodeList nodes = (NodeList) GROUP_RESULT_EXPR.evaluate(source(record), XPathConstants.NODESET);
+				
+			for (int i = 0; i < nodes.getLength(); i++) {
+				Node node = nodes.item(i);
+				String field = node.getAttributes().getNamedItem("field").getTextContent();
+
+				int count = 0;
+				String value = null;
+
+				for (int j = 0; j < node.getChildNodes().getLength(); j++) {
+                    Node child = node.getChildNodes().item(j);
+                    if (child.getNodeType() != 3) {
+                        if (child.getLocalName().toLowerCase().equals("count"))
+                            count = Integer.parseInt(child.getTextContent());
+                        else if (child.getLocalName().toLowerCase().equals("value"))
+                            value = child.getTextContent();
+                    }
+                }
+				bd.addFieldEntry(field, value, count);
+			}
+		} catch (XPathExpressionException e) {
+			logger.warn("Error parsing index row.", e);
+		}
+
+		return bd;
+	}
+
+	public static String parseField(String record) {
+		return parseString(record, FIELD_EXPR);
+	}
+
+	public static String parseValue(String record) {
+		return parseString(record, VALUE_EXPR);
+	}
+
+	public static int parseCount(String record) {
+		String text = parseString(record, COUNT_EXPR);
+		int count = 0;
+		try {
+			count = Integer.parseInt(text);
+		} catch (NumberFormatException nfe) {
+			logger.error("Expected number in count, but found: " + text, nfe);
+		}
+		return count;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="VocabularyDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceLocator.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceLocator.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceLocator.java	(revision 48242)
@@ -0,0 +1,8 @@
+package gr.uoa.di.driver.util;
+
+import eu.dnetlib.api.DriverService;
+
+public interface ServiceLocator<S extends DriverService> {
+	
+	public S getService();
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/app/InitialiazingServiceRegistrationManager.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/app/InitialiazingServiceRegistrationManager.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/app/InitialiazingServiceRegistrationManager.java	(revision 48242)
@@ -0,0 +1,80 @@
+package gr.uoa.di.driver.app;
+
+import javax.xml.ws.Endpoint;
+
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
+import eu.dnetlib.enabling.tools.registration.ValidatingServiceRegistrationManagerImpl;
+import eu.dnetlib.soap.EndpointReferenceBuilder;
+import eu.dnetlib.utils.EPRUtils;
+
+/**
+ * A service registration manager that sets the epr to the service and also 
+ * calls its init() method, after registering it to the IS.
+ * 
+ * @author antleb
+ *
+ */
+public class InitialiazingServiceRegistrationManager extends ValidatingServiceRegistrationManagerImpl {
+	private static Logger logger = Logger.getLogger(InitialiazingServiceRegistrationManager.class);
+	private EndpointReferenceBuilder<Endpoint> eprBuilder = null;
+	private boolean removeRegistration = true;
+	
+	public void tick() {
+		synchronized (this.getRegistrator()) {
+			DriverServiceImpl service = (DriverServiceImpl) this.getService();
+
+			if (getState() == State.REGISTERED && !service.isInititialized()) {
+				logger.debug("Service is registered and unitialized. Initializing.");
+				
+				EPR epr = this.createEPR();
+				
+				epr.setParameter("serviceId", this.getProfileId());
+				service.setServiceEPR(epr);
+				
+				service.init();
+			}
+		}	
+		
+		super.tick();
+	}
+	
+	/**
+	 * Removes the service registration from the IS.
+	 */
+	public void destroy() {
+		try {
+			if (removeRegistration) {
+				logger.debug("Removing service registration");
+
+				this.getRegistrator().getServiceLocator().getService(ISRegistryService.class)
+						.deleteProfile(this.getProfileId());
+			}
+		} catch (ISRegistryException e) {
+			logger.error("Error removing service registration", e);
+		}
+	}
+
+	private EPR createEPR() {
+		return EPRUtils.createEPR(this.eprBuilder, this.getEndpoint());
+	}
+
+	public EndpointReferenceBuilder<Endpoint> getEprBuilder() {
+		return eprBuilder;
+	}
+
+	public void setEprBuilder(EndpointReferenceBuilder<Endpoint> eprBuilder) {
+		this.eprBuilder = eprBuilder;
+	}
+
+	public boolean isRemoveRegistration() {
+		return removeRegistration;
+	}
+
+	public void setRemoveRegistration(boolean removeRegistration) {
+		this.removeRegistration = removeRegistration;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/VocabularyXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/VocabularyXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/VocabularyXmlConverter.java	(revision 48242)
@@ -0,0 +1,88 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.StringReader;
+import java.util.Date;
+import java.util.List;
+import java.util.TreeMap;
+
+import javax.xml.bind.JAXBException;
+
+import org.xml.sax.InputSource;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.enabling.Vocabulary;
+import eu.dnetlib.domain.enabling.VocabularySearchCriteria;
+import gr.uoa.di.driver.xml.vocabulary.RESOURCEPROFILE;
+import gr.uoa.di.driver.xml.vocabulary.TERMType;
+
+public class VocabularyXmlConverter extends AbstractConverter<Vocabulary> implements
+		ResourceToXmlConverter<Vocabulary> {
+	
+	public VocabularyXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+	
+	public Vocabulary XmlToObject(String xml) throws JAXBException {
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller().unmarshal(new InputSource(new StringReader(xml)));
+		Vocabulary vocabulary = null;
+
+		TreeMap<String, String> nameMap = new TreeMap<String, String>();
+		TreeMap<String, String> encodingMap = new TreeMap<String, String>();
+		String vocabularyName = null;
+		
+		vocabularyName = profile.getBODY().getCONFIGURATION().getVOCABULARYNAME().getValue();
+
+		List<TERMType> terms = profile.getBODY().getCONFIGURATION().getTERMS()
+				.getTERM();
+		for (TERMType term : terms) {
+			nameMap.put(term.getEnglishName(), term.getCode());
+			encodingMap.put(term.getCode(), term.getEnglishName());
+		}
+
+		vocabulary = new Vocabulary(vocabularyName, nameMap, encodingMap);
+
+		vocabulary.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER()
+				.getValue());
+		vocabulary.setResourceKind(profile.getHEADER().getRESOURCEKIND()
+				.getValue());
+		vocabulary.setResourceType(profile.getHEADER().getRESOURCETYPE()
+				.getValue());
+		vocabulary.setResourceUri(profile.getHEADER().getRESOURCEURI()
+				.getValue());
+
+		if (profile.getHEADER().getDATEOFCREATION().getValue() != null)
+			vocabulary.setDateOfCreation(new Date(profile.getHEADER().getDATEOFCREATION().getValue().getMillisecond()));
+
+		return vocabulary;
+	}
+
+	public String toXQueryString(VocabularySearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		String xQuery = null;
+		String predicate = "";
+
+		if (criteria.getName() != null) {
+			predicate = "[lower-case(.)=\"" + criteria.getName().toLowerCase()
+					+ "\"]";
+		}
+
+		xQuery = "for $x in collection(\"/db/DRIVER/VocabularyDSResources/VocabularyDSResourceType\")";
+		if (!predicate.equals("")) {
+			xQuery += " where ";
+			xQuery += " $x//CONFIGURATION/VOCABULARY_NAME " + predicate;
+		}
+		xQuery += " return $x";
+
+		return xQuery;
+	}
+
+	// TODO implement this!!!
+	public String ObjectToXml(Vocabulary object) throws JAXBException {
+		throw new UnsupportedOperationException();
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((VocabularySearchCriteria) criteria);
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/VOCABULARYNAME.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/VOCABULARYNAME.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/VOCABULARYNAME.java	(revision 48242)
@@ -0,0 +1,96 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *       &lt;attribute name="code" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "value"
+})
+@XmlRootElement(name = "VOCABULARY_NAME")
+public class VOCABULARYNAME {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute
+    protected String code;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the code property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCode() {
+        return code;
+    }
+
+    /**
+     * Sets the value of the code property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCode(String value) {
+        this.code = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/VOCABULARYTERMType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/VOCABULARYTERMType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/VOCABULARYTERMType.java	(revision 48242)
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VOCABULARYTERMType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="VOCABULARYTERMType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="TERM" type="{}TERMType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VOCABULARYTERMType", propOrder = {
+    "term"
+})
+public class VOCABULARYTERMType {
+
+    @XmlElement(name = "TERM")
+    protected List<TERMType> term;
+
+    /**
+     * Gets the value of the term property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the term property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getTERM().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link TERMType }
+     * 
+     * 
+     */
+    public List<TERMType> getTERM() {
+        if (term == null) {
+            term = new ArrayList<TERMType>();
+        }
+        return this.term;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/BODYType.java	(revision 48242)
@@ -0,0 +1,125 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{}STATUSType"/>
+ *         &lt;element ref="{}SECURITY_PARAMETERS"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "securityparameters"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected STATUSType status;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected String securityparameters;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STATUSType }
+     *     
+     */
+    public STATUSType getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STATUSType }
+     *     
+     */
+    public void setSTATUS(STATUSType value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETERS(String value) {
+        this.securityparameters = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/STATUSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/STATUSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/STATUSType.java	(revision 48242)
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for STATUSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="STATUSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="LAST_UPDATE" type="{}DATEType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "STATUSType", propOrder = {
+
+})
+public class STATUSType {
+
+    @XmlElement(name = "LAST_UPDATE", required = true)
+    protected DATEType lastupdate;
+
+    /**
+     * Gets the value of the lastupdate property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEType }
+     *     
+     */
+    public DATEType getLASTUPDATE() {
+        return lastupdate;
+    }
+
+    /**
+     * Sets the value of the lastupdate property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEType }
+     *     
+     */
+    public void setLASTUPDATE(DATEType value) {
+        this.lastupdate = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,125 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{}VOCABULARY_NAME"/>
+ *         &lt;element ref="{}VOCABULARY_DESCRIPTION"/>
+ *         &lt;element name="TERMS" type="{}VOCABULARYTERMType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+    "vocabularyname",
+    "vocabularydescription",
+    "terms"
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "VOCABULARY_NAME", required = true)
+    protected VOCABULARYNAME vocabularyname;
+    @XmlElement(name = "VOCABULARY_DESCRIPTION", required = true)
+    protected String vocabularydescription;
+    @XmlElement(name = "TERMS", required = true)
+    protected VOCABULARYTERMType terms;
+
+    /**
+     * Gets the value of the vocabularyname property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link VOCABULARYNAME }
+     *     
+     */
+    public VOCABULARYNAME getVOCABULARYNAME() {
+        return vocabularyname;
+    }
+
+    /**
+     * Sets the value of the vocabularyname property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link VOCABULARYNAME }
+     *     
+     */
+    public void setVOCABULARYNAME(VOCABULARYNAME value) {
+        this.vocabularyname = value;
+    }
+
+    /**
+     * Gets the value of the vocabularydescription property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getVOCABULARYDESCRIPTION() {
+        return vocabularydescription;
+    }
+
+    /**
+     * Sets the value of the vocabularydescription property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setVOCABULARYDESCRIPTION(String value) {
+        this.vocabularydescription = value;
+    }
+
+    /**
+     * Gets the value of the terms property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link VOCABULARYTERMType }
+     *     
+     */
+    public VOCABULARYTERMType getTERMS() {
+        return terms;
+    }
+
+    /**
+     * Sets the value of the terms property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link VOCABULARYTERMType }
+     *     
+     */
+    public void setTERMS(VOCABULARYTERMType value) {
+        this.terms = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="VocabularyDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RecommendationXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RecommendationXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RecommendationXmlConverter.java	(revision 48242)
@@ -0,0 +1,301 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+
+import javax.xml.bind.JAXBException;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.functionality.Recommendation;
+import eu.dnetlib.domain.functionality.RecommendationSearchCriteria;
+import gr.uoa.di.driver.xml.recommendation.ObjectFactory;
+import gr.uoa.di.driver.xml.recommendation.RESOURCEPROFILE;
+
+public class RecommendationXmlConverter extends AbstractConverter<Recommendation> implements
+		ResourceToXmlConverter<Recommendation> {
+	private ObjectFactory of = new ObjectFactory();
+
+	public RecommendationXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public String ObjectToXml(Recommendation recommendation)
+			throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		profile.setHEADER(of.createHEADERType());
+		profile.setBODY(of.createBODYType());
+
+		profile.getHEADER().setRESOURCEIDENTIFIER(of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+
+		profile.getHEADER().getRESOURCEKIND().setValue(recommendation.getResourceKind());
+		profile.getHEADER().getRESOURCETYPE().setValue(recommendation.getResourceType());
+		if (recommendation.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils
+							.DateToString(recommendation.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue("");
+
+		if (recommendation.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					recommendation.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (recommendation.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					recommendation.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+
+		profile.getBODY().setSECURITYPARAMETERS(of.createSECURITYPARAMETERSType());
+		profile.getBODY().getSECURITYPARAMETERS().setSECURITYPARAMETER("value");
+
+		profile.getBODY().setCONFIGURATION(of.createCONFIGURATIONType());
+		profile.getBODY().getCONFIGURATION().setRECOMMENDATIONINFO(
+				of.createRECOMMENDATIONINFOType());
+
+		// TODO: set status
+		profile.getBODY().setSTATUS("value");
+
+		profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+				.setRECOMMENDATIONTEXT(recommendation.getContent());
+
+		profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+				.setDATEOFEXPIRATION(
+						of.createRECOMMENDATIONINFOTypeDATEOFEXPIRATION());
+		profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+				.getDATEOFEXPIRATION().setValue(
+						ConversionUtils.toXMLGregorianCalendar(
+								recommendation.getExpirationDate()).toString());
+
+		profile.getBODY().setINDEX(recommendation.getIndex());
+		profile.getBODY().setACTIVE(recommendation.isActive());
+		profile.getBODY().setTITLE(recommendation.getTitle());
+
+		if (recommendation.getType().equals("Announcement")) {
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+					.setTYPE("Announcement");
+		} else if (recommendation.getType().equals("Community")) {
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+					.setTYPE("Community");
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+					.setCOMMUNITIES(of.createCOMMUNITIESType());
+			if (recommendation.getCommunityIds() != null) {
+				for (String communityId : recommendation.getCommunityIds()) {
+					profile.getBODY().getCONFIGURATION()
+							.getRECOMMENDATIONINFO().getCOMMUNITIES()
+							.getCOMMUNITYID().add(communityId);
+
+				}
+			}
+		} else {
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+					.setTYPE("User");
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+					.setUSERS(of.createUSERSType());
+			if (recommendation.getUserIds() != null) {
+				for (String userId : recommendation.getUserIds()) {
+					profile.getBODY().getCONFIGURATION()
+							.getRECOMMENDATIONINFO().getUSERS().getUSERID()
+							.add(userId);
+				}
+			}
+
+		}
+		
+		this.getMarshaller().marshal(profile, baos);
+		return baos.toString();
+
+	}
+
+	public Recommendation XmlToObject(String xml) throws JAXBException {
+		Recommendation recommendation = new Recommendation();
+
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		recommendation.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER().getValue());
+		recommendation.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());
+		recommendation.setGenerationDate(ConversionUtils.parseDate(profile.getHEADER().getDATEOFCREATION().getValue()));
+		recommendation.setResourceKind(profile.getHEADER().getRESOURCEKIND().getValue());
+		recommendation.setResourceType(profile.getHEADER().getRESOURCETYPE().getValue());
+
+		recommendation.setContent(profile.getBODY().getCONFIGURATION()
+				.getRECOMMENDATIONINFO().getRECOMMENDATIONTEXT());
+
+		DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd'T'kk:mm:ss" );
+		Date expirationDate = new Date();		
+		try {
+			String date = profile.getBODY()
+			.getCONFIGURATION().getRECOMMENDATIONINFO()
+			.getDATEOFEXPIRATION().getValue();
+			expirationDate = formatter.parse( date );
+		} catch (ParseException ex) {
+			java.util.logging.Logger.getLogger(
+					RecommendationXmlConverter.class.getName()).log(
+					Level.SEVERE, null, ex);
+		}
+		
+		
+		recommendation.setExpirationDate(expirationDate);
+		recommendation.setType(profile.getBODY().getCONFIGURATION()
+				.getRECOMMENDATIONINFO().getTYPE());
+
+		recommendation.setActive(profile.getBODY().isACTIVE());
+		recommendation.setIndex(profile.getBODY().getINDEX());
+		recommendation.setTitle(profile.getBODY().getTITLE());
+
+		if (profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+				.getCOMMUNITIES() != null) {
+			Set<String> communities = new HashSet<String>();
+			if (profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+					.getCOMMUNITIES().getCOMMUNITYID() != null) {
+				for (int i = 0; i < profile.getBODY().getCONFIGURATION()
+						.getRECOMMENDATIONINFO().getCOMMUNITIES()
+						.getCOMMUNITYID().size(); i++) {
+					communities.add(profile.getBODY().getCONFIGURATION()
+							.getRECOMMENDATIONINFO().getCOMMUNITIES()
+							.getCOMMUNITYID().get(i));
+				}
+				recommendation.setCommunityIds(communities);
+			}
+		}
+		if (profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+				.getUSERS() != null) {
+			Set<String> users = new HashSet<String>();
+			if (profile.getBODY().getCONFIGURATION().getRECOMMENDATIONINFO()
+					.getUSERS().getUSERID() != null) {
+				for (int i = 0; i < profile.getBODY().getCONFIGURATION()
+						.getRECOMMENDATIONINFO().getUSERS().getUSERID().size(); i++) {
+					users.add(profile.getBODY().getCONFIGURATION()
+							.getRECOMMENDATIONINFO().getUSERS().getUSERID()
+							.get(i));
+				}
+				recommendation.setUserIds(users);
+			}
+		}
+		return recommendation;
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((RecommendationSearchCriteria) criteria);
+	}
+
+	public String toXQueryString(RecommendationSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		String xQuery = null;
+		List<String> predicates = new ArrayList<String>();
+
+		xQuery = "for $x in collection( \"/db/DRIVER/RecommendationDSResources/RecommendationDSResourceType\" )";
+		if (criteria.getExpiredAfter() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RECOMMENDATION_INFO/DATE_OF_EXPIRATION[@value > \""
+							+ ConversionUtils.toXMLGregorianCalendar(criteria
+									.getExpiredAfter()) + "\"]");
+		}
+		if (criteria.getExpiredBefore() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RECOMMENDATION_INFO/DATE_OF_EXPIRATION[@value < \""
+							+ ConversionUtils.toXMLGregorianCalendar(criteria.getExpiredAfter())
+							+ "\"]");
+		}
+
+		if (criteria.getRecommendationType() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RECOMMENDATION_INFO[TYPE = \""
+							+ criteria.getRecommendationType() + "\"]");
+		}
+		
+		if (criteria.getCommunityId() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RECOMMENDATION_INFO/COMMUNITIES[COMMUNITY_ID = \""
+							+ criteria.getCommunityId() + "\"]");
+			/*
+			 * predicates.add( "some $y in
+			 * $x/RESOURCE_PROFILE/BODY/CONFIGURATION
+			 * /RECOMMENDATION_INFO/COMMUNITIES/COMMUNITY_ID" +
+			 * "satisfies $y = " + criteria.getCommunityId() );
+			 */
+		}
+		
+		if (criteria.getUserId() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RECOMMENDATION_INFO/USERS[USER_ID = \""
+							+ criteria.getUserId() + "\"]");
+
+		}
+		
+		if (criteria.getActive() != null) {
+			predicates.add("$x/RESOURCE_PROFILE/BODY/ACTIVE[. = '" + criteria.getActive() + "']");
+		}
+		
+		for (int i = 0; i < predicates.size(); i++) {
+			String predicate = predicates.get(i);
+
+			if (i > 0) {
+				xQuery += " and ";
+			} else {
+				xQuery += " where ";
+			}
+
+			xQuery += predicate;
+		}
+		xQuery += " return $x";
+		return xQuery;
+	}
+	
+	@Deprecated
+	public String toXQueryString(Recommendation exampleInstance) {
+		String xQuery = "for $x in collection( \"/db/DRIVER/RecommendationDSResources/RecommendationDSResourceType\" )";
+		List<String> predicates = new ArrayList<String>();
+
+		if (exampleInstance != null) {
+			if (exampleInstance.getId() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/HEADER/RESOURCE_IDENTIFIER[@value=\""
+								+ exampleInstance.getId() + "\"]");
+			}
+			if (exampleInstance.getContent() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RECOMMENDATION_INFO[RECOMMENDATION_TEXT = \""
+								+ exampleInstance.getContent() + "\"]");
+			}
+			if (exampleInstance.getType() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RECOMMENDATION_INFO[TYPE = \""
+								+ exampleInstance.getType() + "\"]");
+			}
+
+			for (int i = 0; i < predicates.size(); i++) {
+				String predicate = predicates.get(i);
+
+				if (i > 0) {
+					xQuery += " and ";
+				} else {
+					xQuery += " where ";
+				}
+
+				xQuery += predicate;
+			}
+		}
+
+		xQuery += " return $x";
+		return xQuery;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/QOS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/QOS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/QOS.java	(revision 48242)
@@ -0,0 +1,145 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for QOS complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="QOS">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="AVAILABILITY" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="CAPACITY" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="RESPONSE_TIME" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="THROUGHPUT" type="{http://www.w3.org/2001/XMLSchema}double"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QOS", propOrder = {
+    "availability",
+    "capacity",
+    "responsetime",
+    "throughput"
+})
+public class QOS {
+
+    @XmlElement(name = "AVAILABILITY", required = true)
+    protected String availability;
+    @XmlElement(name = "CAPACITY", required = true)
+    protected String capacity;
+    @XmlElement(name = "RESPONSE_TIME")
+    protected String responsetime;
+    @XmlElement(name = "THROUGHPUT")
+    protected double throughput;
+
+    /**
+     * Gets the value of the availability property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAVAILABILITY() {
+        return availability;
+    }
+
+    /**
+     * Sets the value of the availability property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAVAILABILITY(String value) {
+        this.availability = value;
+    }
+
+    /**
+     * Gets the value of the capacity property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCAPACITY() {
+        return capacity;
+    }
+
+    /**
+     * Sets the value of the capacity property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCAPACITY(String value) {
+        this.capacity = value;
+    }
+
+    /**
+     * Gets the value of the responsetime property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getRESPONSETIME() {
+        return responsetime;
+    }
+
+    /**
+     * Sets the value of the responsetime property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setRESPONSETIME(String value) {
+        this.responsetime = value;
+    }
+
+    /**
+     * Gets the value of the throughput property.
+     * 
+     */
+    public double getTHROUGHPUT() {
+        return throughput;
+    }
+
+    /**
+     * Sets the value of the throughput property.
+     * 
+     */
+    public void setTHROUGHPUT(double value) {
+        this.throughput = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLSType.java	(revision 48242)
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATACOLLSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATACOLLSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="DATACOLL" type="{}DATACOLLType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATACOLLSType", propOrder = {
+    "datacoll"
+})
+public class DATACOLLSType {
+
+    @XmlElement(name = "DATACOLL", required = true)
+    protected List<DATACOLLType> datacoll;
+
+    /**
+     * Gets the value of the datacoll property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the datacoll property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDATACOLL().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DATACOLLType }
+     * 
+     * 
+     */
+    public List<DATACOLLType> getDATACOLL() {
+        if (datacoll == null) {
+            datacoll = new ArrayList<DATACOLLType>();
+        }
+        return this.datacoll;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/resources/gr/uoa/di/driver/xml/profile.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/resources/gr/uoa/di/driver/xml/profile.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/test/resources/gr/uoa/di/driver/xml/profile.xml	(revision 48242)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="" />
+		<RESOURCE_TYPE value="UserDSResourceType" />
+		<RESOURCE_KIND value="UserDSResources" />
+		<RESOURCE_URI value="" />
+		<DATE_OF_CREATION value="2009-09-10T17:16:37+03:00" />
+	</HEADER>
+	<BODY>
+		<CONFIGURATION>
+			<PERSONAL_INFO>
+				<FIRST_NAME />
+				<LAST_NAME />
+				<INSTITUTION />
+				<EMAIL value="Helenaki" />
+				<ACTIVATION_ID value="123" />
+				<ACTIVE value="true" />
+			</PERSONAL_INFO>
+			<COMMUNITIES />
+			<SAVED_QUERIES>
+				<query>
+					<CQL value="cqlTesxt" />
+					<COMMUNITYID communityId="My community1" />
+				</query>
+				<alertOnChange>false</alertOnChange>
+			</SAVED_QUERIES>
+			<FILTER>
+				<query>
+					<query>
+						<CQL value="cql" />
+						<REFINE value="refine" />
+						<COLLECTIONID collectionId="Collection 1" />
+					</query>
+					<alertOnChange>false</alertOnChange>
+				</query>
+			</FILTER>
+			<RECOMMENDATION SEND_EMAIL="false">
+				<RECOMMENDATIONS />
+			</RECOMMENDATION>
+			<DOCUMENTS>
+				<DOCUMENT_ID>Document 1</DOCUMENT_ID>
+				<DOCUMENT_ID>Document 2</DOCUMENT_ID>
+			</DOCUMENTS>
+			<USER_STORE>
+				<serviceURL>service URL</serviceURL>
+				<storeID>store ID</storeID>
+			</USER_STORE>
+			<userImageID>photoID</userImageID>
+		</CONFIGURATION>
+		<STATUS></STATUS>
+		<SECURITY_PARAMETERS>
+			<SECURITY_PARAMETER>value</SECURITY_PARAMETER>
+		</SECURITY_PARAMETERS>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/LookUpEntryFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/LookUpEntryFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/LookUpEntryFactory.java	(revision 48242)
@@ -0,0 +1,59 @@
+package gr.uoa.di.driver.enabling.islookup.cache;
+
+import java.util.List;
+
+import net.sf.ehcache.constructs.blocking.CacheEntryFactory;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.enabling.ISLookUpService;
+import eu.dnetlib.api.enabling.ISLookUpServiceException;
+import eu.dnetlib.domain.DriverResource;
+import gr.uoa.di.driver.enabling.resultset.ResultSetFactory;
+import gr.uoa.di.driver.util.ServiceLocator;
+
+public class LookUpEntryFactory<D extends DriverResource> implements
+		CacheEntryFactory {
+	private Logger logger = Logger.getLogger(this.getClass());
+	private ServiceLocator<ISLookUpService> lookUpServiceLocator = null;
+	private ResultSetFactory rsFactory = null;
+
+	public Object createEntry(Object key) throws Exception {
+		Object entry = null;
+
+		if (key instanceof String) {
+			entry = this.getById((String) key);
+		} else if (key instanceof CriteriaCacheKey) {
+			CriteriaCacheKey args = (CriteriaCacheKey) key;
+			String XQuery = args.getXQuery();
+			
+			entry = this.getByCriteria(XQuery);
+		} else {
+			logger.warn("key is not id or query");
+			logger.warn("key is: " + key + "(" + key.getClass() + ")");
+		}
+
+		return entry;
+	}
+
+	private List<String> getByCriteria(String XQuery) throws ISLookUpServiceException {
+				return lookUpServiceLocator.getService().quickSearchProfile(XQuery);
+	}
+
+	private String getById(String key) throws ISLookUpServiceException {
+		return lookUpServiceLocator.getService().getResourceProfile(key);
+	}
+
+	public ServiceLocator<ISLookUpService> getLookUpServiceLocator() {
+		return lookUpServiceLocator;
+	}
+
+	public void setLookUpServiceLocator(
+			ServiceLocator<ISLookUpService> lookUpServiceLocator) {
+		this.lookUpServiceLocator = lookUpServiceLocator;
+	}
+
+	public void setRsFactory(ResultSetFactory rsFactory) {
+		this.rsFactory = rsFactory;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/CriteriaCacheKey.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/CriteriaCacheKey.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/CriteriaCacheKey.java	(revision 48242)
@@ -0,0 +1,46 @@
+package gr.uoa.di.driver.enabling.islookup.cache;
+
+import eu.dnetlib.domain.SearchCriteria;
+
+public class CriteriaCacheKey {
+	private SearchCriteria criteria = null;
+	private String XQuery = null;
+
+	public CriteriaCacheKey(SearchCriteria criteria) {
+		this.criteria = criteria;
+	}
+
+	public SearchCriteria getCriteria() {
+		return criteria;
+	}
+
+	public void setCriteria(SearchCriteria criteria) {
+		this.criteria = criteria;
+	}
+
+	public String getXQuery() {
+		return this.XQuery;
+	}
+
+	public void setXQuery(String XQuery) {
+		this.XQuery = XQuery;
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) return true;
+		if (o == null || getClass() != o.getClass()) return false;
+
+		CriteriaCacheKey that = (CriteriaCacheKey) o;
+
+		if (criteria != null ? !criteria.equals(that.criteria) : that.criteria != null) return false;
+		return XQuery != null ? XQuery.equals(that.XQuery) : that.XQuery == null;
+	}
+
+	@Override
+	public int hashCode() {
+		int result = criteria != null ? criteria.hashCode() : 0;
+		result = 31 * result + (XQuery != null ? XQuery.hashCode() : 0);
+		return result;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATEType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEType }
+     *     
+     */
+    public DATEType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/SYNONYMType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/SYNONYMType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/SYNONYMType.java	(revision 48242)
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SYNONYMType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SYNONYMType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="encoding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="term" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SYNONYMType")
+public class SYNONYMType {
+
+    @XmlAttribute(required = true)
+    protected String encoding;
+    @XmlAttribute(required = true)
+    protected String term;
+
+    /**
+     * Gets the value of the encoding property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEncoding() {
+        return encoding;
+    }
+
+    /**
+     * Sets the value of the encoding property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEncoding(String value) {
+        this.encoding = value;
+    }
+
+    /**
+     * Gets the value of the term property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTerm() {
+        return term;
+    }
+
+    /**
+     * Sets the value of the term property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTerm(String value) {
+        this.term = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,72 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="RepositoryServiceResources"/>
+ *             &lt;enumeration value="PendingRepositoryResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/CachingISLookUp.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/CachingISLookUp.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/CachingISLookUp.java	(revision 48242)
@@ -0,0 +1,142 @@
+package gr.uoa.di.driver.enabling.islookup.cache;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import net.sf.ehcache.Ehcache;
+import net.sf.ehcache.Element;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.enabling.ISLookUpService;
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.SearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+import gr.uoa.di.driver.util.ServiceLocator;
+import gr.uoa.di.driver.xml.ResourceToXmlConverter;
+
+public class CachingISLookUp<D extends DriverResource> implements ISLookUp<D> {
+	static Logger logger = Logger.getLogger(CachingISLookUp.class);
+	
+	private Ehcache criteriaCache = null;
+	private Ehcache idCache = null;
+	private ResourceToXmlConverter<D> converter = null;
+	private ServiceLocator<ISLookUpService> lookupLocator = null;
+
+	public D getById(String id) throws ISLookUpException {
+		logger.debug("Requested object with id " + id);
+		
+		String key = id;
+		Element element = (Element) idCache.get(key);
+
+		if (element != null)
+			return this.parseXml((String) element.getObjectValue());
+		else
+			return null;
+	}
+
+	public List<D> getByid(String[] ids) throws ISLookUpException {
+		List<D> list = new ArrayList<D>();
+
+		for (String id : ids)
+			list.add(this.getById(id));
+
+		return list;
+	}
+
+	@SuppressWarnings("unchecked")
+	public List<D> fetch(SearchCriteria criteria) throws ISLookUpException {
+		if (logger.isDebugEnabled())
+			logger.debug("Fetching results for query: " + 
+					converter.toXQueryString(criteria));
+		
+		CriteriaCacheKey key = new CriteriaCacheKey(criteria);
+		key.setXQuery(converter.toXQueryString(criteria));
+		
+		Element element = criteriaCache.get(key);
+		List<String> xmls = (List<String>) element.getObjectValue();
+
+		return this.processSearchResults(xmls);
+	}
+
+	private List<D> processSearchResults(List<String> xmls) {
+		List<D> result = new ArrayList<D>();
+
+		for (String xml:xmls) {
+			D d = this.parseXml(xml);
+
+			this.updateIdCache(d.getResourceId(), xml);
+
+			result.add(d);
+		}
+
+		return result;
+	}
+
+	private D parseXml(String xml) {
+		try {
+			return converter.XmlToObject(xml);
+		} catch (JAXBException je) {
+			logger.error("Error parsing xml profile", je);
+			return null;
+		}
+	}
+
+	private void updateIdCache(String id, String xml) {
+		Element e = new Element(id, xml);
+
+		idCache.put(e);
+	}
+
+	@SuppressWarnings("unchecked")
+	public List<D> performQuickSearch(SearchCriteria criteria)
+			throws ISLookUpException {
+		if (logger.isDebugEnabled())
+			logger.debug("Performing quick search for query: "
+					+ converter.toXQueryString(criteria));
+
+		CriteriaCacheKey key = new CriteriaCacheKey(criteria);
+		key.setXQuery(converter.toXQueryString(criteria));
+		Element element = criteriaCache.get(key);
+
+		return this.processSearchResults( (List<String>) element.getObjectValue());
+	}
+	
+	public List<String> fetch(String XQuery) {
+		throw new UnsupportedOperationException();
+	}
+
+	public D getUniqueResult(SearchCriteria criteria) throws ISLookUpException {
+		if (logger.isDebugEnabled())
+			logger.debug("Fetching unique result for query: " + 
+					converter.toXQueryString(criteria));
+		
+		List<D> list = this.performQuickSearch(criteria);
+
+		if (list.size() == 0)
+			return null;
+		else if (list.size() == 1)
+			return list.get(0);
+		else
+			throw new ISLookUpException("More than one results in query");
+	}
+
+	public void setLookupLocator(ServiceLocator<ISLookUpService> lookupLocator) {
+		this.lookupLocator = lookupLocator;
+	}
+
+	public void setConverter(ResourceToXmlConverter<D> converter) {
+		this.converter = converter;
+	}
+
+	public void setCriteriaCache(Ehcache criteriaCache) {
+		this.criteriaCache = criteriaCache;
+	}
+
+	public void setIdCache(Ehcache idCache) {
+		this.idCache = idCache;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/SecurityAwareCachingISLookUp.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/SecurityAwareCachingISLookUp.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/SecurityAwareCachingISLookUp.java	(revision 48242)
@@ -0,0 +1,144 @@
+package gr.uoa.di.driver.enabling.islookup.cache;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.enabling.SecurityProfileSearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+
+public class SecurityAwareCachingISLookUp<D extends SecureDriverResource> extends CachingISLookUp<D> implements ISLookUp<D> {
+	static Logger logger = Logger.getLogger(SecurityAwareCachingISLookUp.class);
+
+	private CachingISLookUp<D> lookup = null;
+	private ISLookUp<SecurityProfile> securityLookup = null;
+
+	public D getById(String id) throws ISLookUpException {
+		logger.debug("Requested object with id " + id);
+		D object = lookup.getById(id);
+		SecurityProfile secProfile = getSecurityProfile(id);
+		
+		object.setSecurityProfile(secProfile);
+		
+		return object;
+	}
+
+	public List<D> getByid(String[] ids) throws ISLookUpException {
+		List<D> list = new ArrayList<D>();
+		Map<String, SecurityProfile> secProfiles = this.getSecurityProfiles(ids);
+		
+		for (String id : ids) {
+			D d = this.getById(id);
+			
+			d.setSecurityProfile(secProfiles.get(id));
+			list.add(d);
+		}
+		
+		return list;
+	}
+
+	public List<D> fetch(SearchCriteria criteria) throws ISLookUpException {
+		logger.debug("Fetching ...");
+		
+		List<D> list = this.lookup.fetch(criteria);
+		List<String> ids = new ArrayList<String>();
+		
+		for (D d:list)
+			ids.add(d.getResourceId());
+		
+		Map<String, SecurityProfile> secProfiles = this.getSecurityProfiles(ids.toArray(new String[] {}));
+		
+		for (D d:list) {
+			SecurityProfile secProfile = secProfiles.get(d.getResourceId());
+			
+			logger.debug("Setting security profile " + 
+					secProfile.getResourceId() + " to resource " + 
+					d.getResourceId());
+			
+			d.setSecurityProfile(secProfile);
+		}
+		
+		return list;
+	}
+
+	public List<D> performQuickSearch(SearchCriteria criteria)
+			throws ISLookUpException {
+		logger.debug("Performing quick search...");
+		List<D> list = this.lookup.performQuickSearch(criteria);
+		List<String> ids = new ArrayList<String>();
+		
+		for (D d:list)
+			ids.add(d.getResourceId());
+		
+		Map<String, SecurityProfile> secProfiles = this.getSecurityProfiles(ids.toArray(new String[] {}));
+		
+		for (D d:list)
+			d.setSecurityProfile(secProfiles.get(d.getResourceId()));
+		
+		return list;
+	}
+	
+	public List<String> fetch(String XQuery) {
+		throw new UnsupportedOperationException();
+	}
+
+	public D getUniqueResult(SearchCriteria criteria) throws ISLookUpException {
+		D d = this.lookup.getUniqueResult(criteria);
+		
+		d.setSecurityProfile(this.getSecurityProfile(d.getResourceId()));
+		
+		return d;
+	}
+	
+	private SecurityProfile getSecurityProfile(String id) throws ISLookUpException {
+		logger.debug("Getting security profile for " + id);
+		
+		SecurityProfileSearchCriteria crit = new SecurityProfileSearchCriteria();
+		
+		crit.getDriverResourceIds().add(id);
+		
+		return securityLookup.getUniqueResult(crit);
+	}
+	
+	private Map<String, SecurityProfile> getSecurityProfiles(String[] ids) throws ISLookUpException {
+		logger.debug("Getting security profiles for " + ids.length + " resources");
+		
+		HashMap<String, SecurityProfile> map = new HashMap<String, SecurityProfile>();
+		SecurityProfileSearchCriteria crit = new SecurityProfileSearchCriteria();
+		
+		for (String id:ids) {
+			crit.getDriverResourceIds().add(id);
+		}
+		
+		List<SecurityProfile> list = securityLookup.fetch(crit);
+		
+		for (SecurityProfile secProfile:list)
+			map.put(secProfile.getDriverResourceId(), secProfile);
+		
+		return map;
+	}
+
+	public CachingISLookUp<D> getLookup() {
+		return lookup;
+	}
+
+	public void setLookup(CachingISLookUp<D> lookup) {
+		this.lookup = lookup;
+	}
+
+	public ISLookUp<SecurityProfile> getSecurityLookup() {
+		return securityLookup;
+	}
+
+	public void setSecurityLookup(ISLookUp<SecurityProfile> securityLookup) {
+		this.securityLookup = securityLookup;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/SecurityAwareCacheManager.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/SecurityAwareCacheManager.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/SecurityAwareCacheManager.java	(revision 48242)
@@ -0,0 +1,33 @@
+package gr.uoa.di.driver.enabling.islookup.cache;
+
+import eu.dnetlib.domain.ActionType;
+import eu.dnetlib.domain.ResourceType;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.Notification;
+import gr.uoa.di.driver.enabling.issn.NotificationListener;
+
+public class SecurityAwareCacheManager<D extends SecureDriverResource> extends
+		DriverCacheManager<D> {
+
+	public void init() {
+		super.init();
+		
+		NotificationListener listener = new SecurityAwareCacheNotificationListener();
+		
+		service.subscribe(ActionType.CREATE, ResourceType.SECURITYPROFILEDSRESOURCETYPE, listener);
+		service.subscribe(ActionType.UPDATE, ResourceType.SECURITYPROFILEDSRESOURCETYPE, listener);
+		service.subscribe(ActionType.DELETE, ResourceType.SECURITYPROFILEDSRESOURCETYPE, listener);
+	}
+	
+	private class SecurityAwareCacheNotificationListener extends CacheNotificationListener {
+
+		@Override
+		public void processNotification(Notification notification) {
+			getIdCache().removeAll();
+			getCriteriaCache().removeAll();
+			
+			super.processNotification(notification);
+		}
+		
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLINTERFACEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLINTERFACEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLINTERFACEType.java	(revision 48242)
@@ -0,0 +1,153 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATACOLLINTERFACEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATACOLLINTERFACEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="ACCESS_PROTOCOL" type="{}ACCESSPROTOCOLDATACOLLType"/>
+ *         &lt;element name="BASE_URL" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="FORMAT" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="FILTER" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATACOLLINTERFACEType", propOrder = {
+    "accessprotocol",
+    "baseurl",
+    "format",
+    "filter"
+})
+public class DATACOLLINTERFACEType {
+
+    @XmlElement(name = "ACCESS_PROTOCOL", required = true)
+    protected ACCESSPROTOCOLDATACOLLType accessprotocol;
+    @XmlElement(name = "BASE_URL", required = true)
+    protected String baseurl;
+    @XmlElement(name = "FORMAT", required = true)
+    protected String format;
+    @XmlElement(name = "FILTER")
+    protected String filter;
+
+    /**
+     * Gets the value of the accessprotocol property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ACCESSPROTOCOLDATACOLLType }
+     *     
+     */
+    public ACCESSPROTOCOLDATACOLLType getACCESSPROTOCOL() {
+        return accessprotocol;
+    }
+
+    /**
+     * Sets the value of the accessprotocol property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ACCESSPROTOCOLDATACOLLType }
+     *     
+     */
+    public void setACCESSPROTOCOL(ACCESSPROTOCOLDATACOLLType value) {
+        this.accessprotocol = value;
+    }
+
+    /**
+     * Gets the value of the baseurl property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getBASEURL() {
+        return baseurl;
+    }
+
+    /**
+     * Sets the value of the baseurl property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setBASEURL(String value) {
+        this.baseurl = value;
+    }
+
+    /**
+     * Gets the value of the format property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFORMAT() {
+        return format;
+    }
+
+    /**
+     * Sets the value of the format property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFORMAT(String value) {
+        this.format = value;
+    }
+
+    /**
+     * Gets the value of the filter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFILTER() {
+        return filter;
+    }
+
+    /**
+     * Sets the value of the filter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFILTER(String value) {
+        this.filter = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/LASTUPDATEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/LASTUPDATEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/LASTUPDATEType.java	(revision 48242)
@@ -0,0 +1,68 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for LAST_UPDATEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="LAST_UPDATEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "LAST_UPDATEType")
+public class LASTUPDATEType {
+
+    @XmlAttribute(required = true)
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setValue(XMLGregorianCalendar value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACTIONSTATUS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACTIONSTATUS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACTIONSTATUS.java	(revision 48242)
@@ -0,0 +1,51 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ACTION_STATUS.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="ACTION_STATUS">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="DONE"/>
+ *     &lt;enumeration value="ONGOING"/>
+ *     &lt;enumeration value="FAILED"/>
+ *     &lt;enumeration value="WAITING"/>
+ *     &lt;enumeration value="ASSIGNED"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "ACTION_STATUS")
+@XmlEnum
+public enum ACTIONSTATUS {
+
+    DONE,
+    ONGOING,
+    FAILED,
+    WAITING,
+    ASSIGNED;
+
+    public String value() {
+        return name();
+    }
+
+    public static ACTIONSTATUS fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/DriverCacheManager.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/DriverCacheManager.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/cache/DriverCacheManager.java	(revision 48242)
@@ -0,0 +1,319 @@
+package gr.uoa.di.driver.enabling.islookup.cache;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import net.sf.ehcache.Ehcache;
+import net.sf.ehcache.Element;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.ActionType;
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.ResourceType;
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.Notification;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.enabling.SecurityProfileSearchCriteria;
+import gr.uoa.di.driver.app.DriverServiceImpl;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+import gr.uoa.di.driver.enabling.issn.NotificationListener;
+import gr.uoa.di.driver.xml.ResourceToXmlConverter;
+
+public class DriverCacheManager<D extends DriverResource> {
+	private Logger logger = Logger.getLogger(DriverCacheManager.class);
+	
+	private ResourceType resourceType = null;
+	
+	protected DriverServiceImpl service = null;
+
+	private Ehcache idCache = null;
+	private Ehcache criteriaCache = null;
+	private ResourceToXmlConverter<D> converter = null;
+	private ISLookUp<SecurityProfile> securityLookUp = null;
+	private Comparator<D> comparator = null;
+
+	public void init() {
+		logger.debug("Initializing cache manager for object type " + resourceType);
+		
+		NotificationListener listener = new CacheNotificationListener();
+		
+		service.subscribe(ActionType.CREATE, resourceType, listener);
+		service.subscribe(ActionType.UPDATE, resourceType, listener);
+		service.subscribe(ActionType.DELETE, resourceType, listener);
+	}
+	
+	private void processCreationEvent(Notification notification) {
+		try {
+			logger.debug("processing creation event");
+
+			String xml = notification.getResource();
+			D object = converter.XmlToObject(xml);
+			String objectId = object.getResourceId();
+
+			logger.debug("adding object with id: " + objectId);
+
+			if (object instanceof SecureDriverResource) {
+				SecurityProfile secProfile = this.getSecurityProfile(object.getResourceId());
+
+				((SecureDriverResource) object).setSecurityProfile(secProfile);
+			}
+
+			idCache.put(new Element(objectId, xml));
+
+			this.evaluateQueries(xml, object);
+			
+			logger.debug("Done processing create event");
+		} catch (JAXBException je) {
+			logger.error("Error processing create event", je);
+		} catch (ISLookUpException ile) {
+			logger.error("Error processing create event", ile);
+		} catch (Exception e) {
+			logger.error("Error processing create event", e);
+		}
+	}
+
+	private void processUpdateEvent(Notification notification) {
+		try {
+			logger.debug("processing update event");
+
+			String xml = notification.getResource();
+			D object = converter.XmlToObject(xml);
+
+			if (object instanceof SecureDriverResource) {
+				logger.debug("profile has security profile");
+
+				SecurityProfile secProfile = this.getSecurityProfile(object
+						.getResourceId());
+
+				((SecureDriverResource) object).setSecurityProfile(secProfile);
+			}
+
+			idCache.put(new Element(object.getResourceId(), xml));
+
+			this.evaluateQueries(xml, object);
+			
+			logger.debug("Done processing update event");
+		} catch (JAXBException je) {
+			logger.error("Error processing update event", je);
+		} catch (ISLookUpException ile) {
+			logger.error("Error processing update event", ile);
+		} catch (Exception e) {
+			logger.error("Error processing update event", e);
+		}
+	}
+
+	private SecurityProfile getSecurityProfile(String profileId) throws ISLookUpException {
+		logger.debug("Getting sec profile from IS.");
+
+		SecurityProfileSearchCriteria crit = new SecurityProfileSearchCriteria();
+
+		crit.getDriverResourceIds().add(profileId);
+
+		return securityLookUp.getUniqueResult(crit);
+	}
+
+	@SuppressWarnings("unchecked")
+	private void processDeletionEvent(Notification notification) {
+		try {
+			logger.debug("processing deletion event...");
+			D object = converter.XmlToObject(notification.getResource());
+			String profileId = object.getResourceId();
+
+			logger.debug("removing object with id: " + profileId);
+			// remove object from id cache
+			idCache.remove(profileId);
+
+			// remove object from each result of a query
+			for (Object key : criteriaCache.getKeysWithExpiryCheck()) {
+				CriteriaCacheKey cacheKey = (CriteriaCacheKey) key;
+				
+				if (logger.isDebugEnabled())
+					logger.debug("checking query: " + cacheKey.getXQuery());
+
+				List<String> results = (List<String>) criteriaCache.get(key).getObjectValue();
+
+				for (Iterator<String> iter = results.iterator(); iter.hasNext();) {
+					String xml = iter.next();
+					D result = converter.XmlToObject(xml);
+
+					logger.debug("comparing with result: " + result.getResourceId());
+
+					if (result.getResourceId().equals(profileId)) {
+						logger.debug("object found in results. removing...");
+						iter.remove();
+					}
+				}
+			}
+		} catch (JAXBException e) {
+			logger.error("Error processing deletion event", e);
+		} catch (Exception e) {
+			logger.error("Error processing deletion event", e);
+		}
+
+		logger.debug("Done processing deletion event");
+	}
+
+	@SuppressWarnings( { "unchecked" })
+	private void evaluateQueries(String xml, D object) throws JAXBException {
+		String objectId = object.getResourceId();
+		List<CriteriaCacheKey> queries = criteriaCache.getKeysWithExpiryCheck();
+		
+		logger.debug("Will evaluate " + queries.size() + " query(ies)");
+		
+		for (int i = 0; i < queries.size(); i++) {
+			CriteriaCacheKey key = queries.get(i);
+			SearchCriteria criteria = key.getCriteria();
+			List<String> results = (List<String>) this.criteriaCache.get(key).getObjectValue();
+
+			if (logger.isDebugEnabled())
+				logger.debug("testing query: " + key.getXQuery());
+
+			// search for object in results
+			for (int j = 0; j < results.size(); j++) {
+				String cachedXml = results.get(j);
+				D result = converter.XmlToObject(cachedXml);
+				String resultId = result.getResourceId();
+
+				logger.debug("comparing with: " + resultId);
+
+				if (objectId.equals(resultId)) {
+					// remove result from list. Will add it again later, if
+					// needed
+					logger.debug("result found. Removing it");
+					results.remove(j);
+
+					break;
+				}
+			}
+
+			// check if object must be included in results
+			try {
+				if (criteria.matches(object)) {
+					logger.debug("results matches. adding it.");
+					results.add(xml);
+
+					if (comparator != null) {
+						List<CacheEntryPair> pairList = new ArrayList<CacheEntryPair>();
+						
+						for (String cachedXml:results)
+							pairList.add(new CacheEntryPair(cachedXml, converter.XmlToObject(cachedXml)));
+						
+						Collections.sort(pairList, new CacheEntryPairComparator(comparator));
+						
+						results.clear();
+						for (CacheEntryPair pair:pairList)
+							results.add(pair.xml);
+					}
+				} else {
+					logger.debug("Object doesn't match query. Will not add");
+				}
+			} catch (UnsupportedOperationException uoe) {
+				logger.warn("Search criteria have not implememented 'matches' " +
+						"method. Clearing query cache");
+				
+				criteriaCache.removeAll();
+				
+				break;
+			} catch (Exception e) {
+				logger.error("Error updating queries", e);
+			}
+		}
+		
+		logger.debug("Done evaluating queries");
+	}
+	
+	public void setConverter(ResourceToXmlConverter<D> converter) {
+		this.converter = converter;
+	}
+
+	public void setIdCache(Ehcache idCache) {
+		this.idCache = idCache;
+	}
+
+	public Ehcache getIdCache() {
+		return idCache;
+	}
+
+	public void setSecurityLookUp(ISLookUp<SecurityProfile> securityLookUp) {
+		this.securityLookUp = securityLookUp;
+	}
+
+	public void setComparator(Comparator<D> comparator) {
+		this.comparator = comparator;
+	}
+
+	public ResourceType getResourceType() {
+		return resourceType;
+	}
+
+	public void setResourceType(ResourceType resourceType) {
+		this.resourceType = resourceType;
+	}
+
+	public Ehcache getCriteriaCache() {
+		return criteriaCache;
+	}
+
+	public void setCriteriaCache(Ehcache criteriaCache) {
+		this.criteriaCache = criteriaCache;
+	}
+
+	public void setService(DriverServiceImpl service) {
+		this.service = service;
+	}
+	
+	private class CacheEntryPair {
+		private String xml = null;
+		private D d = null;
+		
+		public CacheEntryPair(String xml, D d) {
+			this.xml = xml;
+			this.d = d;
+		}
+	}
+	
+	private class CacheEntryPairComparator implements Comparator<CacheEntryPair> {
+		private Comparator<D> comparator = null;
+		
+		public CacheEntryPairComparator(Comparator<D> comparator) {
+			this.comparator = comparator;
+		}
+
+		@Override
+		public int compare(CacheEntryPair o1, CacheEntryPair o2) {
+			return this.comparator.compare(o1.d, o2.d);
+		}
+	}
+	
+	protected class CacheNotificationListener implements NotificationListener {
+		public void processNotification(Notification notification) {
+
+			try {
+				if (notification.getResourceType().equals(resourceType)) {
+					switch (notification.getActionType()) {
+					case CREATE:
+						processCreationEvent(notification);
+						break;
+					case UPDATE:
+						processUpdateEvent(notification);
+						break;
+					case DELETE:
+						processDeletionEvent(notification);
+						break;
+					}
+				}
+			} catch (Exception e) {
+				logger.error("Error updating cache", e);
+			}
+		}
+
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/ISLookUpImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/ISLookUpImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/ISLookUpImpl.java	(revision 48242)
@@ -0,0 +1,133 @@
+package gr.uoa.di.driver.enabling.islookup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.enabling.ISLookUpService;
+import eu.dnetlib.api.enabling.ISLookUpServiceException;
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.SearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+import gr.uoa.di.driver.util.ServiceLocator;
+import gr.uoa.di.driver.xml.ResourceToXmlConverter;
+
+public class ISLookUpImpl<D extends DriverResource> implements ISLookUp<D> {
+	private static Logger logger = Logger.getLogger(ISLookUpImpl.class);
+
+	private ServiceLocator<ISLookUpService> lookupLocator = null;
+	private ResourceToXmlConverter<D> converter = null;
+
+	public D getById(String profileId) throws ISLookUpException {
+		try {
+			String xml = lookupLocator.getService().getResourceProfile(
+					profileId);
+
+			logger.debug("Collection xml..." + xml);
+			
+			return this.parseXmlProfile(xml);
+		} catch (ISLookUpServiceException e) {
+			throw new ISLookUpException(e);
+		}
+	}
+
+	public List<D> getByid(String[] profileIds) throws ISLookUpException {
+		List<D> res = new ArrayList<D>();
+
+		for (String id : profileIds) {
+			res.add(this.getById(id));
+		}
+
+		return res;
+	}
+
+	public List<D> fetch(SearchCriteria criteria) throws ISLookUpException {
+		logger.debug("Fetching...");
+		try {
+			String xQuery = converter.toXQueryString(criteria);
+			logger.debug("xQuery: " + xQuery);
+
+
+			List<String> xmls = lookupLocator.getService().quickSearchProfile(xQuery);
+			List<D> res = new ArrayList<D>();
+
+			logger.debug("Getting results from result set. Result set size: "
+					+ xmls.size());
+			
+			logger.debug("starting parsing");
+			
+			if (xmls.size() > 0) {
+				for (String xml : xmls)
+					res.add(this.parseXmlProfile(xml));
+			}
+			logger.debug("parsed");
+			
+			return res;
+		} catch (ISLookUpServiceException e) {
+			logger.error(e);
+			throw new ISLookUpException(e);
+		}
+	}
+
+	private D parseXmlProfile(String xml) throws ISLookUpException {
+		try {
+			return this.converter.XmlToObject(xml);
+		} catch (JAXBException e) {
+			throw new ISLookUpException("Error parsing xml profile", e);
+		} catch (Exception e) {
+			logger.error("Error parsing: " + xml);
+			throw new ISLookUpException("Error parsing xml profile", e);
+		}
+	}
+
+	public List<String> fetch(String XQuery) throws ISLookUpException {
+
+		try {
+			return lookupLocator.getService().quickSearchProfile(XQuery);
+		} catch (ISLookUpServiceException e) {
+			throw new ISLookUpException(e);
+		}
+	}
+
+	public List<D> performQuickSearch(SearchCriteria criteria)
+			throws ISLookUpException {
+
+		try {
+			String xQuery = converter.toXQueryString(criteria);
+			List<D> results = new ArrayList<D>();
+			List<String> xmls = lookupLocator.getService().quickSearchProfile(
+					xQuery);
+
+			for (String profile : xmls)
+				results.add(parseXmlProfile(profile));
+
+			return results;
+		} catch (ISLookUpServiceException e) {
+			throw new ISLookUpException(e);
+		}
+
+	}
+
+	public D getUniqueResult(SearchCriteria criteria) throws ISLookUpException {
+		List<D> list = this.performQuickSearch(criteria);
+
+		if (list.size() == 0)
+			return null;
+		else if (list.size() == 1)
+			return list.get(0);
+		else
+			throw new ISLookUpException("More than one results in query");
+	}
+
+	public void setLookupLocator(ServiceLocator<ISLookUpService> lookupLocator) {
+		this.lookupLocator = lookupLocator;
+	}
+
+	public void setConverter(ResourceToXmlConverter<D> converter) {
+		this.converter = converter;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/MESSAGE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/MESSAGE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/MESSAGE.java	(revision 48242)
@@ -0,0 +1,160 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MESSAGE complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MESSAGE">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="ACTION" type="{}ACTION"/>
+ *         &lt;element name="PARAMETERS" type="{}PARAMETERS" maxOccurs="unbounded"/>
+ *         &lt;element name="ACTION_STATUS" type="{}ACTION_STATUS"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MESSAGE", propOrder = {
+    "action",
+    "parameters",
+    "actionstatus"
+})
+public class MESSAGE {
+
+    @XmlElement(name = "ACTION", required = true)
+    protected ACTION action;
+    @XmlElement(name = "PARAMETERS", required = true)
+    protected List<PARAMETERS> parameters;
+    @XmlElement(name = "ACTION_STATUS", required = true)
+    protected ACTIONSTATUS actionstatus;
+    @XmlAttribute(required = true)
+    protected String id;
+
+    /**
+     * Gets the value of the action property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ACTION }
+     *     
+     */
+    public ACTION getACTION() {
+        return action;
+    }
+
+    /**
+     * Sets the value of the action property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ACTION }
+     *     
+     */
+    public void setACTION(ACTION value) {
+        this.action = value;
+    }
+
+    /**
+     * Gets the value of the parameters property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the parameters property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getPARAMETERS().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link PARAMETERS }
+     * 
+     * 
+     */
+    public List<PARAMETERS> getPARAMETERS() {
+        if (parameters == null) {
+            parameters = new ArrayList<PARAMETERS>();
+        }
+        return this.parameters;
+    }
+
+    /**
+     * Gets the value of the actionstatus property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ACTIONSTATUS }
+     *     
+     */
+    public ACTIONSTATUS getACTIONSTATUS() {
+        return actionstatus;
+    }
+
+    /**
+     * Sets the value of the actionstatus property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ACTIONSTATUS }
+     *     
+     */
+    public void setACTIONSTATUS(ACTIONSTATUS value) {
+        this.actionstatus = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/EXTRAFIELDS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/EXTRAFIELDS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/EXTRAFIELDS.java	(revision 48242)
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for EXTRA_FIELDS complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="EXTRA_FIELDS">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="FIELD" type="{}FieldType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EXTRA_FIELDS", propOrder = {
+    "field"
+})
+public class EXTRAFIELDS {
+
+    @XmlElement(name = "FIELD", required = true)
+    protected List<FieldType> field;
+
+    /**
+     * Gets the value of the field property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the field property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getFIELD().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link FieldType }
+     * 
+     * 
+     */
+    public List<FieldType> getFIELD() {
+        if (field == null) {
+            field = new ArrayList<FieldType>();
+        }
+        return this.field;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/INTERFACES.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/INTERFACES.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/INTERFACES.java	(revision 48242)
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for INTERFACES complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="INTERFACES">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="INTERFACE" type="{}INTERFACE" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "INTERFACES", propOrder = {
+    "_interface"
+})
+public class INTERFACES {
+
+    @XmlElement(name = "INTERFACE", required = true)
+    protected List<INTERFACE> _interface;
+
+    /**
+     * Gets the value of the interface property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the interface property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getINTERFACE().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link INTERFACE }
+     * 
+     * 
+     */
+    public List<INTERFACE> getINTERFACE() {
+        if (_interface == null) {
+            _interface = new ArrayList<INTERFACE>();
+        }
+        return this._interface;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/SecurityAwareLookupImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/SecurityAwareLookupImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/SecurityAwareLookupImpl.java	(revision 48242)
@@ -0,0 +1,134 @@
+package gr.uoa.di.driver.enabling.islookup;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.enabling.SecurityProfileSearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+
+public class SecurityAwareLookupImpl<R extends SecureDriverResource> implements
+		ISLookUp<R> {
+
+	private static Logger logger = Logger.getLogger(SecurityAwareLookupImpl.class);
+	
+	private ISLookUp<R> lookUp = null;
+	
+	private ISLookUp<SecurityProfile> securityLookUp = null;
+
+	@Override
+	public List<R> fetch(SearchCriteria criteria) throws ISLookUpException {
+		logger.debug("fetching secure profiles");
+		List<R> list = lookUp.fetch(criteria);
+
+		logger.debug("Loading and assigning security profiles");
+		Map<String, SecurityProfile> secProfiles = this.getSecurityProfiles(list);
+		
+		for (R r : list) {
+			SecurityProfile secProfile = secProfiles.get(r.getResourceId());
+			
+			r.setSecurityProfile(secProfile);
+		}
+
+		return list;
+	}
+
+	@Override
+	public List<String> fetch(String XQuery) throws ISLookUpException {
+		return lookUp.fetch(XQuery);
+	}
+
+	@Override
+	public R getById(String id) throws ISLookUpException {
+		R r = lookUp.getById(id);
+		
+		r.setSecurityProfile(this.getSecurityProfile(id));
+		
+		return r;
+	}
+
+	@Override
+	public List<R> getByid(String[] ids) throws ISLookUpException {
+		List<R> list = new ArrayList<R>();
+		
+		for (String id:ids)
+			list.add(lookUp.getById(id));
+		
+		logger.debug("Loading and assigning security profiles");
+		Map<String, SecurityProfile> secProfiles = this.getSecurityProfiles(list);
+		
+		for (R r : list) {
+			SecurityProfile secProfile = secProfiles.get(r.getResourceId());
+			
+			r.setSecurityProfile(secProfile);
+		}
+		
+		return list;
+	}
+
+	@Override
+	public R getUniqueResult(SearchCriteria criteria) throws ISLookUpException {
+		R r = lookUp.getUniqueResult(criteria);
+		
+		if (r != null)
+			r.setSecurityProfile(this.getSecurityProfile(r.getResourceId()));
+		
+		return r;
+	}
+
+	@Override
+	public List<R> performQuickSearch(SearchCriteria criteria)
+			throws ISLookUpException {
+		List<R> list = this.lookUp.performQuickSearch(criteria);
+		
+		logger.debug("Loading and assigning security profiles");
+		Map<String, SecurityProfile> secProfiles = this.getSecurityProfiles(list);
+		
+		for (R r : list) {
+			SecurityProfile secProfile = secProfiles.get(r.getResourceId());
+			
+			r.setSecurityProfile(secProfile);
+		}
+
+		return list;
+	}
+
+	public void setLookUp(ISLookUp<R> lookUp) {
+		this.lookUp = lookUp;
+	}
+	
+	public void setSecurityLookUp(ISLookUp<SecurityProfile> securityLookUp) {
+		this.securityLookUp = securityLookUp;
+	}
+
+	private Map<String, SecurityProfile> getSecurityProfiles(List<R> profiles)
+			throws ISLookUpException {
+		SecurityProfileSearchCriteria crit = new SecurityProfileSearchCriteria();
+		Map<String, SecurityProfile> map = new HashMap<String, SecurityProfile>();
+
+		for (R r : profiles)
+			crit.getDriverResourceIds().add(r.getResourceId());
+		
+		for (SecurityProfile secProfile: securityLookUp.fetch(crit))
+			map.put(secProfile.getDriverResourceId(), secProfile);
+		
+		return map;
+	}
+	
+	private SecurityProfile getSecurityProfile(String resourceId)
+			throws ISLookUpException {
+		SecurityProfileSearchCriteria crit = new SecurityProfileSearchCriteria();
+
+		crit.getDriverResourceIds().add(resourceId);
+
+		return this.securityLookUp.getUniqueResult(crit);
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/ISLookUpFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/ISLookUpFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/ISLookUpFactory.java	(revision 48242)
@@ -0,0 +1,219 @@
+package gr.uoa.di.driver.enabling.islookup;
+
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.bind.JAXBException;
+
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.Ehcache;
+import net.sf.ehcache.constructs.blocking.SelfPopulatingCache;
+import eu.dnetlib.api.enabling.ISLookUpService;
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.ResourceType;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import gr.uoa.di.driver.app.DriverServiceImpl;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.islookup.cache.CachingISLookUp;
+import gr.uoa.di.driver.enabling.islookup.cache.DriverCacheManager;
+import gr.uoa.di.driver.enabling.islookup.cache.LookUpEntryFactory;
+import gr.uoa.di.driver.enabling.islookup.cache.SecurityAwareCacheManager;
+import gr.uoa.di.driver.enabling.islookup.cache.SecurityAwareCachingISLookUp;
+import gr.uoa.di.driver.enabling.resultset.ResultSetFactory;
+import gr.uoa.di.driver.util.ServiceLocator;
+import gr.uoa.di.driver.xml.ResourceToXmlConverter;
+import gr.uoa.di.driver.xml.SecurityProfileXmlConverter;
+
+public class ISLookUpFactory {
+
+	private Map<Class<? extends DriverResource>, ISLookUp<? extends DriverResource>> lookUpMap = new HashMap<Class<? extends DriverResource>, ISLookUp<? extends DriverResource>>();
+	private Map<Class<? extends DriverResource>, CachingISLookUp<? extends DriverResource>> cachingLookUpMap = new HashMap<Class<? extends DriverResource>, CachingISLookUp<? extends DriverResource>>();
+	private Map<Class<? extends DriverResource>, Class<? extends Comparator<? extends DriverResource>>> comparatorClassMap = null;
+
+	private ServiceLocator<ISLookUpService> lookupLocator = null;
+	boolean useCache = false;
+	private DriverServiceImpl service = null;
+	private CacheManager cacheManager = null;
+	private ResultSetFactory rsFactory = null;
+
+	public void init() throws JAXBException {
+
+		ISLookUpImpl<SecurityProfile> lookup = new ISLookUpImpl<SecurityProfile>();
+
+		lookup.setConverter(new SecurityProfileXmlConverter());
+		lookup.setLookupLocator(lookupLocator);
+
+		lookUpMap.put(SecurityProfile.class, lookup);
+	}
+
+	@SuppressWarnings("unchecked")
+	public <D extends DriverResource> ISLookUp<D> createISLookUp(
+			Class<D> resourceClass) throws InstantiationException,
+			IllegalAccessException {
+
+		ISLookUp<D> lookup = null;
+		
+		if (useCache) {
+			CachingISLookUp<D> cLookup = (CachingISLookUp<D>) cachingLookUpMap.get(resourceClass);
+
+			if (cLookup == null) {
+				Ehcache idCache = this.getIdCache(resourceClass);
+				Ehcache criteriaCache = this.getCriteriaCache(resourceClass);
+				cLookup = new CachingISLookUp<D>();
+
+				cLookup.setConverter(getConverter(resourceClass));
+				cLookup.setLookupLocator(lookupLocator);
+				cLookup.setIdCache(idCache);
+				cLookup.setCriteriaCache(criteriaCache);
+				
+				if (SecureDriverResource.class.isAssignableFrom(resourceClass)) {
+					SecurityAwareCachingISLookUp<SecureDriverResource> scLookup = new SecurityAwareCachingISLookUp<SecureDriverResource>();
+					
+					scLookup.setLookup((CachingISLookUp<SecureDriverResource>) cLookup);
+					scLookup.setSecurityLookup((ISLookUp<SecurityProfile>) lookUpMap.get(SecurityProfile.class));
+					
+					cLookup = (CachingISLookUp<D>) scLookup;
+				}
+
+				// create CacheManager
+				DriverCacheManager<D> cacheManager = null;
+
+				if (SecureDriverResource.class.isAssignableFrom(resourceClass)) {
+					cacheManager = (DriverCacheManager<D>) new SecurityAwareCacheManager<SecureDriverResource>();
+				} else
+					cacheManager = new DriverCacheManager<D>();
+
+				cacheManager.setComparator(this.getComparator(resourceClass));
+				cacheManager.setConverter(this.getConverter(resourceClass));
+				cacheManager.setResourceType(getResourceType(resourceClass));
+				cacheManager.setSecurityLookUp((ISLookUp<SecurityProfile>) this.lookUpMap.get(SecurityProfile.class));
+				cacheManager.setIdCache(idCache);
+				cacheManager.setCriteriaCache(criteriaCache);
+				cacheManager.setService(service);
+
+				cacheManager.init();
+
+				cachingLookUpMap.put(resourceClass, cLookup);
+			}
+
+			lookup = cLookup;
+		} else {
+			lookup = (ISLookUp<D>) lookUpMap.get(resourceClass);
+
+			if (lookup == null) {
+				lookup = new ISLookUpImpl<D>();
+
+				((ISLookUpImpl<D>) lookup).setConverter(this.getConverter(resourceClass));
+				((ISLookUpImpl<D>) lookup).setLookupLocator(lookupLocator);
+
+				if (SecureDriverResource.class.isAssignableFrom(resourceClass)) {
+					SecurityAwareLookupImpl<SecureDriverResource> secureLookup = new SecurityAwareLookupImpl<SecureDriverResource>();
+
+					secureLookup.setLookUp((ISLookUp<SecureDriverResource>) lookup);
+					secureLookup.setSecurityLookUp((ISLookUp<SecurityProfile>) lookUpMap.get(SecurityProfile.class));
+
+					lookup = (ISLookUp<D>) secureLookup;
+				}
+
+				lookUpMap.put(resourceClass, lookup);
+			}
+		}
+
+		return lookup;
+	}
+
+	private Map<Class<? extends DriverResource>, Class<? extends ResourceToXmlConverter<? extends DriverResource>>> converterClassMap = null;
+
+	@SuppressWarnings("unchecked")
+	private <D extends DriverResource> ResourceToXmlConverter<D> getConverter(
+			Class<D> resourceClass) throws InstantiationException,
+			IllegalAccessException {
+		Class<? extends ResourceToXmlConverter<D>> converterClass = (Class<? extends ResourceToXmlConverter<D>>) converterClassMap
+				.get(resourceClass);
+
+		return converterClass.newInstance();
+	}
+
+	@SuppressWarnings("unchecked")
+	private <D extends DriverResource> Comparator<D> getComparator(
+			Class<D> resourceClass) throws InstantiationException,
+			IllegalAccessException {
+		Class<? extends Comparator<D>> comparatorClass = (Class<? extends Comparator<D>>) comparatorClassMap
+				.get(resourceClass);
+
+		if (comparatorClass != null)
+			return comparatorClass.newInstance();
+		else
+			return null;
+	}
+
+	private Map<Class<? extends DriverResource>, ResourceType> resourceTypeMap = null;
+
+	private <D extends DriverResource> ResourceType getResourceType(
+			Class<D> resourceClass) {
+		return this.resourceTypeMap.get(resourceClass);
+	}
+
+	private <D extends DriverResource> Ehcache getIdCache(Class<D> resourceClass)
+			throws InstantiationException, IllegalAccessException {
+		return createCache(resourceClass, resourceClass.getSimpleName() + ".id");
+	}
+
+	private <D extends DriverResource> Ehcache getCriteriaCache(
+			Class<D> resourceClass) throws InstantiationException,
+			IllegalAccessException {
+		return createCache(resourceClass, resourceClass.getSimpleName()
+				+ ".criteria");
+	}
+
+	private <D extends DriverResource> Ehcache createCache(
+			Class<D> resourceClass, String name) throws InstantiationException,
+			IllegalAccessException {
+		LookUpEntryFactory<D> lookupFactory = new LookUpEntryFactory<D>();
+	
+		lookupFactory.setLookUpServiceLocator(lookupLocator);
+		lookupFactory.setRsFactory(rsFactory);
+		
+		cacheManager.addCache(name);
+		Ehcache cache = cacheManager.getEhcache(name);
+
+		return new SelfPopulatingCache(cache, lookupFactory);
+	}
+
+	public void setLookupLocator(ServiceLocator<ISLookUpService> lookupLocator) {
+		this.lookupLocator = lookupLocator;
+	}
+
+	public void setUseCache(boolean useCache) {
+		this.useCache = useCache;
+	}
+
+	public void setService(DriverServiceImpl service) {
+		this.service = service;
+	}
+
+	public void setCacheManager(CacheManager cacheManager) {
+		this.cacheManager = cacheManager;
+	}
+
+	public void setConverterClassMap(
+			Map<Class<? extends DriverResource>, Class<? extends ResourceToXmlConverter<? extends DriverResource>>> converterClassMap) {
+		this.converterClassMap = converterClassMap;
+	}
+
+	public void setComparatorClassMap(
+			Map<Class<? extends DriverResource>, Class<? extends Comparator<? extends DriverResource>>> comparatorClassMap) {
+		this.comparatorClassMap = comparatorClassMap;
+	}
+
+	public void setResourceTypeMap(
+			Map<Class<? extends DriverResource>, ResourceType> resourceTypeMap) {
+		this.resourceTypeMap = resourceTypeMap;
+	}
+
+	public void setRsFactory(ResultSetFactory rsFactory) {
+		this.rsFactory = rsFactory;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/RepositoryIsLookUp.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/RepositoryIsLookUp.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/islookup/RepositoryIsLookUp.java	(revision 48242)
@@ -0,0 +1,20 @@
+package gr.uoa.di.driver.enabling.islookup;
+
+import java.util.List;
+
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositorySearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+
+public class RepositoryIsLookUp extends ISLookUpImpl<Repository> {
+	private ISLookUpImpl<Repository> pendingLookUp = null;
+
+	public void setPendingLookUp(ISLookUpImpl<Repository> pendingLookUp) {
+		this.pendingLookUp = pendingLookUp;
+	}
+
+	public List<Repository> fetchPending(RepositorySearchCriteria criteria)
+			throws ISLookUpException {
+		return this.pendingLookUp.fetch(criteria);
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATASOURCEORIGINALIDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATASOURCEORIGINALIDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATASOURCEORIGINALIDType.java	(revision 48242)
@@ -0,0 +1,111 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * Type for the datasource original identifier.
+ * 				The
+ * 				original id is not the D-Net profile identifier, but an id that
+ * 				identifies the datasource itself in the outside world.
+ * 				The provenance
+ * 				attribute references to the organisation,institution,
+ * 				etc, where the
+ * 				id had been taken from.
+ * 				For example, the profile for a repository
+ * 				that is in OpenDoar will have
+ * 				its opendoar id with provenance
+ * 				'OpenDoar'.
+ * 				This field should be used instead of the old schema
+ * 				EXTRA_FIELD with key='OpenAireDataSourceId'
+ * 
+ * <p>Java class for DATASOURCE_ORIGINAL_IDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATASOURCE_ORIGINAL_IDType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *       &lt;attribute name="provenance" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATASOURCE_ORIGINAL_IDType", propOrder = {
+    "value"
+})
+public class DATASOURCEORIGINALIDType {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String provenance;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the provenance property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getProvenance() {
+        return provenance;
+    }
+
+    /**
+     * Sets the value of the provenance property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setProvenance(String value) {
+        this.provenance = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISLookUp.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISLookUp.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISLookUp.java	(revision 48242)
@@ -0,0 +1,77 @@
+package gr.uoa.di.driver.enabling;
+
+import java.util.List;
+
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.SearchCriteria;
+
+/**
+ * A client of the ISLookUp service.
+ * 
+ * @author <a href='mailto:antleb@di.uoa.gr'>Antonis Lempesis</a>
+ * 
+ * @param <D>
+ *            The type of the resource profiles that this client works with.
+ */
+public interface ISLookUp<D extends DriverResource> {
+	/**
+	 * Returns the resource profile with the given search id.
+	 * 
+	 * @param id the id
+	 * @return the resource profile.
+	 * @throws ISLookUpException
+	 */
+	D getById(String id) throws ISLookUpException;
+
+	/**
+	 * Returns the resource profiles with the given ids.
+	 * 
+	 * @param id the list of ids.
+	 * @return the resource profiles.
+	 * @throws ISLookUpException
+	 */
+	List<D> getByid(String id[]) throws ISLookUpException;
+
+	/**
+	 * Performs a search by criteria.
+	 * 
+	 * @param criteria the search criteria.
+	 * @return a list with the results of the query.
+	 * @throws ISLookUpException
+	 */
+	List<D> fetch(SearchCriteria criteria) throws ISLookUpException;
+
+	/**
+	 * Performs a direct XQuery search and returns a list of xml profiles that
+	 * match the criteria, without any processing.
+	 * 
+	 * @param XQuery the xquery.
+	 * @return a list of xml profiles.
+	 * @throws ISLookUpException
+	 */
+	List<String> fetch(String XQuery) throws ISLookUpException;
+
+	/**
+	 * Uses the appropriate method in ISLookUp and performs a query without
+	 * using a result set. This method should be used only when a small number
+	 * of results is expected. If there is a large number of results, there is a
+	 * risk of a SOAP error (the respone will be too large, over the SOAP
+	 * limit).
+	 * 
+	 * @param criteria the search criteria.
+	 * @return a list of results.
+	 * @throws ISLookUpException
+	 */
+	List<D> performQuickSearch(SearchCriteria criteria)
+			throws ISLookUpException;
+
+	/**
+	 * Performs a quick search and returns the unique result.
+	 * 
+	 * @param criteria the search criteria.
+	 * @return the unique search result
+	 * @throws ISLookUpException if there is more than one result.
+	 */
+	D getUniqueResult(SearchCriteria criteria) throws ISLookUpException;
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ENVIRONMENTSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ENVIRONMENTSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ENVIRONMENTSType.java	(revision 48242)
@@ -0,0 +1,85 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * The list of environments that can manage this
+ * 				datasource.
+ * 				An environment identifies a set of services of one or
+ * 				more D-Net
+ * 				installations.
+ * 				The element ENVIRONMENT supercedes the
+ * 				EXTRA_FIELD element with
+ * 				key='aggregatorName'.
+ * 
+ * <p>Java class for ENVIRONMENTSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ENVIRONMENTSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="ENVIRONMENT" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ENVIRONMENTSType", propOrder = {
+    "environment"
+})
+public class ENVIRONMENTSType {
+
+    @XmlElement(name = "ENVIRONMENT", required = true)
+    protected List<String> environment;
+
+    /**
+     * Gets the value of the environment property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the environment property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getENVIRONMENT().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getENVIRONMENT() {
+        if (environment == null) {
+            environment = new ArrayList<String>();
+        }
+        return this.environment;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/BODYType.java	(revision 48242)
@@ -0,0 +1,181 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATION"/>
+ *         &lt;element name="STATUS" type="{}STATUS"/>
+ *         &lt;element name="QOS" type="{}QOS"/>
+ *         &lt;element name="SECURITY_PARAMETERS" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="BLACKBOARD" type="{}BLACKBOARD"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "qos",
+    "securityparameters",
+    "blackboard"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATION configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected STATUS status;
+    @XmlElement(name = "QOS", required = true)
+    protected QOS qos;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected String securityparameters;
+    @XmlElement(name = "BLACKBOARD", required = true)
+    protected BLACKBOARD blackboard;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATION }
+     *     
+     */
+    public CONFIGURATION getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATION }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATION value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STATUS }
+     *     
+     */
+    public STATUS getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STATUS }
+     *     
+     */
+    public void setSTATUS(STATUS value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the qos property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link QOS }
+     *     
+     */
+    public QOS getQOS() {
+        return qos;
+    }
+
+    /**
+     * Sets the value of the qos property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link QOS }
+     *     
+     */
+    public void setQOS(QOS value) {
+        this.qos = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETERS(String value) {
+        this.securityparameters = value;
+    }
+
+    /**
+     * Gets the value of the blackboard property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BLACKBOARD }
+     *     
+     */
+    public BLACKBOARD getBLACKBOARD() {
+        return blackboard;
+    }
+
+    /**
+     * Sets the value of the blackboard property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BLACKBOARD }
+     *     
+     */
+    public void setBLACKBOARD(BLACKBOARD value) {
+        this.blackboard = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACCESSPROTOCOL.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACCESSPROTOCOL.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACCESSPROTOCOL.java	(revision 48242)
@@ -0,0 +1,152 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for ACCESS_PROTOCOL complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ACCESS_PROTOCOL">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *       &lt;attribute name="username" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *       &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *       &lt;attribute name="filter" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ACCESS_PROTOCOL", propOrder = {
+    "value"
+})
+public class ACCESSPROTOCOL {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String username;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String password;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String filter;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the username property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUsername() {
+        return username;
+    }
+
+    /**
+     * Sets the value of the username property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUsername(String value) {
+        this.username = value;
+    }
+
+    /**
+     * Gets the value of the password property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * Sets the value of the password property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPassword(String value) {
+        this.password = value;
+    }
+
+    /**
+     * Gets the value of the filter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFilter() {
+        return filter;
+    }
+
+    /**
+     * Sets the value of the filter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFilter(String value) {
+        this.filter = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/HEADERType.java	(revision 48242)
@@ -0,0 +1,204 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *         &lt;element name="PROTOCOL" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+    @XmlElement(name = "PROTOCOL", required = true)
+    protected String protocol;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+    /**
+     * Gets the value of the protocol property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPROTOCOL() {
+        return protocol;
+    }
+
+    /**
+     * Sets the value of the protocol property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPROTOCOL(String value) {
+        this.protocol = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SNManagerImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SNManagerImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SNManagerImpl.java	(revision 48242)
@@ -0,0 +1,205 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import eu.dnetlib.api.enabling.ISSNService;
+import eu.dnetlib.api.enabling.ISSNServiceException;
+import eu.dnetlib.domain.enabling.Notification;
+import eu.dnetlib.domain.enabling.Subscription;
+import gr.uoa.di.driver.util.ServiceLocator;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.log4j.Logger;
+
+public class SNManagerImpl implements SNManager {
+	private Logger logger = Logger.getLogger(this.getClass());
+	
+	private ScheduledExecutorService executor = null;
+
+	private ServiceLocator<ISSNService> snLocator = null;
+	private int timeToLive = 3600;
+	private int threadPoolSize = 5;
+	
+	/** topic -> suscription task map **/
+	private Map<String, SubscriptionTask> tasks = new HashMap<String, SNManagerImpl.SubscriptionTask>();
+	
+	/** subscriptionid -> subscription task map */
+	private Map<String, SubscriptionTask> idMap = new HashMap<String, SNManagerImpl.SubscriptionTask>();
+	
+	public void init() {
+		logger.debug("Creating executor with " + this.threadPoolSize + " threads");
+		this.executor = Executors.newScheduledThreadPool(this.threadPoolSize);
+	}
+
+	@Override
+	public void subscribe(Subscription sub, NotificationListener listener) {
+		//TODO
+		//TEMPORARY FIX FOR REJECTED SUBSCRIPTIONS. ISSUE:1288
+		if (!sub.getTopic().split("/")[2].equals("*")) {
+			SubscriptionTask task = tasks.get(sub.getTopic());
+			if (task == null) {
+					logger.debug("New topic: " + sub.getTopic());
+					task = new SubscriptionTask(sub, listener);
+					
+					tasks.put(sub.getTopic(), task);
+	
+					sub.setTimeToLive(this.timeToLive);
+					
+					executor.execute(task);
+			} else {
+				logger.debug("Topic already exists, adding listener");
+				task.getListeners().add(listener);
+			} 
+		} else {
+			logger.debug("subscription for resourceType: " + sub.getTopic().split("/")[1] + " ignored due to missing identifier");
+		}
+	}
+
+	@Override
+	public void unsubscribe(Subscription sub, NotificationListener listener) {
+		SubscriptionTask task = tasks.get(sub.getTopic());
+		
+		if (task != null)
+			task.getListeners().remove(listener);
+	}
+
+	@Override
+	public void unsubscribe(NotificationListener listener) {
+		for (SubscriptionTask task:tasks.values())
+			task.getListeners().remove(listener);
+	}
+
+	@Override
+	public void notify(Notification notification) {
+		SubscriptionTask task = idMap.get(notification.getSubscriptionId());
+		
+		if (task == null || task.getListeners().size() == 0)
+			logger.warn("No listeners for notification: " + notification.getTopic());
+		else {
+			for (NotificationListener listener:task.getListeners()) {
+				this.executor.execute(new NotificationTask(listener, notification));
+			}
+		}
+	}
+	
+	public void shutdown() {
+		this.executor.shutdownNow();
+		
+		logger.debug("Removing active subscriptions");
+		for (String id:idMap.keySet()) {
+			try {
+				snLocator.getService().unsubscribe(id);
+			} catch (ISSNServiceException e) {
+				logger.error("Error removing subscription: " + id);
+			}
+		}
+	}
+	
+	public ServiceLocator<ISSNService> getSnLocator() {
+		return snLocator;
+	}
+
+	public void setSnLocator(ServiceLocator<ISSNService> snLocator) {
+		this.snLocator = snLocator;
+	}
+
+	public int getTimeToLive() {
+		return timeToLive;
+	}
+
+	public void setTimeToLive(int timeToLive) {
+		this.timeToLive = timeToLive;
+	}
+
+	public int getThreadPoolSize() {
+		return threadPoolSize;
+	}
+
+	public void setThreadPoolSize(int threadPoolSize) {
+		this.threadPoolSize = threadPoolSize;
+	}
+
+	private class NotificationTask implements Runnable {
+		private NotificationListener listener = null;
+		private Notification notification = null;
+		
+		public NotificationTask(NotificationListener listener, Notification notification) {
+			this.listener = listener;
+			this.notification = notification;
+		}
+		
+		@Override
+		public void run() {
+			try {
+				this.listener.processNotification(notification);
+			} catch (Exception e) {
+				logger.error("Error calling listener", e);
+			}
+		}
+	}
+	
+	private class SubscriptionTask implements Runnable {
+		private Subscription subscription = null;
+		private List<NotificationListener> listeners = new ArrayList<NotificationListener>();
+		
+		public SubscriptionTask(Subscription sub, NotificationListener listener) {
+			this.subscription = sub;
+			this.listeners.add(listener);
+		}
+		
+		@Override
+		public void run() {
+			try {
+				if (this.subscription.getId() == null) {
+					logger.debug("New subscription. Subscribing and scheduling for refresh");
+					
+					try {
+						subscription.setId(snLocator.getService().subscribe(
+								subscription.getEpr(), subscription.getTopic(), 
+								subscription.getTimeToLive()));
+					} catch (ISSNServiceException e) {
+						logger.error("Error adding topic: " + subscription.getTopic(), e);
+					}
+					
+					executor.schedule(this, (long) (this.subscription.getTimeToLive() * .9), TimeUnit.SECONDS);
+					
+					idMap.put(subscription.getId(), this);
+				} else {
+					if (this.listeners.size() > 0) {
+						logger.debug("Subscription " + subscription.getId() + " is already subscribed. Refreshing and rescheduling");
+						
+						try {
+							snLocator.getService().renew(subscription.getId(), subscription.getTimeToLive());
+						} catch (ISSNServiceException e) {
+							logger.error("Error refreshing subscription " + subscription.getId(), e);
+						}
+						
+						executor.schedule(this, (long) (this.subscription.getTimeToLive() * .9), TimeUnit.SECONDS);
+					} else {
+						logger.debug("No listeners for this subscription. Removing it");
+						
+						try {
+							snLocator.getService().unsubscribe(this.subscription.getId());
+						} catch (ISSNServiceException e) {
+							logger.error("Error removing subscription " + subscription.getId(), e);
+						}
+						
+						idMap.remove(subscription.getId());
+						tasks.remove(this.subscription);
+					}
+				}
+			} catch (Exception e) {
+				logger.error("Error processing subscription");
+			}
+		}
+		
+		public List<NotificationListener> getListeners() {
+			return this.listeners;
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SNManager.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SNManager.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SNManager.java	(revision 48242)
@@ -0,0 +1,15 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import eu.dnetlib.domain.enabling.Notification;
+import eu.dnetlib.domain.enabling.Subscription;
+
+public interface SNManager {
+
+	public void subscribe(Subscription sub, NotificationListener listener);
+	
+	public void unsubscribe(Subscription sub, NotificationListener listener);
+	
+	public void unsubscribe(NotificationListener listener);
+	
+	public void notify(Notification notification);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACCESSPROTOCOLDATACOLLType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACCESSPROTOCOLDATACOLLType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACCESSPROTOCOLDATACOLLType.java	(revision 48242)
@@ -0,0 +1,124 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for ACCESSPROTOCOLDATACOLLType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="ACCESSPROTOCOLDATACOLLType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *       &lt;attribute name="username" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *       &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ACCESSPROTOCOLDATACOLLType", propOrder = {
+    "value"
+})
+public class ACCESSPROTOCOLDATACOLLType {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String username;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String password;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the username property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUsername() {
+        return username;
+    }
+
+    /**
+     * Sets the value of the username property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUsername(String value) {
+        this.username = value;
+    }
+
+    /**
+     * Gets the value of the password property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * Sets the value of the password property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPassword(String value) {
+        this.password = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationManagerImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationManagerImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationManagerImpl.java	(revision 48242)
@@ -0,0 +1,82 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.enabling.Notification;
+
+public class NotificationManagerImpl implements NotificationManager {
+	private static Logger logger = Logger.getLogger(NotificationManagerImpl.class);
+	
+	private ExecutorService executor = null;
+	private int threads = 2;
+	private List<NotificationListener> listeners = new ArrayList<NotificationListener>();
+
+	public int getThreads() {
+		return threads;
+	}
+
+	public void setThreads(int threads) {
+		this.threads = threads;
+	}
+
+	public void init() {
+		executor = Executors.newFixedThreadPool(threads);
+	}
+
+	public void shutdown() {
+		executor.shutdown();
+	}
+
+	@Override
+	public void addListener(NotificationListener listener) {
+		
+		logger.debug("Adding listener of type " + listener.getClass());
+		synchronized (listeners) {
+			listeners.add(listener);
+		}
+	}
+
+	@Override
+	public void notify(Notification notification) {
+		try {
+			logger.debug("Notification received with type " 
+					+ notification.getResourceType());
+			executor.submit(new NotificationTask(notification));
+		} catch (Exception e) {
+			logger.error("Error processing notification.",e);
+		}
+	}
+
+	private class NotificationTask implements Runnable {
+		private Notification notification = null;
+
+		public NotificationTask(Notification notification) {
+			this.notification = notification;
+		}
+
+		public void run() {
+			NotificationListener listenerArray[] = null;
+
+			synchronized (listeners) {
+				listenerArray = listeners.toArray(new NotificationListener[0]);
+			}
+
+			for (NotificationListener listener : listenerArray) {
+				logger.debug("Notifying listener of type " + listener.getClass().getName()
+						+ "with notification type " + notification.getResourceType());
+				
+				try {
+					listener.processNotification(notification);
+				} catch (Exception e) {
+					logger.error("Error notifying listener", e);
+				}
+			}
+		}
+	}
+	
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationManager.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationManager.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/NotificationManager.java	(revision 48242)
@@ -0,0 +1,20 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import eu.dnetlib.domain.enabling.Notification;
+
+/**
+ * A class to manage notifications from the IS. A common use case is to delegate
+ * the calls from the IS to a manager instance and subscribe listeners to the
+ * manager in order to get Notification objects.
+ * The advantage of the manager is that it can queue the notifications and add
+ * less overhead to the ISSNService.
+ *  
+ * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+ *
+ */
+public interface NotificationManager {
+
+	public void notify(Notification notification);
+	
+	public void addListener(NotificationListener listener);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/SecurityProfileXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/SecurityProfileXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/SecurityProfileXmlConverter.java	(revision 48242)
@@ -0,0 +1,158 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.enabling.SecurityProfileSearchCriteria;
+import gr.uoa.di.driver.xml.security.ObjectFactory;
+import gr.uoa.di.driver.xml.security.RESOURCEPROFILE;
+import gr.uoa.di.driver.xml.security.TypedString;
+
+public class SecurityProfileXmlConverter extends AbstractConverter<SecurityProfile> implements
+		ResourceToXmlConverter<SecurityProfile> {
+	
+	private ObjectFactory of = new ObjectFactory();
+
+	public SecurityProfileXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public String ObjectToXml(SecurityProfile object) throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		profile.setHEADER(of.createHEADERType());
+		profile.setBODY(of.createBODYType());
+
+		profile.getHEADER().setRESOURCEIDENTIFIER(of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+
+		profile.getHEADER().getRESOURCETYPE().setValue(object.getResourceType());
+		profile.getHEADER().getRESOURCEKIND().setValue(object.getResourceKind());
+
+		if (object.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils
+							.DateToString(object.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue("");
+
+		if (object.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					object.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (object.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					object.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+		
+		profile.getBODY().setCONFIGURATION(of.createCONFIGURATIONType());
+
+		if (object.getDriverResourceId() != null)
+			profile.getBODY().getCONFIGURATION().setResourceId(
+					object.getDriverResourceId());
+		else
+			profile.getBODY().getCONFIGURATION().setResourceId(" ");
+
+		for (String role : object.getIdentities()) {
+			TypedString identity = new TypedString();
+
+			identity.setType("driver.security.identity.role");
+			identity.setText("driver.security.identity.role#" + role);
+
+			profile.getBODY().getCONFIGURATION().getIdentities().add(identity);
+		}
+
+		// set password
+		TypedString string = new TypedString();
+
+		string.setText(object.getPassword());
+		string.setType("password");
+
+		profile.getBODY().getCONFIGURATION().getIdentities().add(string);
+
+		this.getMarshaller().marshal(profile, baos);
+
+		return baos.toString();
+	}
+
+	public SecurityProfile XmlToObject(String xml) throws JAXBException {
+		SecurityProfile profile = new SecurityProfile();
+		RESOURCEPROFILE resource = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		profile.setResourceId(resource.getHEADER().getRESOURCEIDENTIFIER()
+				.getValue());
+		profile
+				.setResourceUri(resource.getHEADER().getRESOURCEURI()
+						.getValue());
+		profile.setResourceKind(resource.getHEADER().getRESOURCEKIND()
+				.getValue());
+		profile.setResourceType(resource.getHEADER().getRESOURCETYPE()
+				.getValue());
+		profile.setDateOfCreation(ConversionUtils.parseDate(resource.getHEADER()
+				.getDATEOFCREATION().getValue()));
+
+		profile.setDriverResourceId(resource.getBODY().getCONFIGURATION()
+				.getResourceId());
+
+		for (TypedString identity : resource.getBODY().getCONFIGURATION()
+				.getIdentities()) {
+
+			if (identity.getType().toLowerCase().equals(
+					"driver.security.identity.role")) {
+				profile.getIdentities().add(
+						identity.getText().substring(
+								"driver.security.identity.role".length() + 1));
+			} else if (identity.getType().toLowerCase().equals("password")) {
+				profile.setPassword(identity.getText());
+			}
+		}
+
+		return profile;
+	}
+
+	public String toXQueryString(SecurityProfileSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		String xQuery = "for $x in collection(\"/db/DRIVER/SecurityProfileDSResources/SecurityProfileDSResourceType\")";
+
+		List<String> resourceIds = criteria.getDriverResourceIds();
+		
+		
+		if (resourceIds != null && resourceIds.size() > 0) {
+			xQuery += " where ";
+			xQuery += " $x/RESOURCE_PROFILE/BODY/CONFIGURATION[";
+			
+			for (int i = 0; i < resourceIds.size(); i++) {
+				String resourceId = resourceIds.get(i);
+				
+				if (i > 0)
+					xQuery += " or ";
+					
+				xQuery += "resourceId = \"" + resourceId + "\"";
+			}
+			
+			xQuery += "]";
+		}
+
+		xQuery += " return $x";
+
+		return xQuery;
+
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((SecurityProfileSearchCriteria) criteria);
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/MDFormatDSXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/MDFormatDSXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/MDFormatDSXmlConverter.java	(revision 48242)
@@ -0,0 +1,163 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.data.MDFormatDataStructure;
+import eu.dnetlib.domain.functionality.LayoutField;
+import eu.dnetlib.domain.functionality.MDFormatSearchCriteria;
+import gr.uoa.di.driver.xml.mdformat.RESOURCEPROFILE;
+import gr.uoa.di.driver.xml.mdformat.STATUSType.LAYOUTS.LAYOUT;
+import gr.uoa.di.driver.xml.mdformat.STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD;
+
+public class MDFormatDSXmlConverter extends AbstractConverter<MDFormatDataStructure>implements
+		ResourceToXmlConverter<MDFormatDataStructure> {
+
+	static Logger logger = Logger.getLogger(MDFormatDSXmlConverter.class);
+
+	public MDFormatDSXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public String ObjectToXml(MDFormatDataStructure object)
+			throws JAXBException {
+
+		throw new UnsupportedOperationException("Only xml to object operation"
+				+ " is supported");
+	}
+
+	@Override
+	public MDFormatDataStructure XmlToObject(String xml) throws JAXBException {
+		MDFormatDataStructure mdFormat = new MDFormatDataStructure();
+
+		RESOURCEPROFILE profile = setObjectHeader(xml, mdFormat);
+		setObjectBody(mdFormat, profile);
+
+		return mdFormat;
+	}
+
+	private RESOURCEPROFILE setObjectHeader(String xml,
+			MDFormatDataStructure mdFormat) throws JAXBException {
+
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		mdFormat
+				.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());
+		mdFormat.setDateOfCreation(this.toDate(profile.getHEADER()
+				.getDATEOFCREATION().getValue()));
+		mdFormat.setResourceKind(profile.getHEADER().getRESOURCEKIND()
+				.getValue());
+		mdFormat.setResourceType(profile.getHEADER().getRESOURCETYPE()
+				.getValue());
+
+		return profile;
+	}
+
+	public Date toDate(XMLGregorianCalendar calendar) {
+		return calendar.toGregorianCalendar().getTime();
+	}
+
+	private void setObjectBody(MDFormatDataStructure mdFormat,
+			RESOURCEPROFILE profile) {
+
+		mdFormat
+				.setResourceName(profile.getBODY().getCONFIGURATION().getNAME());
+
+		for (LAYOUT l : profile.getBODY().getSTATUS().getLAYOUTS().getLAYOUT()) {
+			List<LayoutField> fields = new ArrayList<LayoutField>();
+
+			for (FIELD f : l.getFIELDS().getFIELD()) {
+				LayoutField field = new LayoutField();
+				field.setName(f.getName());
+				field.setXpath(f.getXpath());
+				field.setIndexable(f.isIndexable());
+				field.setResult(f.isResult());
+				field.setType(f.getType());
+				field.setStat(f.isStat());
+				if (f.isTokenizable() != null){
+					field.setTokenizable(f.isTokenizable());
+					
+				} else {
+					field.setTokenizable(false);
+				}
+				fields.add(field);
+			}
+
+			mdFormat.getLayouts().put(l.getName(), fields);
+		}
+
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((MDFormatSearchCriteria) criteria);
+	}
+
+	@Deprecated
+	public String toXQueryString(MDFormatDataStructure exampleInstance) {
+		String xQuery = "for $x in collection( \"/db/DRIVER/MDFormatDSResources/MDFormatDSResourceType\" )";
+		List<String> predicates = new ArrayList<String>();
+
+		if (exampleInstance != null) {
+			if (exampleInstance.getResourceName() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME[.=\""
+								+ exampleInstance.getResourceName() + "\"]");
+			}
+
+			for (int i = 0; i < predicates.size(); i++) {
+				String predicate = predicates.get(i);
+
+				if (i > 0)
+					xQuery += " and ";
+				else
+					xQuery += " where ";
+
+				xQuery += predicate;
+			}
+		}
+
+		xQuery += " return $x";
+		logger.debug(xQuery);
+		return xQuery;
+	}
+
+	public String toXQueryString(MDFormatSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		String xQuery = null;
+
+		List<String> predicates = new ArrayList<String>();
+
+		xQuery = "for $x in collection( \"/db/DRIVER/MDFormatDSResources/MDFormatDSResourceType\" )";
+
+		if (criteria.getMDFormatName() != null) {
+			predicates.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME[.= \""
+					+ criteria.getMDFormatName() + "\"]");
+
+		}
+
+		for (int i = 0; i < predicates.size(); i++) {
+			String predicate = predicates.get(i);
+
+			if (i > 0)
+				xQuery += " and ";
+			else
+				xQuery += " where ";
+
+			xQuery += predicate;
+		}
+		xQuery += " return $x";
+		logger.debug(xQuery);
+		return xQuery;
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/CollectionXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/CollectionXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/CollectionXmlConverter.java	(revision 48242)
@@ -0,0 +1,477 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.bind.JAXBException;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.functionality.Collection;
+import eu.dnetlib.domain.functionality.CollectionSearchCriteria;
+import gr.uoa.di.driver.xml.collection.BASKETDOCUMENTType;
+import gr.uoa.di.driver.xml.collection.CHILDType;
+import gr.uoa.di.driver.xml.collection.FIELDType;
+import gr.uoa.di.driver.xml.collection.ObjectFactory;
+import gr.uoa.di.driver.xml.collection.RESOURCEPROFILE;
+
+public class CollectionXmlConverter extends AbstractConverter<Collection> implements
+		ResourceToXmlConverter<Collection> {
+	
+	private ObjectFactory of = new ObjectFactory();
+	
+	public CollectionXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public String ObjectToXml(Collection collection) throws JAXBException {	
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		profile.setHEADER(of.createHEADERType());
+		profile.setBODY(of.createBODYType());
+
+		profile.getHEADER().setRESOURCEIDENTIFIER(
+				of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+
+		if (collection.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils
+							.DateToString(collection.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue("");
+
+		if (collection.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					collection.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (collection.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					collection.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+
+		profile.getHEADER().getRESOURCEKIND().setValue(
+				collection.getResourceKind());
+		profile.getHEADER().getRESOURCETYPE().setValue(
+				collection.getResourceType());
+
+		profile.getBODY().setSECURITYPARAMETERS("");
+		profile.getBODY().setCONFIGURATION(of.createCONFIGURATIONType());
+
+		profile.getBODY().setSTATUS(of.createSTATUSType());
+		profile.getBODY().getSTATUS().setCOUNTDOCS(of.createCOUNTDOCSType());
+
+		if (collection.getLastUpdateDate() != null)
+			profile.getBODY().getSTATUS().getCOUNTDOCS().setLastUpdate(
+					ConversionUtils
+							.DateToString(collection.getLastUpdateDate()));
+		else
+			profile.getBODY().getSTATUS().getCOUNTDOCS().setLastUpdate("");
+
+		profile.getBODY().getSTATUS().getCOUNTDOCS().setNumber(
+				collection.getDocumentCount());
+
+		profile.getBODY().getSTATUS().setRETRIEVALCONDITION(
+				of.createRETRIEVALCONDITIONType());
+		profile.getBODY().getSTATUS().getRETRIEVALCONDITION().setFrozen(
+				collection.isFrozen() ? 1 : 0);
+		profile.getBODY().getSTATUS().getRETRIEVALCONDITION().setContent(
+				collection.getRetrievalCondition());
+
+		profile.getBODY().getCONFIGURATION().setDESCRIPTION(
+				of.createDESCRIPTIONType());
+
+		if (collection.getDescription().size() > 0)
+			for (int i = 0; i < collection.getDescription().size(); i++) {
+				String s = collection.getDescription().get(i);
+				FIELDType type = new FIELDType();
+
+				type.setContent(s);
+				type.setOrd(i);
+				type.setLabel("description");
+
+				profile.getBODY().getCONFIGURATION().getDESCRIPTION()
+						.getFIELD().add(type);
+			}
+		else {
+			FIELDType type = new FIELDType();
+
+			type.setContent("-");
+			type.setOrd(0);
+			type.setLabel("description");
+
+			profile.getBODY().getCONFIGURATION().getDESCRIPTION().getFIELD()
+					.add(type);
+		}
+
+		if (collection.getName() != null)
+			profile.getBODY().getCONFIGURATION().setNAME(collection.getName());
+		else
+			profile.getBODY().getCONFIGURATION().setNAME("");
+
+		profile.getBODY().getCONFIGURATION().setOWNER(of.createOWNERType());
+
+		if (collection.getOwner() != null)
+			profile.getBODY().getCONFIGURATION().getOWNER().setId(
+					collection.getOwner());
+		else
+			profile.getBODY().getCONFIGURATION().getOWNER().setId("");
+		if (collection.getIconUrl() != null) {
+			profile.getBODY().getCONFIGURATION().setIMAGEURL(
+					collection.getIconUrl());
+			profile.getBODY().getCONFIGURATION().setICONURI(
+					collection.getIconUrl());
+		} else {
+			profile.getBODY().getCONFIGURATION().setIMAGEURL("");
+			profile.getBODY().getCONFIGURATION().setICONURI("");
+		}
+
+		if (collection.getSubject() != null)
+			profile.getBODY().getCONFIGURATION().setSUBJECT(
+					collection.getSubject());
+		else
+			profile.getBODY().getCONFIGURATION().setSUBJECT("");
+
+		if (collection.getQuery() != null)
+			profile.getBODY().getCONFIGURATION().setMEMBERSHIPCONDITION(
+					collection.getQuery());
+		else
+			profile.getBODY().getCONFIGURATION().setMEMBERSHIPCONDITION("");
+
+		profile.getBODY().getCONFIGURATION().setVISIBLE(
+				collection.isVisible() ? 1 : 0);
+		profile.getBODY().getCONFIGURATION().setPRIVATE(
+				collection.isPrivate() ? 1 : 0);
+		profile.getBODY().getCONFIGURATION().setCONTAINER(
+				collection.isContainer() ? 1 : 0);
+
+		profile.getBODY().getCONFIGURATION().setFATHER(of.createFATHERType());
+
+		if (collection.getFather() != null)
+			profile.getBODY().getCONFIGURATION().getFATHER().setId(
+					collection.getFather());
+		else
+			profile.getBODY().getCONFIGURATION().getFATHER().setId("InfoSpace");
+
+		profile.getBODY().getCONFIGURATION().setCHILDREN(
+				of.createCHILDRENType());
+
+		for (String child : collection.getChildren()) {
+			CHILDType childType = of.createCHILDType();
+
+			childType.setId(child);
+
+			profile.getBODY().getCONFIGURATION().getCHILDREN().getCHILD().add(
+					childType);
+		}
+
+		// documents in basket
+		if (collection.getDocumentsInBasket().size() > 0) {
+			profile.getBODY().getCONFIGURATION().setBASKET(
+					of.createBASKETType());
+			for (String documentId : collection.getDocumentsInBasket()) {
+
+				BASKETDOCUMENTType documentType = of.createBASKETDOCUMENTType();
+				documentType.setId(documentId);
+				profile.getBODY().getCONFIGURATION().getBASKET().getDOCUMENT()
+						.add(documentType);
+
+			}
+
+		}
+
+		this.getMarshaller().marshal(profile, baos);
+
+		return baos.toString();
+	}
+
+	public Collection XmlToObject(String xml) throws JAXBException {
+		Collection collection = new Collection();
+
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		collection.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER().getValue());
+		collection.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());
+		collection.setResourceKind(collection.getResourceKind());
+		collection.setResourceType(collection.getResourceType());
+		collection.setDateOfCreation(ConversionUtils.parseDate(profile.getHEADER().getDATEOFCREATION().getValue()));
+
+		collection.setName(profile.getBODY().getCONFIGURATION().getNAME());
+		collection.setOwner(profile.getBODY().getCONFIGURATION().getOWNER()
+				.getId());
+		collection.setIconUrl(profile.getBODY().getCONFIGURATION()
+				.getIMAGEURL());
+
+		if (!profile.getBODY().getCONFIGURATION().getFATHER().getId()
+				.toLowerCase().equals("infospace")) {
+			collection.setFather(profile.getBODY().getCONFIGURATION()
+					.getFATHER().getId());
+		}
+
+		collection
+				.setSubject(profile.getBODY().getCONFIGURATION().getSUBJECT());
+		collection
+				.setPrivate(profile.getBODY().getCONFIGURATION().getPRIVATE() == 1);
+		collection
+				.setVisible(profile.getBODY().getCONFIGURATION().getVISIBLE() == 1);
+		collection.setContainer(profile.getBODY().getCONFIGURATION()
+				.getCONTAINER() == 1);
+		collection.setQuery(profile.getBODY().getCONFIGURATION()
+				.getMEMBERSHIPCONDITION());
+		collection.setDocumentCount(profile.getBODY().getSTATUS()
+				.getCOUNTDOCS().getNumber());
+
+		collection.setFrozen(profile.getBODY().getSTATUS()
+				.getRETRIEVALCONDITION().getFrozen() == 1);
+		collection.setRetrievalCondition(profile.getBODY().getSTATUS()
+				.getRETRIEVALCONDITION().getContent());
+
+		List<CHILDType> children = profile.getBODY().getCONFIGURATION()
+				.getCHILDREN().getCHILD();
+		Set<String> set = new HashSet<String>();
+
+		for (CHILDType child : children) {
+			set.add(child.getId());
+		}
+
+		collection.setChildren(set);
+
+		if (profile.getBODY().getCONFIGURATION().getBASKET() != null) {
+			List<BASKETDOCUMENTType> documents = profile.getBODY()
+					.getCONFIGURATION().getBASKET().getDOCUMENT();
+			for (BASKETDOCUMENTType document : documents) {
+				collection.getDocumentsInBasket().add(document.getId());
+			}
+		}
+
+		// TODO collection description order
+		List<FIELDType> collections = profile.getBODY().getCONFIGURATION()
+				.getDESCRIPTION().getFIELD();
+
+		for (FIELDType ftype : collections) {
+			collection.getDescription().add(ftype.getContent());
+		}
+
+		if (profile.getBODY().getSTATUS().getCOUNTDOCS().getLastUpdate() != null
+				&& !profile.getBODY().getSTATUS().getCOUNTDOCS()
+						.getLastUpdate().trim().equals(""))
+			collection.setLastUpdateDate(ConversionUtils.parseDate(profile
+					.getBODY().getSTATUS().getCOUNTDOCS().getLastUpdate()));
+		else
+			collection.setLastUpdateDate(null);
+
+		return collection;
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((CollectionSearchCriteria) criteria);
+	}
+
+	public String toXQueryString(CollectionSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		List<String> predicates = new ArrayList<String>();
+		String xQuery = null;
+
+		if (criteria.getContains() != null) {
+			predicates.add("$x//CONFIGURATION/NAME[contains(lower-case(.), \""
+					+ criteria.getContains().toLowerCase() + "\")]");
+		}
+
+		if (criteria.getStartsWith() != null) {
+			predicates
+					.add("$x//CONFIGURATION/NAME[starts-with(lower-case(.), \""
+							+ criteria.getStartsWith().toLowerCase() + "\")]");
+		}
+
+		if (criteria.getEndsWith() != null) {
+			predicates.add("$x//CONFIGURATION/NAME[ends-with(lower-case(.), \""
+					+ criteria.getEndsWith().toLowerCase() + "\")]");
+		}
+
+		if (criteria.getParentId() != null) {
+			predicates.add("$x//CONFIGURATION/FATHER[@id=\""
+					+ criteria.getParentId() + "\"]");
+		}
+
+		if (criteria.getRoot() != null) {
+			if (criteria.getRoot()) {
+				predicates.add("$x//CONFIGURATION/FATHER[@id=\"InfoSpace\"]");
+			} else {
+				predicates
+						.add("$x//CONFIGURATION/FATHER[@id != \"InfoSpace\"]");
+			}
+		}
+
+		if (criteria.getOwnerId() != null) {
+
+			predicates.add("$x//CONFIGURATION/OWNER[@id=\""
+					+ criteria.getOwnerId() + "\"] ");
+
+		}
+
+		if (criteria.getIsPrivate() != null) {
+			if (criteria.getIsPrivate())
+				predicates
+						.add(" $x//RESOURCE_PROFILE/BODY/CONFIGURATION[PRIVATE = 1] ");
+			else
+				predicates
+						.add(" $x//RESOURCE_PROFILE/BODY/CONFIGURATION[PRIVATE = 0] ");
+
+		}
+		
+		if (criteria.getIsContainer() != null) {
+			if (criteria.getIsContainer())
+				predicates
+						.add(" $x//RESOURCE_PROFILE/BODY/CONFIGURATION[CONTAINER = 1] ");
+			else
+				predicates
+						.add(" $x//RESOURCE_PROFILE/BODY/CONFIGURATION[CONTAINER = 0] ");
+		}
+
+		/*
+		 * specificCriteria = "( $x//CONFIGURATION/OWNER[@id=\"" +
+		 * criteria.getOwnerId() + "\"] and
+		 * $x//RESOURCE_PROFILE/BODY/CONFIGURATION[VISIBLE = \"1\"] )";
+		 */
+
+		if (criteria.getName() != null) {
+			// predicates.add("$x//CONFIGURATION/NAME[matches(lower-case(.), \""
+			// + criteria.getName().toLowerCase() + "\")]");
+			predicates.add("$x//CONFIGURATION[NAME =\"" + criteria.getName()
+					+ "\"]");
+		}
+
+		xQuery = "for $x in collection(\"/db/DRIVER/CollectionDSResources/CollectionDSResourceType\")";
+
+		for (int i = 0; i < predicates.size(); i++) {
+			String predicate = predicates.get(i);
+
+			if (i > 0)
+				xQuery += " and ";
+			else
+				xQuery += " where ";
+
+			xQuery += predicate;
+		}
+
+		xQuery += " order by $x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME";
+		xQuery += " return $x";
+
+		return xQuery;
+	}
+
+	@Deprecated
+	public String toXQueryString(Collection collection) {
+		String xQuery = "for $x in collection(\"/db/DRIVER/CollectionDSResources/CollectionDSResourceType\") ";
+		List<String> predicates = new ArrayList<String>();
+
+		if (collection != null) {
+			if (collection.getResourceId() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/HEADER/RESOURCE_IDENTIFIER[@value=\""
+								+ collection.getResourceId() + "\"]");
+			}
+			if (collection.getName() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/[NAME=\""
+								+ collection.getName() + "\"]");
+			}
+			if (collection.getOwner() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/OWNER[@id=\""
+								+ collection.getOwner() + "\"]");
+			}
+			if (collection.getFather() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/FATHER[@id=\""
+								+ collection.getFather() + "\"]");
+			}
+			if (collection.getSubject() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/[SUBJECT=\""
+								+ collection.getSubject() + "\"]");
+			}
+			if (collection.getQuery() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/[MEMBERSHIP_CONDITION=\""
+								+ collection.getQuery() + "\"]");
+			}
+			if (collection.isPrivate())
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/[PRIVATE = "
+								+ (collection.isPrivate() ? 1 : 0) + "]");
+			if (collection.isVisible())
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/[VISIBLE = "
+								+ (collection.isVisible() ? 1 : 0) + "]");
+			if (collection.isContainer())
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/[CONTAINER = "
+								+ (collection.isContainer() ? 1 : 0) + "]");
+			if (collection.isFrozen())
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/STATUS/RETRIEVAL_CONDITION[@frozen = "
+								+ (collection.isFrozen() ? 1 : 0) + "]");
+
+			if (collection.getDocumentCount() > 0) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/STATUS/COUNT_DOCS[@number = "
+								+ collection.getDocumentCount() + "]");
+			}
+			if (collection.getLastUpdateDate() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/STATUS/COUNT_DOCS[@last_update=\""
+								+ ConversionUtils.DateToString(collection
+										.getLastUpdateDate()) + "\"]");
+			}
+
+			// TODO children
+			for (int i = 0; i < predicates.size(); i++) {
+				String predicate = predicates.get(i);
+
+				if (i > 0)
+					xQuery += " and ";
+				else
+					xQuery += " where ";
+
+				xQuery += predicate;
+			}
+		}
+
+		xQuery += " return $x";
+
+		return xQuery;
+	}
+
+	public static void main(String[] args) throws JAXBException {
+
+		CollectionXmlConverter conv = new CollectionXmlConverter();
+
+		CollectionSearchCriteria criteria = new CollectionSearchCriteria();
+		criteria.setRoot(true);
+
+		// criteria.setIsPrivate(true);
+		// System.out.println(conv.toXQueryString(criteria));
+
+		// criteria.setIsPrivate(false);
+		// System.out.println(conv.toXQueryString(criteria));
+
+		// criteria.setIsPrivate(true);
+		// criteria
+		// .setOwnerId("f3e1810e-3b9b-4f7e-b1aa-deb9f791d417_VXNlckRTUmVzb3VyY2VzL1VzZXJEU1Jlc291cmNlVHlwZQ==");
+
+		System.out.println(conv.toXQueryString(criteria));
+	}
+}

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/CollectionXmlConverter.java
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/AbstractConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/AbstractConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/AbstractConverter.java	(revision 48242)
@@ -0,0 +1,25 @@
+package gr.uoa.di.driver.xml;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+import eu.dnetlib.domain.DriverResource;
+
+public abstract class AbstractConverter<R extends DriverResource> implements ResourceToXmlConverter<R> {
+	
+	private JAXBContext jc = null;
+	
+	public AbstractConverter(Class<?>... resourceClass) throws JAXBException {
+		this.jc = JAXBContext.newInstance(resourceClass);
+	}
+	
+	protected Marshaller getMarshaller() throws JAXBException {
+		return jc.createMarshaller();
+	}
+
+	protected Unmarshaller getUnmarshaller() throws JAXBException {
+		return jc.createUnmarshaller();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/WebInterfaceLayoutXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/WebInterfaceLayoutXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/WebInterfaceLayoutXmlConverter.java	(revision 48242)
@@ -0,0 +1,2495 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.functionality.DisplayType;
+import eu.dnetlib.domain.functionality.DocumentDescription;
+import eu.dnetlib.domain.functionality.DocumentExternalUrlDisplayType;
+import eu.dnetlib.domain.functionality.DocumentField;
+import eu.dnetlib.domain.functionality.DocumentField.Cutpoint;
+import eu.dnetlib.domain.functionality.ExternalUrlDisplayType;
+import eu.dnetlib.domain.functionality.InternalUrlDisplayType;
+import eu.dnetlib.domain.functionality.PlainTextDisplayType;
+import eu.dnetlib.domain.functionality.SearchDisplayType;
+import eu.dnetlib.domain.functionality.Searchable;
+import eu.dnetlib.domain.functionality.Searchable.Type;
+import eu.dnetlib.domain.functionality.SearchableDate;
+import eu.dnetlib.domain.functionality.SwitchDocumentField;
+import eu.dnetlib.domain.functionality.WebInterfaceLayout;
+import eu.dnetlib.domain.functionality.WebInterfaceSearchCriteria;
+import gr.uoa.di.driver.xml.webinterfacelayout.CutpointType;
+import gr.uoa.di.driver.xml.webinterfacelayout.DisplayListType;
+import gr.uoa.di.driver.xml.webinterfacelayout.DisplayTypeType;
+import gr.uoa.di.driver.xml.webinterfacelayout.DocumentDescriptionType;
+import gr.uoa.di.driver.xml.webinterfacelayout.DocumentFieldListType;
+import gr.uoa.di.driver.xml.webinterfacelayout.DocumentFieldType;
+import gr.uoa.di.driver.xml.webinterfacelayout.MapEntryType;
+import gr.uoa.di.driver.xml.webinterfacelayout.MapMapEntryType;
+import gr.uoa.di.driver.xml.webinterfacelayout.MapType;
+import gr.uoa.di.driver.xml.webinterfacelayout.ObjectFactory;
+import gr.uoa.di.driver.xml.webinterfacelayout.RESOURCEPROFILE;
+import gr.uoa.di.driver.xml.webinterfacelayout.SEARCHABLEType;
+import gr.uoa.di.driver.xml.webinterfacelayout.SUPPORTEDLOCALEType;
+import gr.uoa.di.driver.xml.webinterfacelayout.SearchableTypeType;
+import gr.uoa.di.driver.xml.webinterfacelayout.SwitchType;
+
+public class WebInterfaceLayoutXmlConverter extends AbstractConverter<WebInterfaceLayout> implements
+		ResourceToXmlConverter<WebInterfaceLayout> {
+
+	static Logger logger = Logger
+			.getLogger(WebInterfaceLayoutXmlConverter.class);
+	private ObjectFactory of = new ObjectFactory();
+
+	public WebInterfaceLayoutXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class, DocumentDescriptionType.class);
+	}
+
+	public String ObjectToXml(WebInterfaceLayout layout) throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		profile.setHEADER(of.createHEADERType());
+		profile.setBODY(of.createBODYType());
+		profile.getBODY().setCONFIGURATION(of.createCONFIGURATIONType());
+
+		profile.getHEADER().setRESOURCEIDENTIFIER(
+				of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+
+		this.setXmlHeader(profile, layout);
+		this.setXmlBody(layout, profile);
+
+		this.getMarshaller().marshal(profile, baos);
+		return baos.toString();
+	}
+
+	private void setXmlBody(WebInterfaceLayout layout, RESOURCEPROFILE profile) {
+		profile.getBODY().getCONFIGURATION().setNAME(layout.getName());
+		profile.getBODY().getCONFIGURATION().setMDFORMATNAME(
+				layout.getMdFormatName());
+		profile.getBODY().getCONFIGURATION().setINDEXLAYOUTNAME(
+				layout.getIndexLayoutName());
+
+		profile.getBODY().setCSSFILE(layout.getCssFile());
+
+		
+		profile.getBODY().setSUPPORTEDLOCALES(of.createSuportedLocalesListType());
+
+		Locale defaultLocale  = layout.getDefaultLocale();
+		SUPPORTEDLOCALEType sltype = of.createSUPPORTEDLOCALEType();
+		sltype.setDEFAULT(true);
+		sltype.setLOCALE(defaultLocale.getLanguage()+"_"+ defaultLocale.getCountry());
+		profile.getBODY().getSUPPORTEDLOCALES().getSUPPORTEDLOCALE().add(sltype);
+
+		for(Locale slocale : layout.getSupportedLocales()) {
+			sltype = of.createSUPPORTEDLOCALEType();
+			sltype.setDEFAULT(false);
+			sltype.setLOCALE(slocale.getLanguage()+"_"+ slocale.getCountry());
+			profile.getBODY().getSUPPORTEDLOCALES().getSUPPORTEDLOCALE().add(sltype);
+		}
+		
+		profile.getBODY().setSEARCHABLES(of.createSEARCHABLESType());
+
+		for (Searchable s : layout.getSearchFields()) {
+			SEARCHABLEType stype = new SEARCHABLEType();
+
+			// name
+			stype.setNAME(s.getName());
+			stype.setHidden(s.isHidden());
+
+			// type
+			if (s instanceof SearchableDate) {
+				stype.setTYPE(SearchableTypeType.DATE);
+
+				Integer fromYear = ((SearchableDate) s).getFromYear();
+
+				if (fromYear != null) {
+					stype.setFROMYEAR(((SearchableDate) s).getFromYear());
+					Integer toYear = ((SearchableDate) s).getToYear();
+					stype.setTOYEAR(toYear);
+
+				} else {
+					stype.setFROMYEAR(-1);
+					stype.setTOYEAR(-1);
+
+				}
+
+				stype.setPERIODBACKMAP(of.createMapMapType());
+
+				for (Integer key : ((SearchableDate) s).getPeriodBackMap()
+						.keySet()) {					
+
+					MapMapEntryType mapEntry = of.createMapMapEntryType();
+
+					mapEntry.setKey(key);
+					
+					Map<Locale, String> value = ((SearchableDate) s).getPeriodBackMap().get(key);
+					
+					for(Locale locale:value.keySet()){
+						MapEntryType entry = of.createMapEntryType();					
+						entry.setKey(locale.getLanguage()+"_"+ locale.getCountry());
+						entry.setValue(value.get(locale));
+						mapEntry.getValue().add(entry);
+					}
+					
+					stype.getPERIODBACKMAP().getMapEntry().add(mapEntry);
+
+				}
+
+			} else {
+				stype.setTYPE(SearchableTypeType.PLAIN);
+
+			}
+
+			// index
+			stype.setINDEXTYPE(s.getIndexType());
+
+			// description
+			stype.setDESCRIPTIONMAP(of.createMapType());
+			Map<Locale, String> descriptionMap = ((Searchable) s).getDescriptionMap();
+			List<MapEntryType> entrylist = stype.getDESCRIPTIONMAP().getEntry();
+			setLocaleDescriptionMapType(entrylist, descriptionMap);
+				
+
+			// short description
+			stype.setSHORTDESCRIPTIONMAP(of.createMapType());
+			Map<Locale, String> shortDescriptionMap = ((Searchable) s).getShortDescriptionMap();
+			List<MapEntryType> entryList = stype.getSHORTDESCRIPTIONMAP().getEntry();
+			setLocaleDescriptionMapType(entryList, shortDescriptionMap);
+			
+
+			// in search, browse, refine
+			stype.setINSEARCH(s.isInSearch());
+			stype.setINREFINE(s.isInRefine());
+			stype.setINBROWSE(s.isInBrowse());
+
+			// rank search, browse, refine
+			stype.setSEARCHRANK(s.getSearchRank());
+			stype.setBROWSERANK(s.getBrowseRank());
+			stype.setREFINERANK(s.getRefineRank());
+
+			// search, browse vocabulary
+			stype.setSEARCHVOCABULARY(s.getSearchVocabulary());
+			stype.setBROWSEVOCABULARY(s.getBrowseVocabulary());
+
+			profile.getBODY().getSEARCHABLES().getSEARCHABLE().add(stype);
+		}
+
+		// create Map for document description
+		profile.getBODY().setDOCUMENTDESCRIPTIONS(of.createMapType());
+
+		// document description list
+		for (String key : layout.getDocumentDescriptions().keySet()) {
+			DocumentDescription documentDescription = layout
+					.getDocumentDescriptions().get(key);
+			DocumentDescriptionType ddtype = new DocumentDescriptionType();
+			ddtype.setView(key);
+
+			DocumentFieldListType documentFieldListType = of
+					.createDocumentFieldListType();
+			ddtype.setDocumentFields(documentFieldListType);
+
+			// fill this map
+			for (DocumentField field : documentDescription.getDocumentFields()) {
+				DocumentFieldType fieldType = createDocumentFieldXml(ddtype,
+						documentFieldListType, field);
+				ddtype.getDocumentFields().getDocumentField().add(fieldType);
+			}
+
+			MapEntryType entry = of.createMapEntryType();
+			entry.setKey(ddtype.getView());
+			entry.setValue(ddtype);
+
+			profile.getBODY().getDOCUMENTDESCRIPTIONS().getEntry().add(entry);
+
+		}
+
+		for (String collectionId : layout.getBaseCollections()) {
+			profile.getBODY().getBASECOLLECTIONS().add(collectionId);
+		}
+
+		profile.getBODY().setVIEWCOMMUNITIES(layout.isViewCommunities());
+		profile.getBODY().setVIEWCOLLECTIONS(layout.isViewCollections());
+		profile.getBODY().setVIEWREPOSITORIES(layout.isViewRepositories());
+		profile.getBODY().setVIEWANNOUNCEMENTS(layout.isViewAnnouncements());
+		profile.getBODY().setVIEWUSERPROFILE(layout.isViewUserProfile());
+		profile.getBODY().setVIEWSIMILARDOCUMENTS(layout.isViewSimilarDocuments());
+		profile.getBODY().setVIEWEPUBLICATIONS(layout.isViewEPublications());
+
+	}
+
+	private void setLocaleDescriptionMapType(List<MapEntryType> entryList,
+			Map<Locale, String> descriptionMap) {
+		for (Locale locale : descriptionMap.keySet()) {
+			String description = descriptionMap.get(locale);
+			
+			MapEntryType entry = of.createMapEntryType();
+			entry.setKey(locale.getLanguage()+"_"+locale.getCountry());
+			entry.setValue(description);
+			
+			entryList.add(entry);
+		}
+	}
+
+	private DocumentFieldType createDocumentFieldXml(
+			DocumentDescriptionType ddtype,
+			DocumentFieldListType documentFieldListType, DocumentField field) {
+
+		DocumentFieldType fieldType = of.createDocumentFieldType();
+		switch (field.getCutpoint()) {
+		case LINE:
+			fieldType.setCutpoint(CutpointType.LINE);
+			break;
+		case PART:
+			fieldType.setCutpoint(CutpointType.PART);
+			break;
+		case VALUE:
+			fieldType.setCutpoint(CutpointType.VALUE);
+		}
+
+		fieldType.setCssClass(field.getCssClass());
+
+		if (field instanceof SwitchDocumentField) {
+			SwitchType switchType = of.createSwitchType();
+			fieldType.setSwitch(switchType);
+			switchType.setConditionField(((SwitchDocumentField) field)
+					.getConditionField());
+
+			MapType documentFieldMapType = of.createMapType();
+			for (String conditionFieldValue : ((SwitchDocumentField) field)
+					.getDocumentFieldMap().keySet()) {
+				MapEntryType entry = of.createMapEntryType();
+				entry.setKey(conditionFieldValue);
+				DocumentField switcheField = ((SwitchDocumentField) field)
+						.getDocumentFieldMap().get(conditionFieldValue);
+				DocumentFieldListType switchedDocumentFieldListType = of
+						.createDocumentFieldListType();
+				entry.setValue(createDocumentFieldXml(ddtype,
+						switchedDocumentFieldListType, switcheField));
+
+				documentFieldMapType.getEntry().add(entry);
+			}
+
+			switchType.setDocumentFieldMap(documentFieldMapType);
+			fieldType.getSwitch().setDocumentFieldMap(documentFieldMapType);
+
+		} else {
+
+			fieldType.setName(field.getName());
+			
+			//field description
+			fieldType.setDescriptionMap(of.createMapType());
+			Map<Locale, String> descriptionMap = field.getDescriptionMap();
+			List<MapEntryType> entryList = fieldType.getDescriptionMap().getEntry();
+			setLocaleDescriptionMapType(entryList, descriptionMap);
+			
+			fieldType.setForceDescription(field.getForceDescription());
+			
+			//secondary link
+			if(field.getSecondaryLinkMap()!=null) {
+				fieldType.setMultipleValuesDescriptionMap(of.createMapType());
+				Map<Locale, String> multipleValuesDescriptionMap = field.getSecondaryLinkMap();
+				entryList = fieldType.getMultipleValuesDescriptionMap().getEntry();
+				setLocaleDescriptionMapType(entryList, multipleValuesDescriptionMap);
+			}
+			fieldType.setVocabulary(field.getVocabulary());
+			fieldType.setMaxCharacters(field.getMaxCharacters());
+
+			DisplayListType displayListType = of.createDisplayListType();
+			for (DisplayType display : field.getDisplays()) {
+
+				gr.uoa.di.driver.xml.webinterfacelayout.DisplayType displayType = of
+						.createDisplayType();
+
+				//display description
+				displayType.setDescriptionMap(of.createMapType());
+				Map<Locale, String> displayDescriptionMap = display.getDescriptionMap();
+				if (displayDescriptionMap != null) {
+					List<MapEntryType> displayEntryList = displayType.getDescriptionMap().getEntry();
+					setLocaleDescriptionMapType(displayEntryList, displayDescriptionMap);
+				}
+				
+				createXmlDisplayType(display, displayType);
+				displayListType.getDisplay().add(displayType);
+
+				fieldType.setDisplays(displayListType);
+			}
+
+		}
+
+		return fieldType;
+	}
+
+	private void createXmlDisplayType(DisplayType display,
+			gr.uoa.di.driver.xml.webinterfacelayout.DisplayType displayType) {
+
+		if (display instanceof SearchDisplayType) {
+			String label = ((SearchDisplayType) display).getLabel();
+			displayType.setLabel(label);
+			displayType.setDisplayType(DisplayTypeType.SEARCH);
+
+		} else if (display instanceof InternalUrlDisplayType) {
+			String action = ((InternalUrlDisplayType) display).getAction();
+			if (action != null) {
+				displayType.setAction(action);
+			}
+
+			String parameter = ((InternalUrlDisplayType) display)
+					.getParameter();
+			if (parameter != null) {
+				displayType.setParameter(parameter);
+			}
+
+			displayType.setDisplayType(DisplayTypeType.INTERNAL_URL);
+
+		} else if (display instanceof DocumentExternalUrlDisplayType) {
+			displayType.setDisplayType(DisplayTypeType.DOCUMENT_EXTERNAL_URL);
+
+		} else if (display instanceof ExternalUrlDisplayType) {
+			displayType.setDisplayType(DisplayTypeType.EXTERNAL_URL);
+
+		} else if (display instanceof PlainTextDisplayType) {
+			displayType.setDisplayType(DisplayTypeType.PLAIN);
+
+		}
+	}
+
+	private RESOURCEPROFILE setXmlHeader(RESOURCEPROFILE profile,
+			WebInterfaceLayout layout) {
+		profile.getHEADER().getRESOURCEKIND().setValue(layout.getResourceKind());
+		profile.getHEADER().getRESOURCETYPE().setValue(layout.getResourceType());
+
+		if (layout.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils.toXMLGregorianCalendar(layout.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue(ConversionUtils.toXMLGregorianCalendar(new Date()));
+
+		if (layout.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					layout.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (layout.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					layout.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+
+		return profile;
+	}
+
+	public WebInterfaceLayout XmlToObject(String xml) throws JAXBException {
+		WebInterfaceLayout layout = new WebInterfaceLayout(null, null, null);
+
+		RESOURCEPROFILE profile = setObjectHeader(xml, layout);
+		setObjectBody(layout, profile);
+		
+		return layout;
+	}
+
+	private RESOURCEPROFILE setObjectHeader(String xml,
+			WebInterfaceLayout layout) throws JAXBException {
+
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		layout.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());
+		// layout.setDateOfCreation(ConversionUtils.toDate((profile.getHEADER()
+		// .getDATEOFCREATION().getValue())));
+		layout.setResourceKind(profile.getHEADER().getRESOURCEKIND().getValue());		
+		layout.setResourceType(profile.getHEADER().getRESOURCETYPE().getValue());
+
+		return profile;
+	}
+
+	private void setObjectBody(WebInterfaceLayout layout,
+			RESOURCEPROFILE profile) {
+
+		layout.setName(profile.getBODY().getCONFIGURATION().getNAME());
+		layout.setMdFormatName(profile.getBODY().getCONFIGURATION()
+				.getMDFORMATNAME());
+		layout.setIndexLayoutName(profile.getBODY().getCONFIGURATION()
+				.getINDEXLAYOUTNAME());
+
+		layout.setCssFile(profile.getBODY().getCSSFILE());
+
+		layout.setViewCommunities(profile.getBODY().isVIEWCOMMUNITIES());
+		layout.setViewCollections(profile.getBODY().isVIEWCOLLECTIONS());
+		layout.setViewRepositories(profile.getBODY().isVIEWREPOSITORIES());
+		layout.setViewAnnouncements(profile.getBODY().isVIEWANNOUNCEMENTS());
+		layout.setViewUserProfile(profile.getBODY().isVIEWUSERPROFILE());
+		layout.setViewSimilarDocuments(profile.getBODY().isVIEWSIMILARDOCUMENTS());
+		layout.setViewEPublications(profile.getBODY().isVIEWEPUBLICATIONS());
+
+		for (SUPPORTEDLOCALEType sltype: profile.getBODY().getSUPPORTEDLOCALES().getSUPPORTEDLOCALE()){
+			if (sltype.isDEFAULT()){
+				layout.setDefaultLocale(retrieveLocale(sltype)); 
+			} else {
+				layout.getSupportedLocales().add(retrieveLocale(sltype));
+			}
+			
+			
+		}
+		
+		for (String collectionId : profile.getBODY().getBASECOLLECTIONS()) {
+			layout.getBaseCollections().add(collectionId);
+		}
+
+		for (SEARCHABLEType searchable : profile.getBODY().getSEARCHABLES()
+				.getSEARCHABLE()) {
+			Searchable s = null;
+			
+			switch (searchable.getTYPE()) {
+			case DATE:
+				s = new SearchableDate();
+
+				int fromYear = searchable.getFROMYEAR();
+				int toYear = searchable.getTOYEAR();
+
+				if (fromYear != -1) {
+					if (toYear == -1) {
+						Date date = new Date();
+						Calendar calendar = new GregorianCalendar();
+						calendar.setTime(date);
+
+						toYear = calendar.get(Calendar.YEAR);
+					}
+
+					if (toYear <= fromYear) {
+						throw new RuntimeException(
+								"Wrong configuration! $toYear should be greater than $fromYear");
+					}
+
+					((SearchableDate) s).setFromYear(fromYear);
+					((SearchableDate) s).setToYear(toYear);
+
+				}
+
+
+				TreeMap<Integer, Map<Locale, String>> periodBack = new TreeMap<Integer, Map<Locale, String>>();				
+				for (MapMapEntryType mapEntry:searchable.getPERIODBACKMAP().getMapEntry()) {					
+					periodBack.put((Integer)mapEntry.getKey(), new HashMap<Locale, String>());
+					for (MapEntryType entry : mapEntry.getValue()) {
+						String[] localeParts = ((String) entry.getKey()).split("_");
+						Locale locale = new Locale(localeParts[0], localeParts[1]);
+						String description = (String) entry.getValue();
+						periodBack.get(mapEntry.getKey()).put(locale, description);
+					}
+				}
+				((SearchableDate) s).setPeriodBackMap(periodBack);
+
+			/*	if (fromYear != -1) {
+					periodBack.put(0, "in the specified date range");
+				}
+			*/	
+				break;
+
+			case PLAIN:
+				s = new Searchable(Type.PLAIN);
+				break;
+			}
+
+			s.setName(searchable.getNAME());
+			s.setHidden(searchable.isHidden());
+			s.setIndexType(searchable.getINDEXTYPE());
+
+			//description map
+			List<MapEntryType> entryList = searchable.getDESCRIPTIONMAP().getEntry();
+			Map<Locale, String> descriptionMap = new HashMap<Locale, String>();
+			setLocaleDescriptionMap(entryList, descriptionMap);
+			((Searchable)s).setDescriptionMap(descriptionMap);
+			
+			//short description map
+			entryList = searchable.getSHORTDESCRIPTIONMAP().getEntry();
+			Map<Locale, String> shortDescriptionMap = new HashMap<Locale, String>();
+			setLocaleDescriptionMap(entryList, shortDescriptionMap);
+			((Searchable)s).setShortDescriptionMap(shortDescriptionMap);
+
+			s.setInSearch(searchable.isINSEARCH());
+			s.setInRefine(searchable.isINREFINE());
+			s.setInBrowse(searchable.isINBROWSE());
+
+			s.setSearchRank(searchable.getSEARCHRANK());
+			s.setBrowseRank(searchable.getBROWSERANK());
+			s.setRefineRank(searchable.getREFINERANK());
+
+			s.setSearchVocabulary(searchable.getSEARCHVOCABULARY());
+			s.setBrowseVocabulary(searchable.getBROWSEVOCABULARY());
+
+			layout.getSearchFields().add(s);
+		}
+
+		for (MapEntryType entry : profile.getBODY().getDOCUMENTDESCRIPTIONS()
+				.getEntry()) {
+			DocumentDescription docDescription = new DocumentDescription((String) entry.getKey());
+			DocumentDescriptionType documentDescrType = (DocumentDescriptionType) entry
+					.getValue();
+
+			for (DocumentFieldType fieldType : documentDescrType.getDocumentFields().getDocumentField()) {
+				docDescription.getDocumentFields().add(createDocumentFieldObject(fieldType));
+				layout.getDocumentDescriptions().put(docDescription.getView(),
+						docDescription);
+			}
+		
+		}
+
+	}
+
+	private Locale retrieveLocale(SUPPORTEDLOCALEType sltype) {
+		String localeDescr = sltype.getLOCALE();
+		String[] locale_details = localeDescr.split("_");
+		return new Locale(locale_details[0],locale_details[1]);		
+	}
+
+	private void setLocaleDescriptionMap(List<MapEntryType> entryList,
+			Map<Locale, String> descriptionMap) {
+		for(MapEntryType entry: entryList) {
+			String[] localeParts = ((String)entry.getKey()).split("_");
+			Locale locale = new Locale(localeParts[0], localeParts[1]);
+			String description = (String) entry.getValue();				
+			descriptionMap.put(locale, description);				
+		}
+	}
+
+	private DocumentField createDocumentFieldObject(DocumentFieldType fieldType) {
+
+		DocumentField field = null;
+
+		if (fieldType.getSwitch() != null) {
+			String conditionField = fieldType.getSwitch().getConditionField();
+			field = new SwitchDocumentField(conditionField);
+			
+			for (MapEntryType switchEntry : fieldType.getSwitch().getDocumentFieldMap().getEntry()) {
+				
+				String conditionFieldValue = (String) switchEntry.getKey();
+				DocumentFieldType switchFieldType = (DocumentFieldType) switchEntry.getValue();
+				
+				DocumentField documentField = createDocumentFieldObject(switchFieldType);
+				
+				List<MapEntryType> entryList = ((DocumentFieldType) switchEntry.getValue()).getDescriptionMap().getEntry();
+				Map<Locale, String> descriptionMap = new HashMap<Locale, String>();
+				setLocaleDescriptionMap(entryList, descriptionMap);
+				((SwitchDocumentField) field).setDescriptionMap(descriptionMap);
+				((SwitchDocumentField) field).addSwitchDisplayField(conditionFieldValue, documentField);
+			}
+			
+		} else {
+			String name = fieldType.getName();
+			
+			List<MapEntryType> entryList = fieldType.getDescriptionMap().getEntry();
+			Map<Locale, String> descriptionMap = new HashMap<Locale, String>();
+			setLocaleDescriptionMap(entryList, descriptionMap);
+			
+			String cssClass = fieldType.getCssClass();
+			String vocabulary = fieldType.getVocabulary();
+			CutpointType cutpointType = fieldType.getCutpoint();
+			Cutpoint cutpoint = null;
+			switch (cutpointType) {
+			case LINE:
+				cutpoint = Cutpoint.LINE;
+				break;
+			case PART:
+				cutpoint = Cutpoint.PART;
+				break;
+			case VALUE:
+				cutpoint = Cutpoint.VALUE;
+				break;
+			}
+
+			Integer maxCharacters = fieldType.getMaxCharacters();
+
+			List<DisplayType> displays = new ArrayList<DisplayType>();
+			for (gr.uoa.di.driver.xml.webinterfacelayout.DisplayType displayType : fieldType
+					.getDisplays().getDisplay()) {
+				DisplayType display = createObjectDisplayType(displayType);
+				displays.add(display);
+			}
+
+			if (cutpoint != null) {
+				field = new DocumentField(name, descriptionMap, vocabulary,
+						displays, cssClass, cutpoint, maxCharacters);
+
+			} else if (maxCharacters != null) {
+				field = new DocumentField(name, descriptionMap, vocabulary,
+						displays, cssClass, maxCharacters);
+
+			} else {
+				field = new DocumentField(name, descriptionMap, vocabulary,
+						displays, cssClass);
+			}
+
+			if (fieldType.isForceDescription() != null) {
+				field.setForceDescription(fieldType.isForceDescription());
+
+			} else {
+				field.setForceDescription(false);
+
+			}
+			
+			if (fieldType.getMultipleValuesDescriptionMap() != null) {
+				entryList = fieldType.getMultipleValuesDescriptionMap().getEntry();
+				Map<Locale, String> secondaryLinkMap = new HashMap<Locale, String>();
+				setLocaleDescriptionMapType(entryList,secondaryLinkMap);
+				field.setSecondaryLinkMap(secondaryLinkMap);
+			}
+			
+		}
+		
+		return field;
+	}
+
+	private DisplayType createObjectDisplayType(
+			gr.uoa.di.driver.xml.webinterfacelayout.DisplayType displayType) {
+
+		DisplayType display = null;
+		
+		List<MapEntryType> entryList = displayType.getDescriptionMap().getEntry();
+		Map<Locale, String> descriptionMap = new HashMap<Locale, String>();
+		setLocaleDescriptionMap(entryList, descriptionMap);
+		
+		String field = displayType.getField();
+
+		switch (displayType.getDisplayType()) {
+		case PLAIN:
+			display = new PlainTextDisplayType(field, descriptionMap);
+			break;
+
+		case SEARCH:
+			String label = displayType.getLabel();
+			if (label == null) {
+				throw new RuntimeException("In case of "
+						+ "SearchDisplayType field label cannot be null");
+			}
+			display = new SearchDisplayType(field, label, descriptionMap);
+			break;
+
+		case DOCUMENT_EXTERNAL_URL:
+			display = new DocumentExternalUrlDisplayType(field, descriptionMap);
+			break;
+
+		case EXTERNAL_URL:
+			display = new ExternalUrlDisplayType(field, descriptionMap);
+			break;
+
+		case INTERNAL_URL:
+			String action = displayType.getAction();
+			String parameter = displayType.getParameter();
+			display = new InternalUrlDisplayType(field, descriptionMap, action,
+					parameter);
+		}
+		return display;
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((WebInterfaceSearchCriteria) criteria);
+	}
+
+	public String toXQueryString(WebInterfaceSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		String xQuery = null;
+
+		List<String> predicates = new ArrayList<String>();
+
+		xQuery = "for $x in collection( \"/db/DRIVER/WebInterfaceLayoutResources/WebInterfaceLayoutResourceType\" )";
+
+		if (criteria.getLayoutName() != null) {
+			predicates.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME[.= \""
+					+ criteria.getLayoutName() + "\"]");
+
+		}
+
+		for (int i = 0; i < predicates.size(); i++) {
+			String predicate = predicates.get(i);
+
+			if (i > 0) {
+				xQuery += " and ";
+			} else {
+				xQuery += " where ";
+			}
+			xQuery += predicate;
+		}
+		xQuery += " return $x";
+		logger.debug(xQuery);
+		return xQuery;
+	}
+
+	@Deprecated
+	public String toXQueryString(WebInterfaceLayout exampleInstance) {
+		String xQuery = "for $x in collection( \"/db/DRIVER/WebInterfaceLayoutResources/WebInterfaceLayoutResourceType\" )";
+		List<String> predicates = new ArrayList<String>();
+
+		if (exampleInstance != null) {
+			if (exampleInstance.getName() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME[.=\""
+								+ exampleInstance.getName() + "\"]");
+			}
+
+			for (int i = 0; i < predicates.size(); i++) {
+				String predicate = predicates.get(i);
+
+				if (i > 0) {
+					xQuery += " and ";
+				} else {
+					xQuery += " where ";
+				}
+				xQuery += predicate;
+			}
+		}
+
+		xQuery += " return $x";
+		logger.debug(xQuery);
+		return xQuery;
+	}
+
+	public static void main(String[] args) throws JAXBException {
+
+		WebInterfaceLayoutXmlConverter converter = new WebInterfaceLayoutXmlConverter();
+		WebInterfaceLayout layout = new WebInterfaceLayout("i18n_demo", "DMF", "index");
+
+		layout.setCssFile("driver_search_es.css");
+		
+		layout.setDefaultLocale(new Locale("en", "GB"));
+		List<Locale> supportedLocales = new ArrayList<Locale>();
+		supportedLocales.add(new Locale("es", "ES"));
+//		supportedLocales.add(new Locale("el","GR"));
+//		supportedLocales.add(new Locale("zh","CN"));
+		layout.setSupportedLocales(supportedLocales);
+		
+		layout.setViewCollections(false);
+		layout.setViewCommunities(false);
+		layout.setViewRepositories(true);
+		layout.setViewAnnouncements(true);
+		layout.setViewUserProfile(true);
+		layout.setViewSimilarDocuments(false);
+		layout.setViewEPublications(false);
+
+		Searchable sable = new Searchable(Type.PLAIN);
+		Map<Locale, String> descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author");
+		descriprionMap.put(new Locale("es", "ES"), "Creador");
+//		descriprionMap.put(new Locale("el", "GR"), "Συγγραφέας");
+//		descriprionMap.put(new Locale("zh", "CN"), "作者");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "author");
+		descriprionMap.put(new Locale("es", "ES"), "creador");
+//		descriprionMap.put(new Locale("el", "GR"), "συγγραφέας");
+//		descriprionMap.put(new Locale("zh", "CN"), "作者");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("author");
+		sable.setIndexType("creator");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(1);
+		sable.setRefineRank(1);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Title");
+		descriprionMap.put(new Locale("es", "ES"), "Título");
+//		descriprionMap.put(new Locale("el", "GR"), "Τίτλος");
+//		descriprionMap.put(new Locale("zh", "CN"), "标题");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "title");
+		descriprionMap.put(new Locale("es", "ES"), "título");
+//		descriprionMap.put(new Locale("el", "GR"), "τίτλος");
+//		descriprionMap.put(new Locale("zh", "CN"), "标题");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("title");
+		sable.setIndexType("title");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(2);
+		sable.setRefineRank(2);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Subject");
+		descriprionMap.put(new Locale("es", "ES"), "Materia");
+//		descriprionMap.put(new Locale("el", "GR"), "Θέμα");
+//		descriprionMap.put(new Locale("zh", "CN"), "主题");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "subject");
+		descriprionMap.put(new Locale("es", "ES"), "materia");
+//		descriprionMap.put(new Locale("el", "GR"), "θέμα");
+//		descriprionMap.put(new Locale("zh", "CN"), "主题");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("subject");
+		sable.setIndexType("subject");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(false);
+		sable.setSearchRank(3);
+		sable.setRefineRank(3);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Contributor");
+		descriprionMap.put(new Locale("es", "ES"), "Contribuidor");
+//		descriprionMap.put(new Locale("el", "GR"), "Συνεισφέρων");
+//		descriprionMap.put(new Locale("zh", "CN"),"责任者");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "contributor");
+		descriprionMap.put(new Locale("es", "ES"), "contribuidor");
+//		descriprionMap.put(new Locale("el", "GR"), "συνεισφέρων");
+//		descriprionMap.put(new Locale("zh", "CN"),"责任者");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("contributor");
+		sable.setIndexType("contributor");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(false);
+		sable.setSearchRank(4);
+		sable.setRefineRank(4);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publisher");
+		descriprionMap.put(new Locale("es", "ES"), "Editor");
+//		descriprionMap.put(new Locale("el", "GR"), "Εκδότης");
+//		descriprionMap.put(new Locale("zh", "CN"),"出版者");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "publisher");
+		descriprionMap.put(new Locale("es", "ES"), "editor");
+//		descriprionMap.put(new Locale("el", "GR"), "εκδότης");
+//		descriprionMap.put(new Locale("zh", "CN"),"出版者");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("publisher");
+		sable.setIndexType("publisher");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(false);
+		sable.setSearchRank(5);
+		sable.setRefineRank(5);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Source");
+		descriprionMap.put(new Locale("es", "ES"), "Fuente");
+//		descriprionMap.put(new Locale("el", "GR"), "Πηγή");
+//		descriprionMap.put(new Locale("zh", "CN"),"来源");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "source");
+		descriprionMap.put(new Locale("es", "ES"), "fuente");
+//		descriprionMap.put(new Locale("el", "GR"), "πηγή");
+//		descriprionMap.put(new Locale("zh", "CN"),"来源");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("source");
+		sable.setIndexType("source");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(false);
+		sable.setSearchRank(6);
+		sable.setRefineRank(6);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+
+		layout.getSearchFields().add(sable);
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Relation");
+		descriprionMap.put(new Locale("es", "ES"), "Relación");
+		descriprionMap.put(new Locale("es", "ES"), "Relación");
+	//	descriprionMap.put(new Locale("el", "GR"), "Σχέση");
+	//	descriprionMap.put(new Locale("zh", "CN"),"关系");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "relation");
+		descriprionMap.put(new Locale("es", "ES"), "relación");
+	//	descriprionMap.put(new Locale("el", "GR"), "σχέση");
+	//	descriprionMap.put(new Locale("zh", "CN"),"关系");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("relation");
+		sable.setIndexType("relation");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(7);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new SearchableDate();
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publication Date");
+		descriprionMap.put(new Locale("es", "ES"), "Fecha de Publicación");
+//		descriprionMap.put(new Locale("el", "GR"), "Ημερομηνία Έκδοσης");
+//		descriprionMap.put(new Locale("zh", "CN"),"发表时间");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "published");
+		descriprionMap.put(new Locale("es", "ES"), "publicado");
+//		descriprionMap.put(new Locale("el", "GR"), "εκδόθηκε");
+//		descriprionMap.put(new Locale("zh", "CN"),"发表时间");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("dateAccept");
+		sable.setIndexType("dateAccepted");
+		sable.setInSearch(true);
+		sable.setSearchRank(8);
+		((SearchableDate) sable).setFromYear(1980);
+	
+		TreeMap<Integer, Map<Locale, String>> tm = new TreeMap<Integer, Map<Locale,String>>();
+	
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the specified date range");
+		descriprionMap.put(new Locale("es", "ES"), "de la fecha especificada gama");
+//		descriprionMap.put(new Locale("el", "GR"), "στο χρονικό διάστημα");
+//		descriprionMap.put(new Locale("zh", "CN"),"指定的日期范围");
+		tm.put(new Integer(0), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last one month");
+		descriprionMap.put(new Locale("es", "ES"), "en el último mes");
+//		descriprionMap.put(new Locale("el", "GR"), "τον τελευταίο μήνα");
+//		descriprionMap.put(new Locale("zh", "CN"),"前一个月");
+		tm.put(new Integer(1), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 2 months");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 2 meses");
+//		descriprionMap.put(new Locale("el", "GR"), "το τελευταίο δίμηνο");
+//		descriprionMap.put(new Locale("zh", "CN"),"前两个月");
+		tm.put(new Integer(2), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 3 months");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 3 meses");
+//		descriprionMap.put(new Locale("el", "GR"), "το τελευταίο τρίμηνο");
+//		descriprionMap.put(new Locale("zh", "CN"),"前三个月");
+		tm.put(new Integer(3), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 6 months");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 6 meses");
+//		descriprionMap.put(new Locale("el", "GR"), "το τελευταίο εξάμηνο");
+//		descriprionMap.put(new Locale("zh", "CN"),"前六个月");
+		tm.put(new Integer(6), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 12 months");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 12 meses");
+//		descriprionMap.put(new Locale("el", "GR"), "τον τελευταίο χρόνο");
+//		descriprionMap.put(new Locale("zh", "CN"),"前一年");
+		tm.put(new Integer(12), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 2 years");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 2 años");
+	//	descriprionMap.put(new Locale("el", "GR"), "τα τελευταία 2 χρόνια");
+	//	descriprionMap.put(new Locale("zh", "CN"),"前两年");
+		tm.put(new Integer(24), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 3 years");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 3 años");
+//		descriprionMap.put(new Locale("el", "GR"), "τα τελευταία 3 χρόνια");
+//		descriprionMap.put(new Locale("zh", "CN"),"前三年");
+		tm.put(new Integer(36), descriprionMap);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 5 years");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 5 años");
+//		descriprionMap.put(new Locale("el", "GR"), "τα τελευταία 5 χρόνια");
+//		descriprionMap.put(new Locale("zh", "CN"),"前五年");
+		tm.put(new Integer(60), descriprionMap);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 10 years");
+		descriprionMap.put(new Locale("es", "ES"), "en los últimos 10 años");
+//		descriprionMap.put(new Locale("el", "GR"), "τα τελευταία 10 χρόνια");
+//		descriprionMap.put(new Locale("zh", "CN"),"前十年");
+		tm.put(new Integer(120), descriprionMap);
+		((SearchableDate) sable).getPeriodBackMap().putAll(tm);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Document Language");
+		descriprionMap.put(new Locale("es", "ES"), "Idioma del Documento");
+//		descriprionMap.put(new Locale("el", "GR"), "Γλώσσα Κειμένου");
+//		descriprionMap.put(new Locale("zh", "CN"),"文档语种");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "language");
+		descriprionMap.put(new Locale("es", "ES"), "idioma");
+//		descriprionMap.put(new Locale("el", "GR"), "γλώσσα");
+//		descriprionMap.put(new Locale("zh", "CN"),"语种");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("lang");
+		sable.setIndexType("language");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(9);
+		sable.setRefineRank(7);
+		sable.setBrowseRank(1);
+		sable.setSearchVocabulary("Short list of language names");
+		sable.setBrowseVocabulary("Names of languages");
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Document Type");
+		descriprionMap.put(new Locale("es", "ES"), "Tipo de Documento");
+//		descriprionMap.put(new Locale("el", "GR"), "Είδος Κειμένου");
+//		descriprionMap.put(new Locale("zh", "CN"),"文档类型");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "category");
+		descriprionMap.put(new Locale("es", "ES"), "categoría");
+//		descriprionMap.put(new Locale("el", "GR"), "είδος");
+//		descriprionMap.put(new Locale("zh", "CN"),"类型");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("category");
+		sable.setIndexType("CobjCategory");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(10);
+		sable.setRefineRank(8);
+		sable.setBrowseRank(2);
+		sable.setSearchVocabulary("Names of Text Object Typologies");
+		sable.setBrowseVocabulary("Names of Text Object Typologies");
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Repositories");
+		descriprionMap.put(new Locale("es", "ES"), "Repositorios");
+//		descriprionMap.put(new Locale("el", "GR"), "Αποθετήριο");
+//		descriprionMap.put(new Locale("zh", "CN"),"仓储");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "repositories");
+		descriprionMap.put(new Locale("es", "ES"), "repositorios");
+//		descriprionMap.put(new Locale("el", "GR"), "αποθετήριο");
+//		descriprionMap.put(new Locale("zh", "CN"),"仓储");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("repName");
+		sable.setIndexType("repositoryName");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(11);
+		sable.setRefineRank(9);
+		sable.setBrowseRank(3);
+		sable.setSearchVocabulary("Names of Repositories");
+		layout.getSearchFields().add(sable);
+
+		Map<String, DocumentDescription> documentDescriptions = new HashMap<String, DocumentDescription>();
+		DocumentDescription dd = new DocumentDescription("summaryView");
+		List<DocumentField> fields = new ArrayList<DocumentField>();
+		List<DisplayType> displays = new ArrayList<DisplayType>();
+
+		SwitchDocumentField switchField = new SwitchDocumentField("CobjTypology");
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		descriprionMap.put(new Locale("es", "ES"), "${title}");
+		descriprionMap.put(new Locale("el", "GR"), "${title}");
+		descriprionMap.put(new Locale("zh", "CN"),"${title}");		
+		DisplayType type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
+		displays.add(type);
+		
+		DocumentField field = new DocumentField("identifier", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε επίσης");
+//		descriprionMap.put(new Locale("zh", "CN"),"您也可以访问");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Textual", field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		descriprionMap.put(new Locale("es", "ES"), "${title}");
+		descriprionMap.put(new Locale("el", "GR"), "${title}");
+		descriprionMap.put(new Locale("zh", "CN"),"${title}");
+		displays = new ArrayList<DisplayType>();
+		type = new InternalUrlDisplayType("identifier", descriprionMap, "showEPublication", "epId");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε επίσης");
+//		descriprionMap.put(new Locale("zh", "CN"),"您也可以访问");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Compound Object", field);
+	
+		dd.putDocumentField(switchField);
+			
+		type = new SearchDisplayType("creator", "author");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Creador(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Συγγραφείς");
+//		descriprionMap.put(new Locale("zh", "CN"),"作者");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("description");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Description");
+		descriprionMap.put(new Locale("es", "ES"), "Descripción");
+//		descriprionMap.put(new Locale("el", "GR"), "Περιγραφή");
+//		descriprionMap.put(new Locale("zh", "CN"),"描述");
+		field = new DocumentField("description", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${repositoryName}");
+		descriprionMap.put(new Locale("es", "ES"), "${repositoryName}");
+//		descriprionMap.put(new Locale("el", "GR"), "${repositoryName}");
+//		descriprionMap.put(new Locale("zh", "CN"), "${repositoryName}");
+		type = new InternalUrlDisplayType("repositoryName",descriprionMap, "showRepository", "name");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "View repository documents");
+		descriprionMap.put(new Locale("es", "ES"), "Ver documentos del repositorio");
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε τα κείμενα του αποθετηρίου");
+//		descriprionMap.put(new Locale("zh", "CN"),"查看仓储名称");
+		type = new SearchDisplayType("repositoryName", "repName",
+				descriprionMap);
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Repository");
+		descriprionMap.put(new Locale("es", "ES"), "Repositorio");
+//		descriprionMap.put(new Locale("el", "GR"), "Αποθετήριο");
+//		descriprionMap.put(new Locale("zh", "CN"), "仓储");
+		field = new DocumentField("repositoryName", descriprionMap, "Names of Repositories",displays, "resultsField", Cutpoint.LINE, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("language");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Language(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Idioma(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Γλώσσες");
+//		descriprionMap.put(new Locale("zh", "CN"), "语种");
+		field = new DocumentField("language", descriprionMap,
+				"Names of Languages", displays, "resultsField", Cutpoint.VALUE,
+				100);
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+
+		dd = new DocumentDescription("detailedView");
+		fields = new ArrayList<DocumentField>();
+		displays = new ArrayList<DisplayType>();
+
+		switchField = new SwitchDocumentField("CobjTypology");
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		descriprionMap.put(new Locale("es", "ES"), "${title}");
+//		descriprionMap.put(new Locale("el", "GR"), "${title}");
+//		descriprionMap.put(new Locale("zh", "CN"),"${title}");		
+		type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
+		displays.add(type);
+		
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε επίσης");
+//		descriprionMap.put(new Locale("zh", "CN"),"您也可以访问");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Textual", field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		descriprionMap.put(new Locale("es", "ES"), "${title}");
+//		descriprionMap.put(new Locale("el", "GR"), "${title}");
+//		descriprionMap.put(new Locale("zh", "CN"),"${title}");
+		displays = new ArrayList<DisplayType>();
+		type = new InternalUrlDisplayType("identifier", descriprionMap, "showEPublication", "epId");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε επίσης");
+//		descriprionMap.put(new Locale("zh", "CN"),"您也可以访问");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Compound Object", field);
+	
+		dd.putDocumentField(switchField);
+				
+		type = new SearchDisplayType("creator", "author");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Creador(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Συγγραφείς");
+//		descriprionMap.put(new Locale("zh", "CN"), "作者");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("description");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Description");
+		descriprionMap.put(new Locale("es", "ES"), "Descripción");
+//		descriprionMap.put(new Locale("el", "GR"), "Περιγραφή");
+//		descriprionMap.put(new Locale("zh", "CN"), "描述");
+		field = new DocumentField("description", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${repositoryName}");
+		descriprionMap.put(new Locale("es", "ES"), "${repositoryName}");
+//		descriprionMap.put(new Locale("el", "GR"), "${repositoryName}");
+//		descriprionMap.put(new Locale("zh", "CN"), "${repositoryName}");
+		type = new InternalUrlDisplayType("repositoryName",descriprionMap, "showRepository", "name");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "View repository documents");
+		descriprionMap.put(new Locale("es", "ES"), "Ver documentos del repositorio");
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε τα κείμενα του αποθετηρίου");
+//		descriprionMap.put(new Locale("zh", "CN"),"查看仓储名称");
+		type = new SearchDisplayType("repositoryName", "repName",
+				descriprionMap);
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Repository");
+		descriprionMap.put(new Locale("es", "ES"), "Repositorio");
+//		descriprionMap.put(new Locale("el", "GR"), "Αποθετήριο");
+//		descriprionMap.put(new Locale("zh", "CN"), "仓储");
+		field = new DocumentField("repositoryName", descriprionMap, "Names of Repositories",displays, "resultsField", Cutpoint.LINE, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("language");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Language(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Idioma(s)");
+///		descriprionMap.put(new Locale("el", "GR"), "Γλώσσες");
+	//	descriprionMap.put(new Locale("zh", "CN"), "语种");
+		field = new DocumentField("language", descriprionMap,
+				"Names of Languages", displays, "resultsField", Cutpoint.VALUE,
+				100);
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+
+		type = new PlainTextDisplayType("subject");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Subject(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Materia(s)");
+	//	descriprionMap.put(new Locale("el", "GR"), "Θέματα");
+	//	descriprionMap.put(new Locale("zh", "CN"), "主题词");
+		field = new DocumentField("subject", descriprionMap, null, displays,"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("publisher");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publisher(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Editor(es)");
+//		descriprionMap.put(new Locale("el", "GR"), "Εκδότες");
+//		descriprionMap.put(new Locale("zh", "CN"), "出版者");
+		field = new DocumentField("publisher", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("contributor");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Contributor(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Contribuidor(es)");
+//		descriprionMap.put(new Locale("el", "GR"), "Συνεισφέροντες");
+//		descriprionMap.put(new Locale("zh", "CN"), "责任者");
+		field = new DocumentField("source", descriprionMap, null, displays,
+				"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("source");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Source(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Fuente(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Πηγές");
+//		descriprionMap.put(new Locale("zh", "CN"), "来源");		
+		field = new DocumentField("source", descriprionMap, null, displays,"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("dateAccepted");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publication Date(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Fecha(s) de Publicación");
+//		descriprionMap.put(new Locale("el", "GR"), "Ημερομηνίες Έκδοσης");
+//		descriprionMap.put(new Locale("zh", "CN"), "发表日期");	
+		field = new DocumentField("dateAccepted", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+		
+		/*****************************************************************************************************/
+		dd = new DocumentDescription("communityView");
+		fields = new ArrayList<DocumentField>();
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "identifier");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("identifier");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "", Cutpoint.VALUE, 1);
+		dd.putDocumentField(field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "id");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("id");
+		displays.add(type);
+		field = new DocumentField("id", descriprionMap, null, displays, "", Cutpoint.VALUE, 1);
+		dd.putDocumentField(field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "title");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("title");
+		displays.add(type);
+		field = new DocumentField("title", descriprionMap, null, displays, "", Cutpoint.VALUE, 1);
+		dd.putDocumentField(field);
+			
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "creator");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("creator");
+		displays.add(type);
+		field = new DocumentField("creator", descriprionMap, null, displays, "", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("description");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "description");;
+		field = new DocumentField("description", descriprionMap, null, displays,"", Cutpoint.PART, 300);
+		dd.putDocumentField(field);
+
+
+		type = new PlainTextDisplayType("dateAccept");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "dateAccept");
+		field = new DocumentField("dateAccept", descriprionMap, null, displays, "resultsField", Cutpoint.VALUE, 100);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+
+		/*************************************** detailed ************************************************************/
+		dd = new DocumentDescription("detailedView");
+		fields = new ArrayList<DocumentField>();
+		displays = new ArrayList<DisplayType>();
+
+		switchField = new SwitchDocumentField("CobjTypology");
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		descriprionMap.put(new Locale("es", "ES"), "${title}");
+//		descriprionMap.put(new Locale("el", "GR"), "${title}");
+//		descriprionMap.put(new Locale("zh", "CN"),"${title}");		
+		type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
+		displays.add(type);
+		
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε επίσης");
+//		descriprionMap.put(new Locale("zh", "CN"),"您也可以访问");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Textual", field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		descriprionMap.put(new Locale("es", "ES"), "${title}");
+//		descriprionMap.put(new Locale("el", "GR"), "${title}");
+//		descriprionMap.put(new Locale("zh", "CN"),"${title}");
+		displays = new ArrayList<DisplayType>();
+		type = new InternalUrlDisplayType("identifier", descriprionMap, "showEPublication", "epId");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε επίσης");
+//		descriprionMap.put(new Locale("zh", "CN"),"您也可以访问");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Compound Object", field);
+	
+		dd.putDocumentField(switchField);
+				
+		type = new SearchDisplayType("creator", "author");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Creador(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Συγγραφείς");
+//		descriprionMap.put(new Locale("zh", "CN"), "作者");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("description");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Description");
+		descriprionMap.put(new Locale("es", "ES"), "Descripción");
+//		descriprionMap.put(new Locale("el", "GR"), "Περιγραφή");
+//		descriprionMap.put(new Locale("zh", "CN"), "描述");
+		field = new DocumentField("description", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${repositoryName}");
+		descriprionMap.put(new Locale("es", "ES"), "${repositoryName}");
+//		descriprionMap.put(new Locale("el", "GR"), "${repositoryName}");
+//		descriprionMap.put(new Locale("zh", "CN"), "${repositoryName}");
+		type = new InternalUrlDisplayType("repositoryName",descriprionMap, "showRepository", "name");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "View repository documents");
+		descriprionMap.put(new Locale("es", "ES"), "Ver documentos del repositorio");
+//		descriprionMap.put(new Locale("el", "GR"), "Δείτε τα κείμενα του αποθετηρίου");
+//		descriprionMap.put(new Locale("zh", "CN"),"查看仓储名称");
+		type = new SearchDisplayType("repositoryName", "repName",
+				descriprionMap);
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Repository");
+		descriprionMap.put(new Locale("es", "ES"), "Repositorio");
+	//	descriprionMap.put(new Locale("el", "GR"), "Αποθετήριο");
+	//	descriprionMap.put(new Locale("zh", "CN"), "仓储");
+		field = new DocumentField("repositoryName", descriprionMap, "Names of Repositories",displays, "resultsField", Cutpoint.LINE, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("language");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Language(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Idioma(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Γλώσσες");
+//		descriprionMap.put(new Locale("zh", "CN"), "语种");
+		field = new DocumentField("language", descriprionMap,
+				"Names of Languages", displays, "resultsField", Cutpoint.VALUE,
+				100);
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+
+		type = new PlainTextDisplayType("subject");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Subject(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Materia(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Θέματα");
+//		descriprionMap.put(new Locale("zh", "CN"), "主题词");
+		field = new DocumentField("subject", descriprionMap, null, displays,"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("publisher");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publisher(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Editor(es)");
+		descriprionMap.put(new Locale("el", "GR"), "Εκδότες");
+		descriprionMap.put(new Locale("zh", "CN"), "出版者");
+		field = new DocumentField("publisher", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("contributor");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Contributor(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Contribuidor(es)");
+//		descriprionMap.put(new Locale("el", "GR"), "Συνεισφέροντες");
+//		descriprionMap.put(new Locale("zh", "CN"), "责任者");
+		field = new DocumentField("source", descriprionMap, null, displays,
+				"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("source");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Source(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Fuente(s)");
+//		descriprionMap.put(new Locale("el", "GR"), "Πηγές");
+//		descriprionMap.put(new Locale("zh", "CN"), "来源");		
+		field = new DocumentField("source", descriprionMap, null, displays,"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("dateAccepted");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publication Date(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Fecha(s) de Publicación");
+//		descriprionMap.put(new Locale("el", "GR"), "Ημερομηνίες Έκδοσης");
+//		descriprionMap.put(new Locale("zh", "CN"), "发表日期");	
+		field = new DocumentField("dateAccepted", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+		
+		dd = new DocumentDescription("bibtex");
+		fields = new ArrayList<DocumentField>();
+		displays = new ArrayList<DisplayType>();
+
+		switchField = new SwitchDocumentField("CobjCategory");
+
+/*		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");	
+		type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
+		displays.add(type);		
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Textual", field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		displays = new ArrayList<DisplayType>();
+		type = new InternalUrlDisplayType("identifier", descriprionMap, "showEPublication", "epId");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Compound Object", field);
+	
+		dd.putDocumentField(switchField);
+*/		
+		dd = new DocumentDescription("bibtex");
+		fields = new ArrayList<DocumentField>();
+		displays = new ArrayList<DisplayType>();
+
+		type = new PlainTextDisplayType("creator");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "author");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("title");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "title");
+		field = new DocumentField("projectname", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("publicationyear");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "year");
+		field = new DocumentField("description", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+	
+		documentDescriptions.put(dd.getView(), dd);
+		
+		
+	/*	dd = new DocumentDescription("summaryEPView");
+		fields = new ArrayList<DocumentField>();
+		displays = new ArrayList<DisplayType>();
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		descriprionMap.put(new Locale("es", "ES"), "${title}");
+		descriprionMap.put(new Locale("el", "GR"), "${title}");
+		descriprionMap.put(new Locale("zh", "CN"),"${title}");								  
+		type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
+		descriprionMap.put(new Locale("el", "GR"), "Δείτε επίσης");
+		descriprionMap.put(new Locale("zh", "CN"),"您也可以访问");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		
+		dd.putDocumentField(field);
+			
+		type = new SearchDisplayType("creator", "author");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Creador(s)");
+		descriprionMap.put(new Locale("el", "GR"), "Συγγραφείς");
+		descriprionMap.put(new Locale("zh", "CN"),"作者");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("subject");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Subject(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Materia(s)");
+		descriprionMap.put(new Locale("el", "GR"), "Θέματα");
+		descriprionMap.put(new Locale("zh", "CN"), "主题词");
+		field = new DocumentField("subject", descriprionMap, null, displays,"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("description");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Description");
+		descriprionMap.put(new Locale("es", "ES"), "Descripción");
+		descriprionMap.put(new Locale("el", "GR"), "Περιγραφή");
+		descriprionMap.put(new Locale("zh", "CN"),"描述");
+		field = new DocumentField("description", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${repositoryName}");
+		descriprionMap.put(new Locale("es", "ES"), "${repositoryName}");	
+		descriprionMap.put(new Locale("el", "GR"), "${repositoryName}");
+		descriprionMap.put(new Locale("zh", "CN"), "${repositoryName}");
+		type = new PlainTextDisplayType("repositoryName",descriprionMap);
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Repository");
+		descriprionMap.put(new Locale("es", "ES"), "Repositorio");
+		descriprionMap.put(new Locale("el", "GR"), "Αποθετήριο");
+		descriprionMap.put(new Locale("zh", "CN"), "仓储");
+		field = new DocumentField("repositoryName", descriprionMap, "Names of Repositories",displays, "resultsField", Cutpoint.LINE, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("language");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Language(s)");
+		descriprionMap.put(new Locale("es", "ES"), "Idioma(s)");
+		descriprionMap.put(new Locale("el", "GR"), "Γλώσσες");
+		descriprionMap.put(new Locale("zh", "CN"), "语种");
+		field = new DocumentField("language", descriprionMap,
+				"Names of Languages", displays, "resultsField", Cutpoint.VALUE,
+				100);
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+		*/
+		
+		
+		
+		layout.setDocumentDescriptions(documentDescriptions);
+		
+//		String xml = converter.ObjectToXml(layout);
+//		System.out.println(xml);
+		createXML(converter);
+//		System.out.println(xml.replace("\"", "\\\""));
+		
+//		WebInterfaceLayout layout2 = converter.XmlToObject(xml);
+//		System.out.println(layout2.getSupportedLocales());
+		
+//		createXML(converter);
+//		SwitchDocumentField swiField = (SwitchDocumentField) layout2.getDocumentDescriptions().get("summaryView").getDocumentFields().get(0);
+//		System.out.println(swiField.getDocumentField("Textual").getName());
+/*		System.out.println(swiField.getDocumentField("Textual").getDescriptionMap().values());
+		System.out.println(swiField.getDocumentField("Compound Object").getForceDescription());
+		System.out.println(swiField.getDocumentField("Compound Object").getDescriptionMap().values());
+//		System.out.println(((SwitchDocumentField)layout2.getDocumentDescriptions().get(View.DETAILED_VIEW).getDocumentFields().get(0)).getDocumentField("Textual"));
+		//System.out.println(layout2.getSupportedLocales());
+//		System.out.println(layout2.getDocumentDescriptions().get(View.DETAILED_VIEW).getDocumentFields());*/
+		// System.out.println(layout2.getDocumentDescriptions().get(View.DETAILED_VIEW).getTitleField().getDescription());
+		// System.out.println(layout2.getDocumentDescriptions().get(View.SUMMARY_VIEW).getTitleField().getForceDescription());
+	}
+	
+	
+	private static void createXML(WebInterfaceLayoutXmlConverter converter) throws JAXBException{
+		WebInterfaceLayout layout = new WebInterfaceLayout("testing", "DMF", "index");
+		layout.setCssFile("driver_search.css");
+		
+		layout.setDefaultLocale(new Locale("en", "GB"));
+		List<Locale> supportedLocales = new ArrayList<Locale>();
+		layout.setSupportedLocales(supportedLocales);
+		
+		layout.setViewCollections(false);
+		layout.setViewCommunities(false);
+		layout.setViewRepositories(true);
+		layout.setViewAnnouncements(true);
+		layout.setViewUserProfile(true);
+		layout.setViewSimilarDocuments(false);
+		layout.setViewEPublications(false);
+
+		Searchable sable = new Searchable(Type.PLAIN);
+		Map<Locale, String> descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "author");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("author");
+		sable.setIndexType("creator");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(1);
+		sable.setRefineRank(1);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Title");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "title");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("title");
+		sable.setIndexType("title");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(2);
+		sable.setRefineRank(2);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Subject");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "subject");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("subject");
+		sable.setIndexType("subject");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(3);
+		sable.setRefineRank(3);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publisher");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "publisher");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("publisher");
+		sable.setIndexType("publisher");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(5);
+		sable.setRefineRank(5);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new SearchableDate();
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publication Date");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "published");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("dateAccept");
+		sable.setIndexType("publicationdate");
+		sable.setInSearch(true);
+		sable.setSearchRank(8);
+		((SearchableDate) sable).setFromYear(1980);
+	
+		TreeMap<Integer, Map<Locale, String>> tm = new TreeMap<Integer, Map<Locale,String>>();
+	
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the specified date range");
+		tm.put(new Integer(0), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last one month");
+		tm.put(new Integer(1), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 2 months");
+		tm.put(new Integer(2), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 3 months");
+		tm.put(new Integer(3), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 6 months");
+		tm.put(new Integer(6), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 12 months");;
+		tm.put(new Integer(12), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 2 years");
+		tm.put(new Integer(24), descriprionMap);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 3 years");
+		tm.put(new Integer(36), descriprionMap);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 5 years");
+		tm.put(new Integer(60), descriprionMap);
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "in the last 10 years");
+		tm.put(new Integer(120), descriprionMap);
+		((SearchableDate) sable).getPeriodBackMap().putAll(tm);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Document Language");;
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "language");
+		sable.setShortDescriptionMap(descriprionMap);	
+		sable.setName("lang");
+		sable.setIndexType("language");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(9);
+		sable.setRefineRank(7);
+		sable.setBrowseRank(1);
+		sable.setSearchVocabulary("Short list of language names");
+		sable.setBrowseVocabulary("Names of languages");
+		layout.getSearchFields().add(sable);
+		
+		sable = new Searchable(Type.PLAIN);
+		sable.setHidden(true);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Project");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "project");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("project");
+		sable.setIndexType("projectname");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(1);
+		sable.setRefineRank(1);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+		
+		
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Scientific Areas");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "area");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("areaid");
+		sable.setIndexType("subdivisionid");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(11);
+		sable.setRefineRank(9);
+		sable.setBrowseRank(3);
+		sable.setSearchVocabulary("subdivisionNames");
+		sable.setBrowseVocabulary("subdivisionNames");
+		layout.getSearchFields().add(sable);
+		
+		sable = new Searchable(Type.PLAIN);
+		sable.setHidden(true);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Scientific Area");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "area");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("area");
+		sable.setIndexType("subdivisionname");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(1);
+		sable.setRefineRank(1);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+		
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Country");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "country");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("country");
+		sable.setIndexType("countryaffiliation");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(1);
+		sable.setRefineRank(1);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary("Names of Countries");
+		sable.setSearchVocabulary("Names of Countries");
+		layout.getSearchFields().add(sable);
+		
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Programmes");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "programmes");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("programmeid");
+		sable.setIndexType("specificprogrammeid");
+		sable.setInSearch(true);
+		sable.setInRefine(true);
+		sable.setInBrowse(true);
+		sable.setSearchRank(11);
+		sable.setRefineRank(9);
+		sable.setBrowseRank(3);
+		sable.setSearchVocabulary("programmeNames");
+		sable.setBrowseVocabulary("programmeNames");
+		layout.getSearchFields().add(sable);
+		
+		sable = new Searchable(Type.PLAIN);
+		sable.setHidden(true);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Programmes");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "programmes");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("programme");
+		sable.setIndexType("specificprogrammename");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(1);
+		sable.setRefineRank(1);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+
+		sable = new Searchable(Type.PLAIN);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Repositories");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "repositories");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("repName");
+		sable.setIndexType("datasourcename");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(11);
+		sable.setRefineRank(9);
+		sable.setBrowseRank(3);
+		sable.setSearchVocabulary("datasourcesNames");
+		layout.getSearchFields().add(sable);
+		
+		sable = new Searchable(Type.PLAIN);
+		sable.setHidden(true);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publication Year");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "year");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("year");
+		sable.setIndexType("publicationyear");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(true);
+		sable.setSearchRank(11);
+		sable.setRefineRank(9);
+		sable.setBrowseRank(3);
+		layout.getSearchFields().add(sable);
+		
+		sable = new Searchable(Type.PLAIN);
+		sable.setHidden(true);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Access Mode");
+		sable.setDescriptionMap(descriprionMap);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "access");
+		sable.setShortDescriptionMap(descriprionMap);
+		sable.setName("accessmode");
+		sable.setIndexType("accessmode");
+		sable.setInSearch(true);
+		sable.setInRefine(false);
+		sable.setInBrowse(false);
+		sable.setSearchRank(1);
+		sable.setRefineRank(1);
+		sable.setSearchVocabulary(null);
+		sable.setBrowseVocabulary(null);
+		layout.getSearchFields().add(sable);
+		
+		Map<String, DocumentDescription> documentDescriptions = new HashMap<String, DocumentDescription>();
+		DocumentDescription dd = new DocumentDescription("summaryView");
+		List<DocumentField> fields = new ArrayList<DocumentField>();
+		List<DisplayType> displays = new ArrayList<DisplayType>();
+
+		SwitchDocumentField switchField = new SwitchDocumentField("CobjTypology");
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");	
+		DisplayType type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
+		displays.add(type);
+		
+		DocumentField field = new DocumentField("identifier", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Textual", field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		displays = new ArrayList<DisplayType>();
+		type = new InternalUrlDisplayType("identifier", descriprionMap, "showEPublication", "epId");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Compound Object", field);
+	
+		dd.putDocumentField(switchField);
+			
+		type = new SearchDisplayType("creator", "author");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author(s)");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("projectname");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Project(s)");
+		field = new DocumentField("projectname", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		documentDescriptions.put(dd.getView(), dd);
+		
+		/************** detailed view *********************************/
+		
+		dd = new DocumentDescription("detailedView");
+		fields = new ArrayList<DocumentField>();
+		displays = new ArrayList<DisplayType>();
+
+		switchField = new SwitchDocumentField("CobjTypology");
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");	
+		type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
+		displays.add(type);		
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Textual", field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${title}");
+		displays = new ArrayList<DisplayType>();
+		type = new InternalUrlDisplayType("identifier", descriprionMap, "showEPublication", "epId");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "You can also visit...");
+		field.setSecondaryLinkMap(descriprionMap);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("Compound Object", field);
+	
+		dd.putDocumentField(switchField);
+				
+		type = new SearchDisplayType("creator","author");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Author(s)");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("projectname");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Project(s)");
+		field = new DocumentField("projectname", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("description");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Description");
+		field = new DocumentField("description", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("specificprogrammedescription");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Programme(s)");
+		field = new DocumentField("specificprogrammedescription", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("subdivisionname");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Scientific Area(s)");
+		field = new DocumentField("subdivisionname", descriprionMap, null, displays,"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("subject");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Subject(s)");
+		field = new DocumentField("subject", descriprionMap, null, displays,"resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "${datasourcename}");
+		type = new PlainTextDisplayType("datasourcename");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Repository");
+		field = new DocumentField("datasourcename", descriprionMap, null,displays, "resultsField", Cutpoint.LINE, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("language");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Language(s)");
+		field = new DocumentField("language", descriprionMap,
+				"Names of Languages", displays, "resultsField", Cutpoint.VALUE,
+				100);
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+
+		type = new PlainTextDisplayType("publisher");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publisher(s)");
+		field = new DocumentField("publisher", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("publicationdate");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Publication Date(s)");	
+		field = new DocumentField("publicationdate", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+
+		type = new PlainTextDisplayType("embargoenddate");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Embargo End Date");	
+		field = new DocumentField("embargoenddate", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+		
+		type = new PlainTextDisplayType("accessmode");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "Access Mode");	
+		field = new DocumentField("accessmode", descriprionMap, null, displays, "resultsField");
+		fields.add(field);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+		
+		
+		/************** community view *****************/
+		dd = new DocumentDescription("communityView");
+		fields = new ArrayList<DocumentField>();
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "identifier");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("identifier");
+		displays.add(type);
+		field = new DocumentField("identifier", descriprionMap, null, displays, "", Cutpoint.VALUE, 1);
+		dd.putDocumentField(field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "id");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("id");
+		displays.add(type);
+		field = new DocumentField("id", descriprionMap, null, displays, "", Cutpoint.VALUE, 1);
+		dd.putDocumentField(field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "title");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("title");
+		displays.add(type);
+		field = new DocumentField("title", descriprionMap, null, displays, "", Cutpoint.VALUE, 1);
+		dd.putDocumentField(field);
+			
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "creator");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("creator");
+		displays.add(type);
+		field = new DocumentField("creator", descriprionMap, null, displays, "", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("description");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "description");;
+		field = new DocumentField("description", descriprionMap, null, displays,"", Cutpoint.PART, 300);
+		dd.putDocumentField(field);
+
+
+		type = new PlainTextDisplayType("dateAccept");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "dateAccept");
+		field = new DocumentField("dateAccept", descriprionMap, null, displays, "resultsField", Cutpoint.VALUE, 100);
+		dd.putDocumentField(field);
+		documentDescriptions.put(dd.getView(), dd);
+		
+		layout.setDocumentDescriptions(documentDescriptions);
+
+		
+/************** BibTeX view *********************************/
+		
+		dd = new DocumentDescription("bibtex");
+		fields = new ArrayList<DocumentField>();
+		displays = new ArrayList<DisplayType>();
+
+		switchField = new SwitchDocumentField("CobjCategory");
+
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "creator00");	
+		type = new PlainTextDisplayType("creator", descriprionMap);
+		displays.add(type);		
+		field = new DocumentField("creator", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
+		field.setForceDescription(false);
+		switchField.addSwitchDisplayField("0000", field);
+		
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "craetor01");
+		displays = new ArrayList<DisplayType>();
+		type = new PlainTextDisplayType("creator", descriprionMap);
+		displays.add(type);
+		field = new DocumentField("creator", descriprionMap, null, displays, "document_ep", Cutpoint.VALUE, 1);
+		field.setForceDescription(true);
+		switchField.addSwitchDisplayField("0001", field);
+	
+		dd.putDocumentField(switchField);
+				
+		type = new PlainTextDisplayType("creator");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "author");
+		field = new DocumentField("creator", descriprionMap, null, displays,
+				"resultsField", Cutpoint.VALUE, 100);
+		field.setDescriptionMap(descriprionMap);
+		fields.add(field);
+		dd.putDocumentField(field);
+
+		type = new PlainTextDisplayType("title");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "title");
+		field = new DocumentField("projectname", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+		type = new PlainTextDisplayType("publicationyear");
+		displays = new ArrayList<DisplayType>();
+		displays.add(type);
+		descriprionMap = new HashMap<Locale, String>();
+		descriprionMap.put(new Locale("en", "GB"), "year");
+		field = new DocumentField("description", descriprionMap, null, displays,"resultsField", Cutpoint.PART, 300);
+		fields.add(field);
+		dd.putDocumentField(field);
+		
+	
+		documentDescriptions.put(dd.getView(), dd);
+		layout.setDocumentDescriptions(documentDescriptions);
+		
+		String xml = converter.ObjectToXml(layout);
+		System.out.println(xml);
+	//	System.out.println(xml.replace("\"", "\\\""));
+	//	WebInterfaceLayout layout2 = converter.XmlToObject(xml);
+	//	System.out.println(layout2.getDocumentDescriptions().get("summaryView"));
+		
+	}
+	
+	
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/INTERFACE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/INTERFACE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/INTERFACE.java	(revision 48242)
@@ -0,0 +1,374 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for INTERFACE complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="INTERFACE">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="ACCESS_PROTOCOL">
+ *           &lt;complexType>
+ *             &lt;simpleContent>
+ *               &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *                 &lt;attribute name="username" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *                 &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *                 &lt;attribute name="filter" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *               &lt;/extension>
+ *             &lt;/simpleContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="BASE_URL" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="FORMATS" type="{}FORMATS"/>
+ *         &lt;element name="SETS">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element name="SET" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "INTERFACE", propOrder = {
+    "accessprotocol",
+    "baseurl",
+    "formats",
+    "sets"
+})
+public class INTERFACE {
+
+    @XmlElement(name = "ACCESS_PROTOCOL", required = true)
+    protected INTERFACE.ACCESSPROTOCOL accessprotocol;
+    @XmlElement(name = "BASE_URL", required = true)
+    protected String baseurl;
+    @XmlElement(name = "FORMATS", required = true)
+    protected FORMATS formats;
+    @XmlElement(name = "SETS", required = true)
+    protected INTERFACE.SETS sets;
+
+    /**
+     * Gets the value of the accessprotocol property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link INTERFACE.ACCESSPROTOCOL }
+     *     
+     */
+    public INTERFACE.ACCESSPROTOCOL getACCESSPROTOCOL() {
+        return accessprotocol;
+    }
+
+    /**
+     * Sets the value of the accessprotocol property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link INTERFACE.ACCESSPROTOCOL }
+     *     
+     */
+    public void setACCESSPROTOCOL(INTERFACE.ACCESSPROTOCOL value) {
+        this.accessprotocol = value;
+    }
+
+    /**
+     * Gets the value of the baseurl property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getBASEURL() {
+        return baseurl;
+    }
+
+    /**
+     * Sets the value of the baseurl property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setBASEURL(String value) {
+        this.baseurl = value;
+    }
+
+    /**
+     * Gets the value of the formats property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FORMATS }
+     *     
+     */
+    public FORMATS getFORMATS() {
+        return formats;
+    }
+
+    /**
+     * Sets the value of the formats property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FORMATS }
+     *     
+     */
+    public void setFORMATS(FORMATS value) {
+        this.formats = value;
+    }
+
+    /**
+     * Gets the value of the sets property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link INTERFACE.SETS }
+     *     
+     */
+    public INTERFACE.SETS getSETS() {
+        return sets;
+    }
+
+    /**
+     * Sets the value of the sets property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link INTERFACE.SETS }
+     *     
+     */
+    public void setSETS(INTERFACE.SETS value) {
+        this.sets = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *       &lt;attribute name="username" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+     *       &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+     *       &lt;attribute name="filter" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class ACCESSPROTOCOL {
+
+        @XmlValue
+        protected String value;
+        @XmlAttribute
+        @XmlSchemaType(name = "anySimpleType")
+        protected String username;
+        @XmlAttribute
+        @XmlSchemaType(name = "anySimpleType")
+        protected String password;
+        @XmlAttribute
+        @XmlSchemaType(name = "anySimpleType")
+        protected String filter;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the username property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getUsername() {
+            return username;
+        }
+
+        /**
+         * Sets the value of the username property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setUsername(String value) {
+            this.username = value;
+        }
+
+        /**
+         * Gets the value of the password property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getPassword() {
+            return password;
+        }
+
+        /**
+         * Sets the value of the password property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setPassword(String value) {
+            this.password = value;
+        }
+
+        /**
+         * Gets the value of the filter property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFilter() {
+            return filter;
+        }
+
+        /**
+         * Sets the value of the filter property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFilter(String value) {
+            this.filter = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="SET" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "set"
+    })
+    public static class SETS {
+
+        @XmlElement(name = "SET")
+        protected List<String> set;
+
+        /**
+         * Gets the value of the set property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the set property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getSET().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link String }
+         * 
+         * 
+         */
+        public List<String> getSET() {
+            if (set == null) {
+                set = new ArrayList<String>();
+            }
+            return this.set;
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/CONFIGURATION.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/CONFIGURATION.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/CONFIGURATION.java	(revision 48242)
@@ -0,0 +1,644 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATION complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATION">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="DATASOURCE_TYPE" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="DATASOURCE_ORIGINAL_ID" type="{}DATASOURCE_ORIGINAL_IDType" minOccurs="0"/>
+ *         &lt;element name="DATASOURCE_COMPLIANCE_DEGREE" type="{}DATASOURCE_COMPLIANCE_DEGREEType" minOccurs="0"/>
+ *         &lt;element name="DATASOURCE_AGGREGATED" minOccurs="0">
+ *           &lt;simpleType>
+ *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *               &lt;enumeration value="true"/>
+ *               &lt;enumeration value="false"/>
+ *             &lt;/restriction>
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *         &lt;element name="DATASOURCE_AGGREGATOR_ID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="ENVIRONMENTS" type="{}ENVIRONMENTSType" minOccurs="0"/>
+ *         &lt;element name="TYPOLOGY" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="MAX_SIZE_OF_DATASTRUCTURE" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ *         &lt;element name="AVAILABLE_DISKSPACE" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ *         &lt;element name="MAX_NUMBER_OF_DATASTRUCTURE" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ *         &lt;element name="OFFICIAL_NAME" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="ENGLISH_NAME" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="ICON_URI" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="COUNTRY" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="LOCATION" type="{}LOCATION"/>
+ *         &lt;element name="REPOSITORY_WEBPAGE" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="REPOSITORY_INSTITUTION" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="ADMIN_INFO" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="INTERFACES" type="{}INTERFACES"/>
+ *         &lt;element name="DATACOLLS" type="{}DATACOLLSType" minOccurs="0"/>
+ *         &lt;element name="REGISTERED_BY" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="EXTRA_FIELDS" type="{}EXTRA_FIELDS" minOccurs="0"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATION", propOrder = {
+
+})
+public class CONFIGURATION {
+
+    @XmlElement(name = "DATASOURCE_TYPE")
+    protected String datasourcetype;
+    @XmlElement(name = "DATASOURCE_ORIGINAL_ID")
+    protected DATASOURCEORIGINALIDType datasourceoriginalid;
+    @XmlElement(name = "DATASOURCE_COMPLIANCE_DEGREE")
+    protected DATASOURCECOMPLIANCEDEGREEType datasourcecompliancedegree;
+    @XmlElement(name = "DATASOURCE_AGGREGATED")
+    protected String datasourceaggregated;
+    @XmlElement(name = "DATASOURCE_AGGREGATOR_ID")
+    protected String datasourceaggregatorid;
+    @XmlElement(name = "ENVIRONMENTS")
+    protected ENVIRONMENTSType environments;
+    @XmlElement(name = "TYPOLOGY", required = true)
+    protected String typology;
+    @XmlElement(name = "MAX_SIZE_OF_DATASTRUCTURE", required = true)
+    protected BigInteger maxsizeofdatastructure;
+    @XmlElement(name = "AVAILABLE_DISKSPACE", required = true)
+    protected BigInteger availablediskspace;
+    @XmlElement(name = "MAX_NUMBER_OF_DATASTRUCTURE", required = true)
+    protected BigInteger maxnumberofdatastructure;
+    @XmlElement(name = "OFFICIAL_NAME", required = true)
+    protected String officialname;
+    @XmlElement(name = "ENGLISH_NAME", required = true)
+    protected String englishname;
+    @XmlElement(name = "ICON_URI", required = true)
+    protected String iconuri;
+    @XmlElement(name = "COUNTRY", required = true)
+    protected String country;
+    @XmlElement(name = "LOCATION", required = true)
+    protected LOCATION location;
+    @XmlElement(name = "REPOSITORY_WEBPAGE", required = true)
+    protected String repositorywebpage;
+    @XmlElement(name = "REPOSITORY_INSTITUTION", required = true)
+    protected String repositoryinstitution;
+    @XmlElement(name = "ADMIN_INFO", required = true)
+    protected String admininfo;
+    @XmlElement(name = "INTERFACES", required = true)
+    protected INTERFACES interfaces;
+    @XmlElement(name = "DATACOLLS")
+    protected DATACOLLSType datacolls;
+    @XmlElement(name = "REGISTERED_BY")
+    protected String registeredby;
+    @XmlElement(name = "EXTRA_FIELDS")
+    protected EXTRAFIELDS extrafields;
+
+    /**
+     * Gets the value of the datasourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDATASOURCETYPE() {
+        return datasourcetype;
+    }
+
+    /**
+     * Sets the value of the datasourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDATASOURCETYPE(String value) {
+        this.datasourcetype = value;
+    }
+
+    /**
+     * Gets the value of the datasourceoriginalid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATASOURCEORIGINALIDType }
+     *     
+     */
+    public DATASOURCEORIGINALIDType getDATASOURCEORIGINALID() {
+        return datasourceoriginalid;
+    }
+
+    /**
+     * Sets the value of the datasourceoriginalid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATASOURCEORIGINALIDType }
+     *     
+     */
+    public void setDATASOURCEORIGINALID(DATASOURCEORIGINALIDType value) {
+        this.datasourceoriginalid = value;
+    }
+
+    /**
+     * Gets the value of the datasourcecompliancedegree property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATASOURCECOMPLIANCEDEGREEType }
+     *     
+     */
+    public DATASOURCECOMPLIANCEDEGREEType getDATASOURCECOMPLIANCEDEGREE() {
+        return datasourcecompliancedegree;
+    }
+
+    /**
+     * Sets the value of the datasourcecompliancedegree property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATASOURCECOMPLIANCEDEGREEType }
+     *     
+     */
+    public void setDATASOURCECOMPLIANCEDEGREE(DATASOURCECOMPLIANCEDEGREEType value) {
+        this.datasourcecompliancedegree = value;
+    }
+
+    /**
+     * Gets the value of the datasourceaggregated property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDATASOURCEAGGREGATED() {
+        return datasourceaggregated;
+    }
+
+    /**
+     * Sets the value of the datasourceaggregated property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDATASOURCEAGGREGATED(String value) {
+        this.datasourceaggregated = value;
+    }
+
+    /**
+     * Gets the value of the datasourceaggregatorid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDATASOURCEAGGREGATORID() {
+        return datasourceaggregatorid;
+    }
+
+    /**
+     * Sets the value of the datasourceaggregatorid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDATASOURCEAGGREGATORID(String value) {
+        this.datasourceaggregatorid = value;
+    }
+
+    /**
+     * Gets the value of the environments property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ENVIRONMENTSType }
+     *     
+     */
+    public ENVIRONMENTSType getENVIRONMENTS() {
+        return environments;
+    }
+
+    /**
+     * Sets the value of the environments property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ENVIRONMENTSType }
+     *     
+     */
+    public void setENVIRONMENTS(ENVIRONMENTSType value) {
+        this.environments = value;
+    }
+
+    /**
+     * Gets the value of the typology property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTYPOLOGY() {
+        return typology;
+    }
+
+    /**
+     * Sets the value of the typology property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTYPOLOGY(String value) {
+        this.typology = value;
+    }
+
+    /**
+     * Gets the value of the maxsizeofdatastructure property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getMAXSIZEOFDATASTRUCTURE() {
+        return maxsizeofdatastructure;
+    }
+
+    /**
+     * Sets the value of the maxsizeofdatastructure property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setMAXSIZEOFDATASTRUCTURE(BigInteger value) {
+        this.maxsizeofdatastructure = value;
+    }
+
+    /**
+     * Gets the value of the availablediskspace property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getAVAILABLEDISKSPACE() {
+        return availablediskspace;
+    }
+
+    /**
+     * Sets the value of the availablediskspace property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setAVAILABLEDISKSPACE(BigInteger value) {
+        this.availablediskspace = value;
+    }
+
+    /**
+     * Gets the value of the maxnumberofdatastructure property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getMAXNUMBEROFDATASTRUCTURE() {
+        return maxnumberofdatastructure;
+    }
+
+    /**
+     * Sets the value of the maxnumberofdatastructure property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setMAXNUMBEROFDATASTRUCTURE(BigInteger value) {
+        this.maxnumberofdatastructure = value;
+    }
+
+    /**
+     * Gets the value of the officialname property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOFFICIALNAME() {
+        return officialname;
+    }
+
+    /**
+     * Sets the value of the officialname property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOFFICIALNAME(String value) {
+        this.officialname = value;
+    }
+
+    /**
+     * Gets the value of the englishname property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getENGLISHNAME() {
+        return englishname;
+    }
+
+    /**
+     * Sets the value of the englishname property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setENGLISHNAME(String value) {
+        this.englishname = value;
+    }
+
+    /**
+     * Gets the value of the iconuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getICONURI() {
+        return iconuri;
+    }
+
+    /**
+     * Sets the value of the iconuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setICONURI(String value) {
+        this.iconuri = value;
+    }
+
+    /**
+     * Gets the value of the country property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCOUNTRY() {
+        return country;
+    }
+
+    /**
+     * Sets the value of the country property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCOUNTRY(String value) {
+        this.country = value;
+    }
+
+    /**
+     * Gets the value of the location property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link LOCATION }
+     *     
+     */
+    public LOCATION getLOCATION() {
+        return location;
+    }
+
+    /**
+     * Sets the value of the location property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link LOCATION }
+     *     
+     */
+    public void setLOCATION(LOCATION value) {
+        this.location = value;
+    }
+
+    /**
+     * Gets the value of the repositorywebpage property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getREPOSITORYWEBPAGE() {
+        return repositorywebpage;
+    }
+
+    /**
+     * Sets the value of the repositorywebpage property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setREPOSITORYWEBPAGE(String value) {
+        this.repositorywebpage = value;
+    }
+
+    /**
+     * Gets the value of the repositoryinstitution property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getREPOSITORYINSTITUTION() {
+        return repositoryinstitution;
+    }
+
+    /**
+     * Sets the value of the repositoryinstitution property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setREPOSITORYINSTITUTION(String value) {
+        this.repositoryinstitution = value;
+    }
+
+    /**
+     * Gets the value of the admininfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getADMININFO() {
+        return admininfo;
+    }
+
+    /**
+     * Sets the value of the admininfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setADMININFO(String value) {
+        this.admininfo = value;
+    }
+
+    /**
+     * Gets the value of the interfaces property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link INTERFACES }
+     *     
+     */
+    public INTERFACES getINTERFACES() {
+        return interfaces;
+    }
+
+    /**
+     * Sets the value of the interfaces property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link INTERFACES }
+     *     
+     */
+    public void setINTERFACES(INTERFACES value) {
+        this.interfaces = value;
+    }
+
+    /**
+     * Gets the value of the datacolls property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATACOLLSType }
+     *     
+     */
+    public DATACOLLSType getDATACOLLS() {
+        return datacolls;
+    }
+
+    /**
+     * Sets the value of the datacolls property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATACOLLSType }
+     *     
+     */
+    public void setDATACOLLS(DATACOLLSType value) {
+        this.datacolls = value;
+    }
+
+    /**
+     * Gets the value of the registeredby property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getREGISTEREDBY() {
+        return registeredby;
+    }
+
+    /**
+     * Sets the value of the registeredby property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setREGISTEREDBY(String value) {
+        this.registeredby = value;
+    }
+
+    /**
+     * Gets the value of the extrafields property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EXTRAFIELDS }
+     *     
+     */
+    public EXTRAFIELDS getEXTRAFIELDS() {
+        return extrafields;
+    }
+
+    /**
+     * Sets the value of the extrafields property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EXTRAFIELDS }
+     *     
+     */
+    public void setEXTRAFIELDS(EXTRAFIELDS value) {
+        this.extrafields = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/LOCATION.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/LOCATION.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/LOCATION.java	(revision 48242)
@@ -0,0 +1,107 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for LOCATION complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="LOCATION">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="LONGITUDE" type="{http://www.w3.org/2001/XMLSchema}double"/>
+ *         &lt;element name="LATITUDE" type="{http://www.w3.org/2001/XMLSchema}double"/>
+ *         &lt;element name="TIMEZONE">
+ *           &lt;simpleType>
+ *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}double">
+ *               &lt;pattern value="-?[0-9]*(\.[05])?"/>
+ *               &lt;minInclusive value="-12.0"/>
+ *               &lt;maxInclusive value="12.0"/>
+ *             &lt;/restriction>
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "LOCATION", propOrder = {
+
+})
+public class LOCATION {
+
+    @XmlElement(name = "LONGITUDE")
+    protected double longitude;
+    @XmlElement(name = "LATITUDE")
+    protected double latitude;
+    @XmlElement(name = "TIMEZONE")
+    protected double timezone;
+
+    /**
+     * Gets the value of the longitude property.
+     * 
+     */
+    public double getLONGITUDE() {
+        return longitude;
+    }
+
+    /**
+     * Sets the value of the longitude property.
+     * 
+     */
+    public void setLONGITUDE(double value) {
+        this.longitude = value;
+    }
+
+    /**
+     * Gets the value of the latitude property.
+     * 
+     */
+    public double getLATITUDE() {
+        return latitude;
+    }
+
+    /**
+     * Sets the value of the latitude property.
+     * 
+     */
+    public void setLATITUDE(double value) {
+        this.latitude = value;
+    }
+
+    /**
+     * Gets the value of the timezone property.
+     * 
+     */
+    public double getTIMEZONE() {
+        return timezone;
+    }
+
+    /**
+     * Sets the value of the timezone property.
+     * 
+     */
+    public void setTIMEZONE(double value) {
+        this.timezone = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/STATUS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/STATUS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/STATUS.java	(revision 48242)
@@ -0,0 +1,94 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.io.Serializable;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for STATUS complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="STATUS">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="HANDLED_DATASTRUCTURE" type="{http://www.w3.org/2001/XMLSchema}integer" minOccurs="0"/>
+ *         &lt;element name="USED_DISKSPACE" type="{http://www.w3.org/2001/XMLSchema}integer" minOccurs="0"/>
+ *         &lt;element name="NUMBER_OF_OBJECTS" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ *         &lt;element name="LAST_UPDATE" type="{}LAST_UPDATEType" minOccurs="0"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "STATUS", propOrder = {
+    "content"
+})
+public class STATUS {
+
+    @XmlElementRefs({
+        @XmlElementRef(name = "NUMBER_OF_OBJECTS", type = JAXBElement.class),
+        @XmlElementRef(name = "HANDLED_DATASTRUCTURE", type = JAXBElement.class),
+        @XmlElementRef(name = "USED_DISKSPACE", type = JAXBElement.class),
+        @XmlElementRef(name = "LAST_UPDATE", type = JAXBElement.class)
+    })
+    @XmlMixed
+    protected List<Serializable> content;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+     * {@link JAXBElement }{@code <}{@link LASTUPDATEType }{@code >}
+     * 
+     * 
+     */
+    public List<Serializable> getContent() {
+        if (content == null) {
+            content = new ArrayList<Serializable>();
+        }
+        return this.content;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ConversionUtils.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ConversionUtils.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ConversionUtils.java	(revision 48242)
@@ -0,0 +1,84 @@
+package gr.uoa.di.driver.xml;
+
+import java.lang.reflect.Method;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+
+import org.apache.commons.lang.StringEscapeUtils;
+
+import eu.dnetlib.miscutils.datetime.DateUtils;
+
+/**
+ * A simple class to provide support for conversion
+ * of dates from/to strings, according to the ISO muble muble standard.
+ * 
+ * @author <a href="antleb@di.uoa.gr">Antonis Lempesis</a>
+ * 
+ */
+public abstract class ConversionUtils {
+
+	public static String DateToString(Date date) {
+		return new DateUtils(date).getDateAsISO8601String();
+	}
+
+	public static Date parseDate(String dateString) {
+		return new DateUtils().parse(dateString);
+	}
+
+	public static XMLGregorianCalendar toXMLGregorianCalendar(Date date) {
+		try {
+			DatatypeFactory factory = DatatypeFactory.newInstance();
+			GregorianCalendar calendar = new GregorianCalendar();
+
+			calendar.setTime(date);
+
+			return factory.newXMLGregorianCalendar(calendar);
+		} catch (DatatypeConfigurationException e) {
+			
+			return null;
+		}
+
+	}
+
+	public static Date toDate(XMLGregorianCalendar calendar) {
+		return calendar.toGregorianCalendar().getTime();
+	}
+	
+	@SuppressWarnings("unchecked")
+	public static <T> T createProxy(T originalObject) {
+		Enhancer enhancer = new Enhancer();
+        
+		enhancer.setSuperclass(originalObject.getClass());
+        enhancer.setCallback(new XMLEscapingInterceptor(originalObject));
+
+		return (T) enhancer.create();
+	}
+}
+
+class XMLEscapingInterceptor implements MethodInterceptor {
+	private Object originalObject = null;
+	
+	public XMLEscapingInterceptor(Object original) {
+		this.originalObject = original;
+	}
+	
+	@Override
+	public Object intercept(Object obj, Method method, Object[] args,
+			MethodProxy methodProxy) throws Throwable {
+		if (method.getName().startsWith("get") && method.getReturnType().equals(String.class)) {
+			String res = (String) method.invoke(originalObject, args);
+			
+			return StringEscapeUtils.escapeXml(res);
+		} else {
+			return  method.invoke(originalObject, args);
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SuportedLocalesListType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SuportedLocalesListType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SuportedLocalesListType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SuportedLocalesListType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SuportedLocalesListType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence maxOccurs="unbounded">
+ *         &lt;element name="SUPPORTED_LOCALE" type="{}SUPPORTED_LOCALEType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SuportedLocalesListType", propOrder = {
+    "supportedlocale"
+})
+public class SuportedLocalesListType {
+
+    @XmlElement(name = "SUPPORTED_LOCALE", required = true)
+    protected List<SUPPORTEDLOCALEType> supportedlocale;
+
+    /**
+     * Gets the value of the supportedlocale property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the supportedlocale property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSUPPORTEDLOCALE().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SUPPORTEDLOCALEType }
+     * 
+     * 
+     */
+    public List<SUPPORTEDLOCALEType> getSUPPORTEDLOCALE() {
+        if (supportedlocale == null) {
+            supportedlocale = new ArrayList<SUPPORTEDLOCALEType>();
+        }
+        return this.supportedlocale;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionManager.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionManager.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/issn/SubscriptionManager.java	(revision 48242)
@@ -0,0 +1,36 @@
+package gr.uoa.di.driver.enabling.issn;
+
+import eu.dnetlib.domain.enabling.Subscription;
+
+/**
+ * A wrapper class around the IS Subscription service.
+ * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+ *
+ */
+public interface SubscriptionManager {
+
+	/**
+	 * Adds a new subscription. The subscription is added and is periodically
+	 * refreshed. Its timeToLive option is ignored...
+	 * 
+	 * @param subscription 
+	 */
+	public void subscribe(Subscription subscription);
+	
+	/**
+	 * Adds a subscription. If refresh is true, the timeToLive field of the 
+	 * subscription is ignored and the subscription periodically refreshed. If
+	 * refresh is false, the subscription is added and left to rot...
+	 * 
+	 * @param subscription
+	 * @param refresh
+	 */
+	public void subscribe(Subscription subscription, boolean refresh);
+	
+	/**
+	 * Removes a subscription...
+	 * 
+	 * @param subscriptionId
+	 */
+	public void unsubscribe(String subscriptionId);
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/ISVocabularyLoader.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/ISVocabularyLoader.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/ISVocabularyLoader.java	(revision 48242)
@@ -0,0 +1,60 @@
+package gr.uoa.di.driver.enabling.vocabulary;
+
+import eu.dnetlib.domain.enabling.Vocabulary;
+import eu.dnetlib.domain.enabling.VocabularySearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+
+import java.util.Locale;
+
+import org.apache.log4j.Logger;
+
+public class ISVocabularyLoader implements VocabularyLoader {
+
+	private static Logger logger = Logger.getLogger(ISVocabularyLoader.class);
+	private ISLookUp<Vocabulary> lookUp = null;
+
+	public Vocabulary getVocabulary(String vocabularyName, Locale locale, Locale defaultLocale) {
+		logger.debug("Getting vocabulary with name " + vocabularyName +  "_" + locale);
+		
+		Vocabulary vocabulary = null;
+		VocabularySearchCriteria criteria = new VocabularySearchCriteria(vocabularyName + "_" + locale);
+
+		if (vocabularyName == null) {
+			logger.debug("There is no vocabulary name");
+			return null;
+		}
+		
+		try {
+			vocabulary = lookUp.getUniqueResult(criteria);
+			if (vocabulary == null && defaultLocale != null){
+				logger.debug("Getting vocabulary with default locale");
+				if (defaultLocale == null || defaultLocale.equals(Locale.ROOT)) {
+					criteria = new VocabularySearchCriteria(vocabularyName);
+					
+				} else {
+					criteria = new VocabularySearchCriteria(vocabularyName+"_"+defaultLocale);
+				}
+				
+				vocabulary = lookUp.getUniqueResult(criteria);
+			}
+			
+			
+		} catch (ISLookUpException isle) {
+			logger.debug("Error loading vocabulary " + vocabularyName, isle);
+		}
+
+		logger.debug("returning " + vocabulary);
+		return vocabulary;
+
+	}
+
+	public void setLookUp(ISLookUp<Vocabulary> lookUp) {
+		this.lookUp = lookUp;
+	}
+
+	public ISLookUp<Vocabulary> getLookUp() {
+		return lookUp;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/VocabularyLoader.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/VocabularyLoader.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/vocabulary/VocabularyLoader.java	(revision 48242)
@@ -0,0 +1,10 @@
+package gr.uoa.di.driver.enabling.vocabulary;
+
+import java.util.Locale;
+
+import eu.dnetlib.domain.enabling.Vocabulary;
+public interface VocabularyLoader {
+
+	public abstract Vocabulary getVocabulary(String vocabularyName, Locale locale, Locale defaultLocale);
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/A2Wrapper.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/A2Wrapper.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/a2/A2Wrapper.java	(revision 48242)
@@ -0,0 +1,57 @@
+package gr.uoa.di.driver.enabling.a2;
+
+import eu.dnetlib.api.enabling.A2ServiceException;
+
+
+public interface A2Wrapper {
+	
+	/**
+	 * Authenticates a DRIVER user.
+	 * 
+	 * @param email
+	 * @param password
+	 * @return The security context id of the user or null if the authentication 
+	 * fails
+	 * @throws A2ServiceException
+	 */
+    public String authenticateUser(String email, String password) throws A2ServiceException;
+    
+    /**
+     * Authenticates a DRIVER service
+     * 
+     * @param certificate
+     * @return The security context id of the service or null if the authentication 
+	 * fails
+	 * 
+     * @throws A2ServiceException
+     */
+    public String authenticateService(String certificate) throws A2ServiceException;
+    
+    /**
+     * Requests authorization for a given action. Resources and actions are defined in the 
+     * security policies that must have been to AAS prior to these call
+     * 
+     * @param resource
+     * @param action
+     * @param contextId
+     * @return true if the action is authorized, false otherwise.
+     * @throws A2ServiceException
+     */
+    public boolean authorizeAction(String resource, String action, String contextId) throws A2ServiceException;
+    
+    /**
+     * Invalidates the given security context.
+     * 
+     * @param contextId the id of the context to invalidate.
+     */
+    public void invalidate(String contextId);
+    
+    /**
+     * Chains 2 security contexts.
+     * @param contextIdA
+     * @param contextIdB
+     * @return the security context chain
+     */
+    public String createSecurityContextChain(String contextIdA, String contextIdB);
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/resultset/ResultSetImpl.java	(revision 48242)
@@ -0,0 +1,121 @@
+package gr.uoa.di.driver.enabling.resultset;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.enabling.ResultSetService;
+import eu.dnetlib.api.enabling.ResultSetServiceException;
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.util.ObjectToXmlConverter;
+
+public class ResultSetImpl<D> implements ResultSet<D> {
+	static Logger logger = Logger.getLogger(ResultSetImpl.class);
+	private EPR epr = null;
+
+	static ObjectToXmlConverter<String> dummyConverter = new ObjectToXmlConverter<String>() {
+		public String XmlToObject(String xml) throws JAXBException {
+			return xml;
+		}
+
+		public String ObjectToXml(String object) throws JAXBException {
+			return object;
+		}
+	};
+
+	private String identifier = null;
+	private ObjectToXmlConverter<D> converter = null;
+	private ResultSetService rsService = null;
+
+	@SuppressWarnings("unchecked")
+	public ResultSetImpl(ResultSetService rsService, String rsIdentifier) {
+		this(rsService, rsIdentifier, (ObjectToXmlConverter<D>) dummyConverter);
+	}
+
+	public ResultSetImpl(ResultSetService rsService, String rsIdentifier,
+			ObjectToXmlConverter<D> converter) {
+		this.identifier = rsIdentifier;
+		this.converter = converter;
+		this.rsService = rsService;
+	}
+
+	public boolean isOpen() {
+		boolean open = false;
+
+		try {
+			String status = rsService.getRSStatus(identifier);
+			open = status.toLowerCase().equals("open");
+		} catch (ResultSetServiceException e) {
+			logger.warn("Result Set Error.", e);
+		}
+		return open;
+	}
+
+	public boolean isAlive() {
+		try {
+			rsService.getNumberOfElements(identifier);
+		} catch (ResultSetServiceException rsse) {
+			// TODO: something??? nothing
+
+			return false;
+		}
+
+		return true;
+	}
+
+	public void close() {
+		rsService.closeRS(identifier);
+	}
+
+	public int size() {
+		int size = 0;
+
+		try {
+			size = rsService.getNumberOfElements(identifier);
+		} catch (ResultSetServiceException e) {
+			logger.warn("Result Set Error.", e);
+		}
+
+		return size;
+	}
+
+	public List<String> getElements(int from, int to) {
+		List<String> elements = null;
+
+		try {
+			elements = rsService.getResult(identifier, from, to, "waiting");
+		} catch (ResultSetServiceException e) {
+			logger.warn("Result Set Error.", e);
+		}
+
+		return elements;
+	}
+
+	public List<D> get(int from, int to) {
+		List<String> elements = getElements(from, to);
+		List<D> list = null;
+		if (elements != null) {
+			list = new ArrayList<D>(elements.size());
+			for (String element : elements) {
+				try {
+					D d = converter.XmlToObject(element);
+					list.add(d);
+				} catch (JAXBException e) {
+					logger.warn("Error converting element: " + element);
+				}
+			}
+		}
+		return list;
+	}
+
+	public EPR getEpr() {
+		return epr;
+	}
+
+	public void setEpr(EPR epr) {
+		this.epr = epr;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/SecurityAwareRegistryImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/SecurityAwareRegistryImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/registry/SecurityAwareRegistryImpl.java	(revision 48242)
@@ -0,0 +1,145 @@
+package gr.uoa.di.driver.enabling.registry;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.enabling.ISRegistryService;
+import eu.dnetlib.api.enabling.ISRegistryServiceException;
+import eu.dnetlib.domain.SecureDriverResource;
+import eu.dnetlib.domain.enabling.SecurityProfile;
+import eu.dnetlib.domain.enabling.SecurityProfileSearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+import gr.uoa.di.driver.enabling.ISRegistry;
+import gr.uoa.di.driver.enabling.ISRegistryException;
+import gr.uoa.di.driver.util.ServiceLocator;
+
+public class SecurityAwareRegistryImpl<R extends SecureDriverResource>
+		implements ISRegistry<R> {
+	private static Logger logger = Logger.getLogger(SecurityAwareRegistryImpl.class);
+	
+	private ServiceLocator<ISRegistryService> registryServiceLocator = null;
+	private ISRegistry<R> registry = null;
+	private ISRegistry<SecurityProfile> securityRegistry = null;
+	private ISLookUp<SecurityProfile> securityLookUp = null;
+
+	@Override
+	public void delete(R object) throws ISRegistryException {
+		securityRegistry.delete(object.getSecurityProfile());
+		registry.delete(object);
+	}
+
+	@Override
+	public R insertForValidation(R object) throws ISRegistryException {
+		return registry.insertForValidation(object);
+	}
+
+	@Override
+	public R save(R object) throws ISRegistryException {
+		if (object.getResourceId() == null) {
+			return saveNew(object);			
+		} else {
+			return update(object);
+		}
+	}
+	
+	private R update(R object) throws ISRegistryException {
+		try {
+			SecurityProfile secProfile = object.getSecurityProfile();
+	
+			// If the user has created a new object and has set the resourceId,
+			// the resource will be updated but it's security profile will not
+			// have been initialized...
+			if (secProfile.getResourceId() == null) {
+				SecurityProfile originalSecProfile = getOriginalSecProfile(object.getResourceId());
+	
+				secProfile.setResourceId(originalSecProfile.getResourceId());
+				secProfile.setDateOfCreation(originalSecProfile.getDateOfCreation());
+				secProfile.setResourceUri(originalSecProfile.getResourceUri());
+				secProfile.setDriverResourceId(originalSecProfile.getDriverResourceId());
+			}
+			
+			logger.debug("Updating profile");
+			registry.save(object);
+			
+			logger.debug("Updating security profile");
+			securityRegistry.save(secProfile);
+			
+			logger.debug("done");
+			
+			return object;
+		} catch (ISLookUpException isle) {
+			logger.error(isle);
+			throw new ISRegistryException("Error updating profile", isle);
+		}
+	}
+	
+	private R saveNew(R object) throws ISRegistryException {
+		try {
+			logger.debug("Saving new profile");
+			logger.debug("registering secure resource: \n");
+			// registering resource
+			object = registry.insertForValidation(object);
+			
+			// registering secure profile
+			logger.debug("registering secure profile: \n");
+			SecurityProfile secProfile = securityRegistry.save(object.getSecurityProfile()); 
+			
+			// binding profiles
+			logger.debug("binding profiles (" + object.getResourceId() + ", " + secProfile.getResourceId() + ")");
+			String profileId = registryServiceLocator.getService().registerSecureProfile(object.getResourceId(), secProfile.getResourceId());
+			// assigning resource its new id
+			// TODO change it when CNR changes implementation
+			object.setResourceId(profileId);
+			
+			// assigning security profile its driver resource id (the foreign key)
+			secProfile.setDriverResourceId(profileId);
+			
+			logger.debug("saving security profile (to save new resource id)");
+			// saving security profile (to save new resource id)
+			securityRegistry.save(secProfile);
+			logger.debug("done");
+			
+			return object;
+		} catch (ISRegistryServiceException e) {
+			logger.error(e);
+			
+			try {
+				if (object.getResourceId() != null)
+					registry.delete(object);
+				
+				if (object.getSecurityProfile().getResourceId() != null)
+					securityRegistry.delete(object.getSecurityProfile());
+			} catch (ISRegistryException isre) {
+				logger.error(isre);
+			}
+			
+			throw new ISRegistryException("Error saving new profile", e);
+		}
+
+	}
+
+	private SecurityProfile getOriginalSecProfile(String profileId) throws ISLookUpException {
+		SecurityProfileSearchCriteria crit = new SecurityProfileSearchCriteria();
+		
+		crit.getDriverResourceIds().add(profileId);
+		
+		return securityLookUp.getUniqueResult(crit);
+	}
+	
+	public void setRegistryServiceLocator(
+			ServiceLocator<ISRegistryService> registryLocator) {
+		this.registryServiceLocator = registryLocator;
+	}
+
+	public void setRegistry(ISRegistry<R> registry) {
+		this.registry = registry;
+	}
+
+	public void setSecurityRegistry(ISRegistry<SecurityProfile> securityRegistry) {
+		this.securityRegistry = securityRegistry;
+	}
+
+	public void setSecurityLookUp(ISLookUp<SecurityProfile> securityLookUp) {
+		this.securityLookUp = securityLookUp;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISRegistry.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISRegistry.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISRegistry.java	(revision 48242)
@@ -0,0 +1,30 @@
+package gr.uoa.di.driver.enabling;
+
+import eu.dnetlib.domain.DriverResource;
+
+public interface ISRegistry<D extends DriverResource> {
+	
+	/**
+	 * Saves the given object to IS.
+	 * @param object The object to save.
+	 * @return The new Object.
+	 * @throws ISRegistryException 
+	 */
+	public D save(D object) throws ISRegistryException;
+
+	/**
+	 * Deletes the given object from the IS
+	 * @param object the object to be deleted
+	 * @throws ISRegistryException
+	 */
+	public void delete(D object) throws ISRegistryException;
+
+	/**
+	 * Saves the given object to IS. The object is not yet validated, in 
+	 * contrast to the save method that fully saves the object
+	 * @param object The object to save.
+	 * @return The new Object.
+	 * @throws ISRegistryException 
+	 */
+	public D insertForValidation(D object) throws ISRegistryException;
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISSubscription.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISSubscription.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/enabling/ISSubscription.java	(revision 48242)
@@ -0,0 +1,44 @@
+package gr.uoa.di.driver.enabling;
+
+import eu.dnetlib.domain.enabling.Subscription;
+
+
+/**
+ * A thin client to the IS_SN service
+ * @author christos
+ *
+ */
+public interface ISSubscription {
+	/**
+	 * 
+	 * @param subscription
+	 * @return the subscription's id
+	 * @throws SubscriptionException
+	 */
+	public String subscribe(Subscription subscription) throws SubscriptionException;
+	
+	/**
+	 * 
+	 * @param subscriptionId
+	 * @param time
+	 */
+	public void renewSubscription(String subscriptionId, int time);
+
+	/**
+	 * 
+	 * @param subscriptionId
+	 */
+	public void pauseNotifications(String subscriptionId);
+	
+	/**
+	 * 
+	 * @param subscriptionId
+	 */
+	public void resumeNotification(String subscriptionId);
+	
+	/**
+	 * 
+	 * @param subscriptionId
+	 */
+	public void removeSubscription(String subscriptionId);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceNameResolverImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceNameResolverImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/util/ServiceNameResolverImpl.java	(revision 48242)
@@ -0,0 +1,40 @@
+package gr.uoa.di.driver.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import eu.dnetlib.api.DriverService;
+import eu.dnetlib.enabling.tools.registration.ServiceNameResolver;
+
+public class ServiceNameResolverImpl implements ServiceNameResolver {
+	private Map<Class<?>, String> override = new HashMap<Class<?>, String>();
+
+	@Override
+	public String getName(Object service) {
+		return getName(service.getClass());
+	}
+
+	@Override
+	public String getName(Class<?> serviceInterface) {
+		String serviceName = null;
+		
+		for (Class<?> i : serviceInterface.getInterfaces()) {
+			if (DriverService.class.isAssignableFrom(i)) {
+				if (override.get(i) != null)
+					serviceName = override.get(i);
+				else
+					serviceName = i.getSimpleName();
+			}
+		}
+
+		return serviceName;
+	}
+
+	public Map<Class<?>, String> getOverride() {
+		return override;
+	}
+
+	public void setOverride(Map<Class<?>, String> override) {
+		this.override = override;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/app/DriverServiceImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/app/DriverServiceImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/app/DriverServiceImpl.java	(revision 48242)
@@ -0,0 +1,131 @@
+package gr.uoa.di.driver.app;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.api.DriverService;
+import eu.dnetlib.api.DriverServiceException;
+import eu.dnetlib.domain.ActionType;
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.domain.ResourceType;
+import eu.dnetlib.domain.ServiceIdentity;
+import eu.dnetlib.domain.enabling.Notification;
+import eu.dnetlib.domain.enabling.Subscription;
+import gr.uoa.di.driver.enabling.issn.NotificationListener;
+import gr.uoa.di.driver.enabling.issn.SNManager;
+import gr.uoa.di.driver.enabling.issn.SubscriptionFactory;
+
+public abstract class DriverServiceImpl implements DriverService {
+	private static Logger logger = Logger.getLogger(DriverServiceImpl.class);
+	
+	private SubscriptionFactory subscriptionFactory = new SubscriptionFactory();
+	private volatile EPR serviceEPR = null;
+	private ServiceIdentity serviceIdentity = null;
+	
+	private SNManager snManager = null;
+	
+	private Map<Subscription, NotificationListener> pendingSubscriptions = new HashMap<Subscription, NotificationListener>();
+	
+	private volatile boolean inititialized = false;
+
+	public void init() {
+		logger.debug("Service identity: " + this.serviceIdentity);
+
+		if (logger.isDebugEnabled())
+			logger.debug("Registering pending subscriptions for service " + 
+					this.getClass().getSimpleName() + " with epr " + 
+					this.getServiceEPR());
+		
+		for (java.util.Map.Entry<Subscription, NotificationListener> entry:pendingSubscriptions.entrySet()) {
+			Subscription sub = entry.getKey();
+			NotificationListener listener = entry.getValue();
+			
+			sub.setEpr(this.getServiceEPR());
+				
+			snManager.subscribe(sub, listener);
+		}
+			
+		pendingSubscriptions.clear();
+		
+		this.inititialized = true;
+	}
+	
+	public void subscribe(ActionType actionType, ResourceType resourceType, NotificationListener listener) {
+		Subscription sub = subscriptionFactory.createSubscription(actionType,
+				resourceType, serviceEPR);
+		
+		this.addSubscription(sub, listener);		
+	}
+	
+	public void subscribe(ActionType actionType, ResourceType resourceType, 
+			String resourceId, NotificationListener listener) {
+		Subscription sub = subscriptionFactory.createSubscription(actionType,
+				resourceType, resourceId, serviceEPR);
+		
+		this.addSubscription(sub, listener);		
+	}
+	
+	public void subscribe(ActionType actionType, ResourceType resourceType, 
+			String resourceId, String path, NotificationListener listener) {
+		Subscription sub = subscriptionFactory.createSubscription(actionType,
+				resourceType, resourceId, path, serviceEPR);
+		
+		this.addSubscription(sub, listener);		
+	}
+	
+	private void addSubscription(Subscription sub, NotificationListener listener) {
+		if (!isInititialized()) {
+			logger.debug("Service " + getClass().getSimpleName() + " not yet " +
+					"initialized, adding subscription to queue.");
+
+			pendingSubscriptions.put(sub, listener);
+		} else if (snManager != null) {
+			if (logger.isDebugEnabled())
+				logger.debug("Adding subscription in service " + 
+						getClass().getSimpleName() + " with epr " + getServiceEPR());
+			
+			this.snManager.subscribe(sub, listener);
+		} else {
+			logger.warn("Service is initialized, but no subscription manager " +
+					"is present! Ignoring subscription.");
+		}
+	}
+
+	@Override
+	public ServiceIdentity identify() {
+		return this.serviceIdentity;
+	}
+
+	@Override
+	public void notify(Notification notification) throws DriverServiceException {
+		snManager.notify(notification);
+	}
+
+	public boolean isInititialized() {
+		return inititialized;
+	}
+	
+	public void setServiceIdentity(ServiceIdentity serviceIdentity) {
+		this.serviceIdentity = serviceIdentity;
+	}
+
+	public void setServiceEPR(EPR serviceEPR) {
+		logger.debug("setting epr " + serviceEPR);
+		
+		this.serviceEPR = serviceEPR;
+	}
+	
+	public EPR getServiceEPR() {
+		return this.serviceEPR;
+	}
+
+	public SNManager getSnManager() {
+		return snManager;
+	}
+
+	public void setSnManager(SNManager snManager) {
+		this.snManager = snManager;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/DATEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/DATEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/DATEType.java	(revision 48242)
@@ -0,0 +1,68 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for DATEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATEType")
+public class DATEType {
+
+    @XmlAttribute(required = true)
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setValue(XMLGregorianCalendar value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/BODYType.java	(revision 48242)
@@ -0,0 +1,363 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="CSS_FILE" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;sequence>
+ *           &lt;element name="SUPPORTED_LOCALES" type="{}SuportedLocalesListType"/>
+ *         &lt;/sequence>
+ *         &lt;sequence>
+ *           &lt;element name="SEARCHABLES" type="{}SEARCHABLESType"/>
+ *         &lt;/sequence>
+ *         &lt;element name="DOCUMENT_DESCRIPTIONS" type="{}MapType"/>
+ *         &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *           &lt;element name="BASE_COLLECTIONS" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;/sequence>
+ *         &lt;element name="VIEW_COMMUNITIES" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="VIEW_COLLECTIONS" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="VIEW_REPOSITORIES" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="VIEW_ANNOUNCEMENTS" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="VIEW_USER_PROFILE" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="VIEW_SIMILAR_DOCUMENTS" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="VIEW_EPUBLICATIONS" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "cssfile",
+    "supportedlocales",
+    "searchables",
+    "documentdescriptions",
+    "basecollections",
+    "viewcommunities",
+    "viewcollections",
+    "viewrepositories",
+    "viewannouncements",
+    "viewuserprofile",
+    "viewsimilardocuments",
+    "viewepublications"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "CSS_FILE", required = true)
+    protected String cssfile;
+    @XmlElement(name = "SUPPORTED_LOCALES", required = true)
+    protected SuportedLocalesListType supportedlocales;
+    @XmlElement(name = "SEARCHABLES", required = true)
+    protected SEARCHABLESType searchables;
+    @XmlElement(name = "DOCUMENT_DESCRIPTIONS", required = true)
+    protected MapType documentdescriptions;
+    @XmlElement(name = "BASE_COLLECTIONS")
+    protected List<String> basecollections;
+    @XmlElement(name = "VIEW_COMMUNITIES")
+    protected boolean viewcommunities;
+    @XmlElement(name = "VIEW_COLLECTIONS")
+    protected boolean viewcollections;
+    @XmlElement(name = "VIEW_REPOSITORIES")
+    protected boolean viewrepositories;
+    @XmlElement(name = "VIEW_ANNOUNCEMENTS")
+    protected boolean viewannouncements;
+    @XmlElement(name = "VIEW_USER_PROFILE")
+    protected boolean viewuserprofile;
+    @XmlElement(name = "VIEW_SIMILAR_DOCUMENTS")
+    protected boolean viewsimilardocuments;
+    @XmlElement(name = "VIEW_EPUBLICATIONS")
+    protected boolean viewepublications;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the cssfile property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCSSFILE() {
+        return cssfile;
+    }
+
+    /**
+     * Sets the value of the cssfile property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCSSFILE(String value) {
+        this.cssfile = value;
+    }
+
+    /**
+     * Gets the value of the supportedlocales property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SuportedLocalesListType }
+     *     
+     */
+    public SuportedLocalesListType getSUPPORTEDLOCALES() {
+        return supportedlocales;
+    }
+
+    /**
+     * Sets the value of the supportedlocales property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SuportedLocalesListType }
+     *     
+     */
+    public void setSUPPORTEDLOCALES(SuportedLocalesListType value) {
+        this.supportedlocales = value;
+    }
+
+    /**
+     * Gets the value of the searchables property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SEARCHABLESType }
+     *     
+     */
+    public SEARCHABLESType getSEARCHABLES() {
+        return searchables;
+    }
+
+    /**
+     * Sets the value of the searchables property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SEARCHABLESType }
+     *     
+     */
+    public void setSEARCHABLES(SEARCHABLESType value) {
+        this.searchables = value;
+    }
+
+    /**
+     * Gets the value of the documentdescriptions property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapType }
+     *     
+     */
+    public MapType getDOCUMENTDESCRIPTIONS() {
+        return documentdescriptions;
+    }
+
+    /**
+     * Sets the value of the documentdescriptions property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapType }
+     *     
+     */
+    public void setDOCUMENTDESCRIPTIONS(MapType value) {
+        this.documentdescriptions = value;
+    }
+
+    /**
+     * Gets the value of the basecollections property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the basecollections property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getBASECOLLECTIONS().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getBASECOLLECTIONS() {
+        if (basecollections == null) {
+            basecollections = new ArrayList<String>();
+        }
+        return this.basecollections;
+    }
+
+    /**
+     * Gets the value of the viewcommunities property.
+     * 
+     */
+    public boolean isVIEWCOMMUNITIES() {
+        return viewcommunities;
+    }
+
+    /**
+     * Sets the value of the viewcommunities property.
+     * 
+     */
+    public void setVIEWCOMMUNITIES(boolean value) {
+        this.viewcommunities = value;
+    }
+
+    /**
+     * Gets the value of the viewcollections property.
+     * 
+     */
+    public boolean isVIEWCOLLECTIONS() {
+        return viewcollections;
+    }
+
+    /**
+     * Sets the value of the viewcollections property.
+     * 
+     */
+    public void setVIEWCOLLECTIONS(boolean value) {
+        this.viewcollections = value;
+    }
+
+    /**
+     * Gets the value of the viewrepositories property.
+     * 
+     */
+    public boolean isVIEWREPOSITORIES() {
+        return viewrepositories;
+    }
+
+    /**
+     * Sets the value of the viewrepositories property.
+     * 
+     */
+    public void setVIEWREPOSITORIES(boolean value) {
+        this.viewrepositories = value;
+    }
+
+    /**
+     * Gets the value of the viewannouncements property.
+     * 
+     */
+    public boolean isVIEWANNOUNCEMENTS() {
+        return viewannouncements;
+    }
+
+    /**
+     * Sets the value of the viewannouncements property.
+     * 
+     */
+    public void setVIEWANNOUNCEMENTS(boolean value) {
+        this.viewannouncements = value;
+    }
+
+    /**
+     * Gets the value of the viewuserprofile property.
+     * 
+     */
+    public boolean isVIEWUSERPROFILE() {
+        return viewuserprofile;
+    }
+
+    /**
+     * Sets the value of the viewuserprofile property.
+     * 
+     */
+    public void setVIEWUSERPROFILE(boolean value) {
+        this.viewuserprofile = value;
+    }
+
+    /**
+     * Gets the value of the viewsimilardocuments property.
+     * 
+     */
+    public boolean isVIEWSIMILARDOCUMENTS() {
+        return viewsimilardocuments;
+    }
+
+    /**
+     * Sets the value of the viewsimilardocuments property.
+     * 
+     */
+    public void setVIEWSIMILARDOCUMENTS(boolean value) {
+        this.viewsimilardocuments = value;
+    }
+
+    /**
+     * Gets the value of the viewepublications property.
+     * 
+     */
+    public boolean isVIEWEPUBLICATIONS() {
+        return viewepublications;
+    }
+
+    /**
+     * Sets the value of the viewepublications property.
+     * 
+     */
+    public void setVIEWEPUBLICATIONS(boolean value) {
+        this.viewepublications = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATACOLLType.java	(revision 48242)
@@ -0,0 +1,155 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATACOLLType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATACOLLType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="INTERFACE" type="{}DATACOLLINTERFACEType"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *       &lt;attribute name="label" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *       &lt;attribute name="group" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATACOLLType", propOrder = {
+    "_interface"
+})
+public class DATACOLLType {
+
+    @XmlElement(name = "INTERFACE", required = true)
+    protected DATACOLLINTERFACEType _interface;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String id;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String label;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String group;
+
+    /**
+     * Gets the value of the interface property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATACOLLINTERFACEType }
+     *     
+     */
+    public DATACOLLINTERFACEType getINTERFACE() {
+        return _interface;
+    }
+
+    /**
+     * Sets the value of the interface property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATACOLLINTERFACEType }
+     *     
+     */
+    public void setINTERFACE(DATACOLLINTERFACEType value) {
+        this._interface = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the label property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLabel() {
+        return label;
+    }
+
+    /**
+     * Sets the value of the label property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLabel(String value) {
+        this.label = value;
+    }
+
+    /**
+     * Gets the value of the group property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getGroup() {
+        return group;
+    }
+
+    /**
+     * Sets the value of the group property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setGroup(String value) {
+        this.group = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,331 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.math.BigInteger;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.xml.repository package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _STATUSLASTUPDATE_QNAME = new QName("", "LAST_UPDATE");
+    private final static QName _STATUSNUMBEROFOBJECTS_QNAME = new QName("", "NUMBER_OF_OBJECTS");
+    private final static QName _STATUSHANDLEDDATASTRUCTURE_QNAME = new QName("", "HANDLED_DATASTRUCTURE");
+    private final static QName _STATUSUSEDDISKSPACE_QNAME = new QName("", "USED_DISKSPACE");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.xml.repository
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link LASTUPDATEType }
+     * 
+     */
+    public LASTUPDATEType createLASTUPDATEType() {
+        return new LASTUPDATEType();
+    }
+
+    /**
+     * Create an instance of {@link FORMATS }
+     * 
+     */
+    public FORMATS createFORMATS() {
+        return new FORMATS();
+    }
+
+    /**
+     * Create an instance of {@link FieldType }
+     * 
+     */
+    public FieldType createFieldType() {
+        return new FieldType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link INTERFACE.ACCESSPROTOCOL }
+     * 
+     */
+    public INTERFACE.ACCESSPROTOCOL createINTERFACEACCESSPROTOCOL() {
+        return new INTERFACE.ACCESSPROTOCOL();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link LOCATION }
+     * 
+     */
+    public LOCATION createLOCATION() {
+        return new LOCATION();
+    }
+
+    /**
+     * Create an instance of {@link EXTRAFIELDS }
+     * 
+     */
+    public EXTRAFIELDS createEXTRAFIELDS() {
+        return new EXTRAFIELDS();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATION }
+     * 
+     */
+    public CONFIGURATION createCONFIGURATION() {
+        return new CONFIGURATION();
+    }
+
+    /**
+     * Create an instance of {@link INTERFACES }
+     * 
+     */
+    public INTERFACES createINTERFACES() {
+        return new INTERFACES();
+    }
+
+    /**
+     * Create an instance of {@link DATACOLLINTERFACEType }
+     * 
+     */
+    public DATACOLLINTERFACEType createDATACOLLINTERFACEType() {
+        return new DATACOLLINTERFACEType();
+    }
+
+    /**
+     * Create an instance of {@link DATACOLLType }
+     * 
+     */
+    public DATACOLLType createDATACOLLType() {
+        return new DATACOLLType();
+    }
+
+    /**
+     * Create an instance of {@link gr.uoa.di.driver.xml.repository.ACCESSPROTOCOL }
+     * 
+     */
+    public gr.uoa.di.driver.xml.repository.ACCESSPROTOCOL createACCESSPROTOCOL() {
+        return new gr.uoa.di.driver.xml.repository.ACCESSPROTOCOL();
+    }
+
+    /**
+     * Create an instance of {@link ACCESSPROTOCOLDATACOLLType }
+     * 
+     */
+    public ACCESSPROTOCOLDATACOLLType createACCESSPROTOCOLDATACOLLType() {
+        return new ACCESSPROTOCOLDATACOLLType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link INTERFACE.SETS }
+     * 
+     */
+    public INTERFACE.SETS createINTERFACESETS() {
+        return new INTERFACE.SETS();
+    }
+
+    /**
+     * Create an instance of {@link MESSAGE }
+     * 
+     */
+    public MESSAGE createMESSAGE() {
+        return new MESSAGE();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link STATUS }
+     * 
+     */
+    public STATUS createSTATUS() {
+        return new STATUS();
+    }
+
+    /**
+     * Create an instance of {@link INTERFACE }
+     * 
+     */
+    public INTERFACE createINTERFACE() {
+        return new INTERFACE();
+    }
+
+    /**
+     * Create an instance of {@link ENVIRONMENTSType }
+     * 
+     */
+    public ENVIRONMENTSType createENVIRONMENTSType() {
+        return new ENVIRONMENTSType();
+    }
+
+    /**
+     * Create an instance of {@link QOS }
+     * 
+     */
+    public QOS createQOS() {
+        return new QOS();
+    }
+
+    /**
+     * Create an instance of {@link PARAMETERS }
+     * 
+     */
+    public PARAMETERS createPARAMETERS() {
+        return new PARAMETERS();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link DATASOURCEORIGINALIDType }
+     * 
+     */
+    public DATASOURCEORIGINALIDType createDATASOURCEORIGINALIDType() {
+        return new DATASOURCEORIGINALIDType();
+    }
+
+    /**
+     * Create an instance of {@link DATACOLLSType }
+     * 
+     */
+    public DATACOLLSType createDATACOLLSType() {
+        return new DATACOLLSType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link DATASOURCECOMPLIANCEDEGREEType }
+     * 
+     */
+    public DATASOURCECOMPLIANCEDEGREEType createDATASOURCECOMPLIANCEDEGREEType() {
+        return new DATASOURCECOMPLIANCEDEGREEType();
+    }
+
+    /**
+     * Create an instance of {@link BLACKBOARD }
+     * 
+     */
+    public BLACKBOARD createBLACKBOARD() {
+        return new BLACKBOARD();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link LASTUPDATEType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "LAST_UPDATE", scope = STATUS.class)
+    public JAXBElement<LASTUPDATEType> createSTATUSLASTUPDATE(LASTUPDATEType value) {
+        return new JAXBElement<LASTUPDATEType>(_STATUSLASTUPDATE_QNAME, LASTUPDATEType.class, STATUS.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "NUMBER_OF_OBJECTS", scope = STATUS.class)
+    public JAXBElement<BigInteger> createSTATUSNUMBEROFOBJECTS(BigInteger value) {
+        return new JAXBElement<BigInteger>(_STATUSNUMBEROFOBJECTS_QNAME, BigInteger.class, STATUS.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "HANDLED_DATASTRUCTURE", scope = STATUS.class)
+    public JAXBElement<BigInteger> createSTATUSHANDLEDDATASTRUCTURE(BigInteger value) {
+        return new JAXBElement<BigInteger>(_STATUSHANDLEDDATASTRUCTURE_QNAME, BigInteger.class, STATUS.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "USED_DISKSPACE", scope = STATUS.class)
+    public JAXBElement<BigInteger> createSTATUSUSEDDISKSPACE(BigInteger value) {
+        return new JAXBElement<BigInteger>(_STATUSUSEDDISKSPACE_QNAME, BigInteger.class, STATUS.class, value);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/FORMATS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/FORMATS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/FORMATS.java	(revision 48242)
@@ -0,0 +1,76 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for FORMATS complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FORMATS">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="FORMAT" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FORMATS", propOrder = {
+    "format"
+})
+public class FORMATS {
+
+    @XmlElement(name = "FORMAT", required = true)
+    protected List<String> format;
+
+    /**
+     * Gets the value of the format property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the format property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getFORMAT().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getFORMAT() {
+        if (format == null) {
+            format = new ArrayList<String>();
+        }
+        return this.format;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,68 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setValue(XMLGregorianCalendar value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RSSFeedXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RSSFeedXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RSSFeedXmlConverter.java	(revision 48242)
@@ -0,0 +1,155 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.bind.JAXBException;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.functionality.RSSFeed;
+import eu.dnetlib.domain.functionality.RSSFeedSearchCriteria;
+import gr.uoa.di.driver.xml.rssfeed.DOCUMENTSType;
+import gr.uoa.di.driver.xml.rssfeed.ObjectFactory;
+import gr.uoa.di.driver.xml.rssfeed.RESOURCEPROFILE;
+
+public class RSSFeedXmlConverter extends AbstractConverter<RSSFeed> implements
+		ResourceToXmlConverter<RSSFeed> {
+
+	private ObjectFactory of = new ObjectFactory();
+
+	public RSSFeedXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public String ObjectToXml(RSSFeed rssFeed)
+			throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		profile.setHEADER(of.createHEADERType());
+		profile.setBODY(of.createBODYType());
+
+		profile.getHEADER().setRESOURCEIDENTIFIER(of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+
+		profile.getHEADER().getRESOURCEKIND().setValue(rssFeed.getResourceKind());
+		profile.getHEADER().getRESOURCETYPE().setValue(rssFeed.getResourceType());
+
+		if (rssFeed.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils
+							.DateToString(rssFeed.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue("");
+
+		if (rssFeed.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					rssFeed.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (rssFeed.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					rssFeed.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+		
+		profile.getBODY().setSECURITYPARAMETERS(of.createSECURITYPARAMETERSType());
+		profile.getBODY().getSECURITYPARAMETERS().setSECURITYPARAMETER("value");
+
+		profile.getBODY().setCONFIGURATION(of.createCONFIGURATIONType());
+		profile.getBODY().getCONFIGURATION().setRSSFEEDINFO(
+				of.createRSSFEEDINFOType());
+
+		// TODO: set status
+		profile.getBODY().setSTATUS("value");
+
+		profile.getBODY().getCONFIGURATION().getRSSFEEDINFO().setCQLQUERY(  rssFeed.getQueryCql() );				
+		profile.getBODY().getCONFIGURATION().getRSSFEEDINFO().setUSERID( rssFeed.getUsedId() );
+		profile.getBODY().getCONFIGURATION().getRSSFEEDINFO().setDATEOFLASTVISIT(rssFeed.getLastTimeUsed().toString());
+		
+		Set<String> docIds = rssFeed.getDocumentIds().keySet();
+		for( String docId : docIds ) {
+			DOCUMENTSType dType = of.createDOCUMENTSType();
+			dType.setDOCUMENTID(docId);
+			dType.setISNEW(rssFeed.getDocumentIds().get(docId));
+			profile.getBODY().getCONFIGURATION().getRSSFEEDINFO().getDOCUMENTS().add( dType );				
+		}
+		this.getMarshaller().marshal(profile, baos );
+		return baos.toString();
+
+	}
+
+	public RSSFeed XmlToObject(String xml) throws JAXBException {
+		RSSFeed rssFeed = new RSSFeed();
+
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		rssFeed.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER().getValue());
+		rssFeed.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());		
+		if( profile.getHEADER().getDATEOFCREATION().getValue() != null )
+			rssFeed.setDateOfCreation(ConversionUtils.parseDate(profile.getHEADER().getDATEOFCREATION().getValue()));
+		rssFeed.setResourceKind(profile.getHEADER().getRESOURCEKIND().getValue());
+		rssFeed.setResourceType(profile.getHEADER().getRESOURCETYPE().getValue());
+
+		rssFeed.setUsedId( profile.getBODY().getCONFIGURATION()
+				.getRSSFEEDINFO().getUSERID());
+		rssFeed.setQueryCql( profile.getBODY().getCONFIGURATION().getRSSFEEDINFO().getCQLQUERY() );
+		
+		for( DOCUMENTSType docType : profile.getBODY().getCONFIGURATION().getRSSFEEDINFO().getDOCUMENTS() ){
+			rssFeed.getDocumentIds().put(docType.getDOCUMENTID(), docType.isISNEW());
+		}
+		
+		return rssFeed;
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((RSSFeedSearchCriteria) criteria);
+	}
+
+	public String toXQueryString(RSSFeedSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+
+		String xQuery = null;
+		List<String> predicates = new ArrayList<String>();
+
+		xQuery = "for $x in collection( \"/db/DRIVER/RSSFeedDSResources/RSSFeedDSResourceType\" )";
+		if (criteria.getCqlQuery() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RSSFEED_INFO/CQLQUERY[@value > \"" +
+							criteria.getCqlQuery() );
+		}		
+		if (criteria.getUserId() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/RSSFEED_INFO/USER_ID[@value = \""
+							+ criteria.getUserId() + "\"]");
+
+		}
+		for (int i = 0; i < predicates.size(); i++) {
+			String predicate = predicates.get(i);
+
+			if (i > 0) {
+				xQuery += " and ";
+			} else {
+				xQuery += " where ";
+			}
+
+			xQuery += predicate;
+		}
+		xQuery += " return $x";
+		return xQuery;
+	}
+
+	@Deprecated
+	public String toXQueryString(RSSFeed exampleInstance) {
+		throw new UnsupportedOperationException();
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/QueryHashXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/QueryHashXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/QueryHashXmlConverter.java	(revision 48242)
@@ -0,0 +1,203 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.bind.JAXBException;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.functionality.QueryHash;
+import eu.dnetlib.domain.functionality.QueryHashSearchCriteria;
+import gr.uoa.di.driver.xml.queryResultsHashResource.ObjectFactory;
+import gr.uoa.di.driver.xml.queryResultsHashResource.QUERYRESULTSType;
+import gr.uoa.di.driver.xml.queryResultsHashResource.RESOURCEPROFILE;
+
+public class QueryHashXmlConverter extends AbstractConverter<QueryHash> implements
+		ResourceToXmlConverter<QueryHash> {
+	private ObjectFactory of = new ObjectFactory();
+
+	public QueryHashXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public String ObjectToXml(QueryHash queryHash) throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		profile.setHEADER(of.createHEADERType());
+		profile.setBODY(of.createBODYType());
+
+		profile.getHEADER().setRESOURCEIDENTIFIER(of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+
+		profile.getHEADER().getRESOURCEKIND().setValue(queryHash.getResourceKind());
+		profile.getHEADER().getRESOURCETYPE().setValue(queryHash.getResourceType());
+		
+		if (queryHash.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils
+							.DateToString(queryHash.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue("");
+
+		if (queryHash.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					queryHash.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (queryHash.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					queryHash.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+		
+		
+		profile.getBODY().setUSERID(queryHash.getUserId());
+		profile.getBODY().setHASHVALUE(
+				new java.math.BigInteger(queryHash.getHashValue() + ""));
+		profile.getBODY().setCQLQUERY( queryHash.getCqlQuery());
+		
+		if( queryHash.getQueryResults() != null ) {
+			Set<String> keys = queryHash.getQueryResults().keySet();
+			for( String key : keys ) {
+				QUERYRESULTSType res = new QUERYRESULTSType();
+				res.setDOCID( key );
+				res.setISNEW( queryHash.getQueryResults().get(key) );
+				profile.getBODY().getQUERYRESULTS().add(res);
+			}
+		}
+		getMarshaller().marshal(profile, baos);
+
+		return baos.toString();
+	}
+
+	public QueryHash XmlToObject(String xml) throws JAXBException {
+		QueryHash queryHash = new QueryHash();
+
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		queryHash.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER().getValue());
+		queryHash.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());
+		if ( profile.getHEADER().getDATEOFCREATION().getValue() != null )
+			queryHash.setDateOfCreation(ConversionUtils.parseDate(profile.getHEADER().getDATEOFCREATION().getValue()));
+		queryHash.setResourceKind(profile.getHEADER().getRESOURCEKIND().getValue());
+		queryHash.setResourceType(profile.getHEADER().getRESOURCETYPE().getValue());
+
+		queryHash.setHashValue(profile.getBODY().getHASHVALUE().intValue());
+		queryHash.setUserId(profile.getBODY().getUSERID());
+		queryHash.setCqlQuery( profile.getBODY().getCQLQUERY() );
+		Hashtable<String, Boolean> results = new Hashtable<String, Boolean>();
+		List<QUERYRESULTSType> resultsType = profile.getBODY().getQUERYRESULTS();
+		for( QUERYRESULTSType result : resultsType ) {
+			results.put(result.getDOCID(), result.isISNEW() );
+		}
+		queryHash.setQueryResults( results );
+		
+		return queryHash;
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((QueryHashSearchCriteria) criteria);
+	}
+
+	public String toXQueryString(QueryHashSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		String xQuery = null;
+		List<String> predicates = new ArrayList<String>();
+
+		xQuery = "for $x in collection( \"/db/DRIVER/QueryHashDSResources/QueryHashDSResourceType\" )";
+
+		if (criteria.getUserId() != null) {
+			predicates.add("$x/RESOURCE_PROFILE/BODY[@USER_ID = \""
+					+ criteria.getUserId() + "\"]");
+
+		}
+
+		for (int i = 0; i < predicates.size(); i++) {
+			String predicate = predicates.get(i);
+
+			if (i > 0)
+				xQuery += " and ";
+			else
+				xQuery += " where ";
+
+			xQuery += predicate;
+		}
+		xQuery += " return $x";
+		// logger.debug( xQuery );
+		return xQuery;
+	}
+
+	@Deprecated
+	public String toXQueryString(QueryHash exampleInstance) {
+		String xQuery = "for $x in collection( \"/db/DRIVER/QueryHashDSResources/QueryHashDSResourceType\" )";
+		List<String> predicates = new ArrayList<String>();
+
+		if (exampleInstance != null) {
+			if (exampleInstance.getId() != null) {
+				predicates.add("$x/RESOURCE_PROFILE/BODY[@USER_ID = \""
+						+ exampleInstance.getId() + "\"]");
+			}
+
+			for (int i = 0; i < predicates.size(); i++) {
+				String predicate = predicates.get(i);
+
+				if (i > 0)
+					xQuery += " and ";
+				else
+					xQuery += " where ";
+
+				xQuery += predicate;
+			}
+		}
+
+		xQuery += " return $x";
+		// logger.debug( xQuery );
+		return xQuery;
+	}
+
+	public static void main(String args[]) throws JAXBException {
+		
+		 QueryHash r = new QueryHash();
+		 
+		 r.setDateOfCreation( new Date() );			
+		 r.setResourceId( "test" );
+		 r.setCqlQuery("test query");
+		 r.setUserId("kati");
+		 r.setHashValue( 123 );
+		 Hashtable<String, Boolean> results = new Hashtable< String, Boolean >();
+		 results.put("1", true );
+		 results.put("2", false );
+		 results.put("3", true );
+		 results.put("4", false );
+		 
+		 r.setQueryResults(results);
+		
+		 QueryHashXmlConverter conv;
+		 conv = new QueryHashXmlConverter();
+		 String xml = conv.ObjectToXml(r);
+		 System.out.println( xml );
+		 
+		 QueryHash nr = conv.XmlToObject(xml);	
+		 System.out.println( "cql is " + nr.getCqlQuery() );
+		 System.out.println( "user is " + nr.getUserId() );
+		 System.out.println( "Hash is " + nr.getHashValue() );
+		 
+		 Set<String> keys = nr.getQueryResults().keySet();
+		 for( String key : keys ) {
+			 System.out.println( "key is " + key + " value is " + nr.getQueryResults().get(key) );
+		 }
+		 
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentFieldListType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentFieldListType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentFieldListType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DocumentFieldListType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DocumentFieldListType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="documentField" type="{}DocumentFieldType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DocumentFieldListType", propOrder = {
+    "documentField"
+})
+public class DocumentFieldListType {
+
+    @XmlElement(required = true)
+    protected List<DocumentFieldType> documentField;
+
+    /**
+     * Gets the value of the documentField property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the documentField property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDocumentField().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DocumentFieldType }
+     * 
+     * 
+     */
+    public List<DocumentFieldType> getDocumentField() {
+        if (documentField == null) {
+            documentField = new ArrayList<DocumentFieldType>();
+        }
+        return this.documentField;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/TERMType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/TERMType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/TERMType.java	(revision 48242)
@@ -0,0 +1,250 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TERMType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="TERMType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="SYNONYMS">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element name="SYNONYM" type="{}SYNONYMType" maxOccurs="unbounded" minOccurs="0"/>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="encoding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="english_name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="native_name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="code" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TERMType", propOrder = {
+    "synonyms"
+})
+public class TERMType {
+
+    @XmlElement(name = "SYNONYMS", required = true)
+    protected TERMType.SYNONYMS synonyms;
+    @XmlAttribute(required = true)
+    protected String encoding;
+    @XmlAttribute(name = "english_name", required = true)
+    protected String englishName;
+    @XmlAttribute(name = "native_name", required = true)
+    protected String nativeName;
+    @XmlAttribute
+    protected String code;
+
+    /**
+     * Gets the value of the synonyms property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link TERMType.SYNONYMS }
+     *     
+     */
+    public TERMType.SYNONYMS getSYNONYMS() {
+        return synonyms;
+    }
+
+    /**
+     * Sets the value of the synonyms property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link TERMType.SYNONYMS }
+     *     
+     */
+    public void setSYNONYMS(TERMType.SYNONYMS value) {
+        this.synonyms = value;
+    }
+
+    /**
+     * Gets the value of the encoding property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEncoding() {
+        return encoding;
+    }
+
+    /**
+     * Sets the value of the encoding property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEncoding(String value) {
+        this.encoding = value;
+    }
+
+    /**
+     * Gets the value of the englishName property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEnglishName() {
+        return englishName;
+    }
+
+    /**
+     * Sets the value of the englishName property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEnglishName(String value) {
+        this.englishName = value;
+    }
+
+    /**
+     * Gets the value of the nativeName property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNativeName() {
+        return nativeName;
+    }
+
+    /**
+     * Sets the value of the nativeName property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNativeName(String value) {
+        this.nativeName = value;
+    }
+
+    /**
+     * Gets the value of the code property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCode() {
+        return code;
+    }
+
+    /**
+     * Sets the value of the code property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCode(String value) {
+        this.code = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="SYNONYM" type="{}SYNONYMType" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "synonym"
+    })
+    public static class SYNONYMS {
+
+        @XmlElement(name = "SYNONYM")
+        protected List<SYNONYMType> synonym;
+
+        /**
+         * Gets the value of the synonym property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the synonym property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getSYNONYM().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link SYNONYMType }
+         * 
+         * 
+         */
+        public List<SYNONYMType> getSYNONYM() {
+            if (synonym == null) {
+                synonym = new ArrayList<SYNONYMType>();
+            }
+            return this.synonym;
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/vocabulary/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,182 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2014.02.13 at 02:30:18 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.vocabulary;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.xml.vocabulary package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _VOCABULARYDESCRIPTION_QNAME = new QName("", "VOCABULARY_DESCRIPTION");
+    private final static QName _SECURITYPARAMETERS_QNAME = new QName("", "SECURITY_PARAMETERS");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.xml.vocabulary
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link TERMType }
+     * 
+     */
+    public TERMType createTERMType() {
+        return new TERMType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link SYNONYMType }
+     * 
+     */
+    public SYNONYMType createSYNONYMType() {
+        return new SYNONYMType();
+    }
+
+    /**
+     * Create an instance of {@link TERMType.SYNONYMS }
+     * 
+     */
+    public TERMType.SYNONYMS createTERMTypeSYNONYMS() {
+        return new TERMType.SYNONYMS();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link VOCABULARYNAME }
+     * 
+     */
+    public VOCABULARYNAME createVOCABULARYNAME() {
+        return new VOCABULARYNAME();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType }
+     * 
+     */
+    public STATUSType createSTATUSType() {
+        return new STATUSType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link DATEType }
+     * 
+     */
+    public DATEType createDATEType() {
+        return new DATEType();
+    }
+
+    /**
+     * Create an instance of {@link VOCABULARYTERMType }
+     * 
+     */
+    public VOCABULARYTERMType createVOCABULARYTERMType() {
+        return new VOCABULARYTERMType();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "VOCABULARY_DESCRIPTION")
+    public JAXBElement<String> createVOCABULARYDESCRIPTION(String value) {
+        return new JAXBElement<String>(_VOCABULARYDESCRIPTION_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "SECURITY_PARAMETERS")
+    public JAXBElement<String> createSECURITYPARAMETERS(String value) {
+        return new JAXBElement<String>(_SECURITYPARAMETERS_QNAME, String.class, null, value);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayType.java	(revision 48242)
@@ -0,0 +1,204 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DisplayType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DisplayType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="displayType" type="{}DisplayTypeType"/>
+ *         &lt;element name="field" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="label" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="action" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="parameter" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="descriptionMap" type="{}MapType" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DisplayType", propOrder = {
+    "displayType",
+    "field",
+    "label",
+    "action",
+    "parameter",
+    "descriptionMap"
+})
+public class DisplayType {
+
+    @XmlElement(required = true)
+    protected DisplayTypeType displayType;
+    protected String field;
+    protected String label;
+    protected String action;
+    protected String parameter;
+    protected MapType descriptionMap;
+
+    /**
+     * Gets the value of the displayType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DisplayTypeType }
+     *     
+     */
+    public DisplayTypeType getDisplayType() {
+        return displayType;
+    }
+
+    /**
+     * Sets the value of the displayType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DisplayTypeType }
+     *     
+     */
+    public void setDisplayType(DisplayTypeType value) {
+        this.displayType = value;
+    }
+
+    /**
+     * Gets the value of the field property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getField() {
+        return field;
+    }
+
+    /**
+     * Sets the value of the field property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setField(String value) {
+        this.field = value;
+    }
+
+    /**
+     * Gets the value of the label property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLabel() {
+        return label;
+    }
+
+    /**
+     * Sets the value of the label property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLabel(String value) {
+        this.label = value;
+    }
+
+    /**
+     * Gets the value of the action property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAction() {
+        return action;
+    }
+
+    /**
+     * Sets the value of the action property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAction(String value) {
+        this.action = value;
+    }
+
+    /**
+     * Gets the value of the parameter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getParameter() {
+        return parameter;
+    }
+
+    /**
+     * Sets the value of the parameter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setParameter(String value) {
+        this.parameter = value;
+    }
+
+    /**
+     * Gets the value of the descriptionMap property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapType }
+     *     
+     */
+    public MapType getDescriptionMap() {
+        return descriptionMap;
+    }
+
+    /**
+     * Sets the value of the descriptionMap property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapType }
+     *     
+     */
+    public void setDescriptionMap(MapType value) {
+        this.descriptionMap = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SEARCHABLESType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SEARCHABLESType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SEARCHABLESType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SEARCHABLESType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SEARCHABLESType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *         &lt;element name="SEARCHABLE" type="{}SEARCHABLEType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SEARCHABLESType", propOrder = {
+    "searchable"
+})
+public class SEARCHABLESType {
+
+    @XmlElement(name = "SEARCHABLE")
+    protected List<SEARCHABLEType> searchable;
+
+    /**
+     * Gets the value of the searchable property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the searchable property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSEARCHABLE().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SEARCHABLEType }
+     * 
+     * 
+     */
+    public List<SEARCHABLEType> getSEARCHABLE() {
+        if (searchable == null) {
+            searchable = new ArrayList<SEARCHABLEType>();
+        }
+        return this.searchable;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapEntryType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapEntryType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapEntryType.java	(revision 48242)
@@ -0,0 +1,97 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MapEntryType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MapEntryType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="key" type="{http://www.w3.org/2001/XMLSchema}anyType"/>
+ *         &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}anyType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MapEntryType", propOrder = {
+    "key",
+    "value"
+})
+public class MapEntryType {
+
+    @XmlElement(required = true)
+    protected Object key;
+    @XmlElement(required = true)
+    protected Object value;
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Object }
+     *     
+     */
+    public Object getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Object }
+     *     
+     */
+    public void setKey(Object value) {
+        this.key = value;
+    }
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Object }
+     *     
+     */
+    public Object getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Object }
+     *     
+     */
+    public void setValue(Object value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayTypeType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayTypeType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayTypeType.java	(revision 48242)
@@ -0,0 +1,67 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DisplayTypeType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="DisplayTypeType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="plain"/>
+ *     &lt;enumeration value="search"/>
+ *     &lt;enumeration value="internalUrl"/>
+ *     &lt;enumeration value="externalUrl"/>
+ *     &lt;enumeration value="documentExternalUrl"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "DisplayTypeType")
+@XmlEnum
+public enum DisplayTypeType {
+
+    @XmlEnumValue("plain")
+    PLAIN("plain"),
+    @XmlEnumValue("search")
+    SEARCH("search"),
+    @XmlEnumValue("internalUrl")
+    INTERNAL_URL("internalUrl"),
+    @XmlEnumValue("externalUrl")
+    EXTERNAL_URL("externalUrl"),
+    @XmlEnumValue("documentExternalUrl")
+    DOCUMENT_EXTERNAL_URL("documentExternalUrl");
+    private final String value;
+
+    DisplayTypeType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static DisplayTypeType fromValue(String v) {
+        for (DisplayTypeType c: DisplayTypeType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentDescriptionType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentDescriptionType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentDescriptionType.java	(revision 48242)
@@ -0,0 +1,97 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DocumentDescriptionType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DocumentDescriptionType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="view" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="documentFields" type="{}DocumentFieldListType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DocumentDescriptionType", propOrder = {
+    "view",
+    "documentFields"
+})
+public class DocumentDescriptionType {
+
+    @XmlElement(required = true)
+    protected String view;
+    @XmlElement(required = true)
+    protected DocumentFieldListType documentFields;
+
+    /**
+     * Gets the value of the view property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getView() {
+        return view;
+    }
+
+    /**
+     * Sets the value of the view property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setView(String value) {
+        this.view = value;
+    }
+
+    /**
+     * Gets the value of the documentFields property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DocumentFieldListType }
+     *     
+     */
+    public DocumentFieldListType getDocumentFields() {
+        return documentFields;
+    }
+
+    /**
+     * Sets the value of the documentFields property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DocumentFieldListType }
+     *     
+     */
+    public void setDocumentFields(DocumentFieldListType value) {
+        this.documentFields = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RepositoryXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RepositoryXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/RepositoryXmlConverter.java	(revision 48242)
@@ -0,0 +1,655 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositorySearchCriteria;
+import gr.uoa.di.driver.xml.repository.RESOURCEPROFILE;
+
+/**
+ * This repository converter is modified in order to be able to also produce
+ * xqueries for the pending data structures collections inside the IS
+ * 
+ * @author tsilochr
+ * 
+ */
+public class RepositoryXmlConverter extends AbstractConverter<Repository> implements
+		ResourceToXmlConverter<Repository> {
+	
+	public enum Collection {
+		VALID("for $x in collection(\"/db/DRIVER/RepositoryServiceResources/" +
+				"RepositoryServiceResourceType\") "), 
+		PENDING("for $x in collection(\"/db/DRIVER/PendingRepositoryResources/" +
+				"RepositoryServiceResourceType\") ");
+
+		private final String collection;
+
+		Collection(String collection) {
+			this.collection = collection;
+		}
+
+		public String getCollection() {
+			return collection;
+		}
+	}
+
+//	private ObjectFactory of = new ObjectFactory();
+
+	private final String collection;
+
+	public RepositoryXmlConverter(Collection c) throws JAXBException {
+		super(RESOURCEPROFILE.class);
+		this.collection = c.getCollection();
+	}
+
+	public RepositoryXmlConverter() throws JAXBException {
+		this(Collection.VALID);
+	}
+
+	public String ObjectToXml(Repository repository) throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+//		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+//
+//		profile.setHEADER(of.createHEADERType());
+//		profile.setBODY(of.createBODYType());
+//		profile.getBODY().setCONFIGURATION(of.createCONFIGURATION());
+//		profile.getBODY().getCONFIGURATION().setLOCATION(of.createLOCATION());
+//		profile.getBODY().getCONFIGURATION().setINTERFACES(of.createINTERFACES());
+//		profile.getBODY().setSTATUS(of.createSTATUS());
+//		profile.getBODY().setQOS(of.createQOS());
+//		profile.getBODY().setBLACKBOARD(of.createBLACKBOARD());
+//
+//		profile.getHEADER().setRESOURCEIDENTIFIER(of.createRESOURCEIDENTIFIERType());
+//		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+//		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+//		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+//		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+//
+//		profile.getHEADER().getRESOURCEKIND().setValue(repository.getResourceKind());
+//		profile.getHEADER().getRESOURCETYPE().setValue(repository.getResourceType());
+//		
+//		if (repository.getDateOfCreation() != null)
+//			profile.getHEADER().getDATEOFCREATION().setValue(
+//					ConversionUtils.toXMLGregorianCalendar(repository.getDateOfCreation()));
+//		else
+//			profile.getHEADER().getDATEOFCREATION().setValue(ConversionUtils.toXMLGregorianCalendar(new Date()));
+//
+//		if (repository.getResourceId() != null)
+//			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+//					repository.getResourceId());
+//		else
+//			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+//		
+//		if (repository.getResourceUri() != null)
+//			profile.getHEADER().getRESOURCEURI().setValue(
+//					repository.getResourceUri());
+//		else
+//			profile.getHEADER().getRESOURCEURI().setValue("");
+//		
+//		String protocol = filterNull(repository.getProtocol());
+//		profile.getHEADER().setPROTOCOL(protocol);
+//
+//		CONFIGURATION c = profile.getBODY().getCONFIGURATION();
+//		c.setCOUNTRY(repository.getCountry());
+//		c.setOFFICIALNAME(repository.getOfficialName());
+//		c.setENGLISHNAME(repository.getEnglishName());
+//		c.setREPOSITORYWEBPAGE(repository.getEntryUrl());
+//
+//		ENVIRONMENTSType envType = of.createENVIRONMENTSType();
+//		if (repository.getEnvironments() != null) {
+//			envType.getENVIRONMENT().addAll(repository.getEnvironments());
+//		}
+//		c.setENVIRONMENTS(envType);
+//		
+//		if (repository.getDatasourceAggregated()!= null && 
+//				repository.getDatasourceAggregated().booleanValue()) {
+//			c.setDATASOURCEAGGREGATED("true");			
+//		} else {
+//			c.setDATASOURCEAGGREGATED("false");
+//		}
+//		
+//		c.setDATASOURCETYPE(repository.getDatasourceType());
+//		c.setDATASOURCEAGGREGATORID(repository.getDatasourceAggregatorId());
+//		
+//		c.setDATASOURCEORIGINALID(of.createDATASOURCEORIGINALIDType());
+//		c.getDATASOURCEORIGINALID().setValue(repository.getDatasourceOriginalIdValue());
+//		c.getDATASOURCEORIGINALID().setProvenance(repository.getDatasourceOriginalIdProvenance());
+//		
+//		c.setDATASOURCECOMPLIANCEDEGREE(of.createDATASOURCECOMPLIANCEDEGREEType());
+//		c.getDATASOURCECOMPLIANCEDEGREE().setValue(repository.getDatasourceComplianceDegreeValue());
+//		c.getDATASOURCECOMPLIANCEDEGREE().setEncoding(repository.getDatasourceComplianceDegreeEncoding());
+//		
+//		c.setDATACOLLS(of.createDATACOLLSType());
+//		for (DataCollectionType dataCollectionType: repository.getDataCollectionTypes()) {
+//			DATACOLLType datacollType = of.createDATACOLLType();
+//			datacollType.setId(dataCollectionType.getId());
+//			datacollType.setLabel(dataCollectionType.getLabel());
+//			datacollType.setGroup(dataCollectionType.getGroup());
+//			
+//			DATACOLLINTERFACEType datacollInterType = of.createDATACOLLINTERFACEType();
+//			if( dataCollectionType.getDataCollectionInterface() != null) {
+//				datacollInterType.setBASEURL(dataCollectionType.getDataCollectionInterface().getBaseUrl());
+//				datacollInterType.setFILTER(dataCollectionType.getDataCollectionInterface().getFilter());
+//				datacollInterType.setFORMAT(dataCollectionType.getDataCollectionInterface().getFormat());			
+//				
+//				ACCESSPROTOCOLDATACOLLType accessprotdatacoll = of.createACCESSPROTOCOLDATACOLLType();
+//				if (dataCollectionType.getDataCollectionInterface().getProtocol() != null) {
+//					accessprotdatacoll.setPassword(dataCollectionType.getDataCollectionInterface().getProtocol().getPassword());
+//					accessprotdatacoll.setUsername(dataCollectionType.getDataCollectionInterface().getProtocol().getUsername());
+//					accessprotdatacoll.setValue(dataCollectionType.getDataCollectionInterface().getProtocol().getValue());
+//				}
+//				datacollInterType.setACCESSPROTOCOL(accessprotdatacoll);
+//			}
+//			datacollType.setINTERFACE(datacollInterType);
+//
+//			c.getDATACOLLS().getDATACOLL().add(datacollType);
+//			
+//		}
+//		
+//		EXTRAFIELDS extraFields = of.createEXTRAFIELDS();
+//
+//		if (repository.getExtraFields().size() == 0) {
+//
+//			FieldType fieldType = of.createFieldType();
+//			fieldType.setKey("VERIFIED");
+//			fieldType.setValue("YES");
+//			extraFields.getFIELD().add(fieldType);
+//
+//		} else {
+//			for (String key : repository.getExtraFields().keySet()) {
+//
+//				FieldType fieldType = of.createFieldType();
+//				fieldType.setKey(key);
+//				fieldType.setValue(repository.getExtraFields().get(key));
+//				extraFields.getFIELD().add(fieldType);
+//
+//			}
+//		}
+//		c.setEXTRAFIELDS(extraFields);
+//		c.setICONURI(filterNull(repository.getIconUrl()));
+//
+//		c.setTYPOLOGY(filterNull(repository.getTypology()));
+//		c.setADMININFO(repository.getAdminEmail());
+//		c.setREPOSITORYINSTITUTION(filterNull(repository
+//				.getRepositoryInstitution()));
+//
+//		if (repository.getRegisteredBy() == null
+//				|| repository.getRegisteredBy().isEmpty())
+//			c.setREGISTEREDBY(repository.getAdminEmail());
+//		else
+//			c.setREGISTEREDBY(repository.getRegisteredBy());
+//
+//		c.setMAXSIZEOFDATASTRUCTURE(BigInteger.valueOf(repository.getMaxSizeOfDatastructure()));
+//		
+//		BigInteger availableDiskSpace = null;
+//		if (repository.getAvailableDiskSpace() == null || repository.getAvailableDiskSpace().trim().isEmpty()) {
+//			availableDiskSpace = new BigInteger("0");
+//		} else {
+//			availableDiskSpace = new BigInteger(repository.getAvailableDiskSpace());
+//		}	
+//		c.setAVAILABLEDISKSPACE(availableDiskSpace);
+//		
+//		c.setMAXNUMBEROFDATASTRUCTURE(BigInteger.valueOf(repository.getMaxNumberOfDataStructures()));
+//		
+//		profile.getBODY().getQOS().setAVAILABILITY(filterNull(repository.getAvailability()));
+//		profile.getBODY().getQOS().setCAPACITY(filterNull(filterNull(repository.getCapacity())));
+//		String responseTime = repository.getResponseTime() != null ? repository.getResponseTime().toString() : "";
+//		profile.getBODY().getQOS().setRESPONSETIME(responseTime);		
+//		profile.getBODY().getQOS().setTHROUGHPUT(repository.getThroughput());
+//		profile.getBODY().setSECURITYPARAMETERS(filterNull(repository.getSecurityParameters()));
+//
+//		
+//		//Interfaces
+//		for (RepositoryInterface ri : repository.getInterfaces()) {
+//			INTERFACE i = of.createINTERFACE();
+//			
+//			i.setFORMATS(of.createFORMATS());
+//			i.setSETS(of.createINTERFACESETS());
+//			
+//			i.setACCESSPROTOCOL(of.createINTERFACEACCESSPROTOCOL());
+//			if (ri.getAccessProtocol() != null) {
+//				i.getACCESSPROTOCOL().setValue(ri.getAccessProtocol().getValue());
+//				i.getACCESSPROTOCOL().setFilter(ri.getAccessProtocol().getFilter());
+//				i.getACCESSPROTOCOL().setPassword(ri.getAccessProtocol().getPassword());
+//				i.getACCESSPROTOCOL().setUsername(ri.getAccessProtocol().getUsername());			
+//			}
+//			
+//			i.setBASEURL(ri.getAddress());
+//
+//			if (ri.getExposedFormats() != null)
+//				i.getFORMATS().getFORMAT().addAll(ri.getExposedFormats());
+//
+//			if (ri.getExposedSets() != null)
+//				i.getSETS().getSET().addAll(ri.getExposedSets());
+//
+//			c.getINTERFACES().getINTERFACE().add(i);
+//		}
+//
+//		//Location
+//		LOCATION l = c.getLOCATION();
+//		l.setLATITUDE(repository.getLatitude());
+//		l.setLONGITUDE(repository.getLongtitude());
+//		l.setTIMEZONE(repository.getTimezone());
+//
+//		//Status
+//		/* numberOfObjects? */
+//		JAXBElement<BigInteger> numOfObj = this.of.
+//			createSTATUSNUMBEROFOBJECTS(BigInteger.valueOf(repository.getNumberOfObjects()));		
+//		profile.getBODY().getSTATUS().getContent().add(numOfObj);
+//
+//		/* handledDatastructure */
+//		if (repository.getHandledDatastructure() != null) {
+//			JAXBElement<BigInteger> element = this.of.
+//				createSTATUSHANDLEDDATASTRUCTURE(BigInteger.valueOf(repository.getHandledDatastructure()));
+//			profile.getBODY().getSTATUS().getContent().add(element);
+//		}
+//
+//		/* usedDiskSpace */
+//		if (repository.getUsedDiskspace() != null) {
+//			JAXBElement<BigInteger> element = this.of.
+//				createSTATUSUSEDDISKSPACE(BigInteger.valueOf(repository.getUsedDiskspace()));
+//			profile.getBODY().getSTATUS().getContent().add(element);
+//		}
+//
+//		/* last update */
+//		if (repository.getLastUpdate() != null) {
+//			LASTUPDATEType date = this.of.createLASTUPDATEType();
+//			profile.getBODY().getSTATUS().getContent().add(this.of.createSTATUSLASTUPDATE(date));
+//		}
+//
+//		// blackboard
+//		if (repository.getBlackboard() != null) {
+//			BLACKBOARD bl = profile.getBODY().getBLACKBOARD();
+//			String lastRequest = repository.getBlackboard().getLastrequest();
+//			lastRequest = lastRequest == null ? "" : lastRequest;
+//
+//			String lastResponse = repository.getBlackboard().getLastresponse();
+//			lastResponse = lastResponse == null ? "" : lastResponse;
+//
+//			bl.setLASTREQUEST(lastRequest);
+//			bl.setLASTRESPONSE(lastResponse);
+//
+//			// blackboard/messages
+//			for (RepositoryBlackboardMessage msg : repository.getBlackboard()
+//					.getMessages()) {
+//				MESSAGE message = of.createMESSAGE();
+//				message.setACTION(ACTION.fromValue(msg.getAction().getValue()));
+//				message.setACTIONSTATUS(ACTIONSTATUS.fromValue(msg.getActionStatus().getValue()));
+//				message.setId(msg.getId());
+//
+//				// blackboard/messages/parameters
+//				for (String param : msg.getParameters()) {
+//					PARAMETERS p = of.createPARAMETERS();
+//					p.setName(param);
+//					message.getPARAMETERS().add(p);
+//				}
+//				bl.getMESSAGE().add(message);
+//			}
+//		}		
+//		
+//		this.getMarshaller().marshal(profile, baos);
+
+		return baos.toString();
+	}
+
+	public Repository XmlToObject(String xml) throws JAXBException {
+		Repository rep = new Repository();
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		// HeaderType
+		rep.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER()
+				.getValue());
+		rep.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());
+		rep.setResourceKind(profile.getHEADER().getRESOURCEKIND().getValue());
+		rep.setResourceType(profile.getHEADER().getRESOURCETYPE().getValue());
+	/*	rep.setDateOfCreation(ConversionUtils.toDate((profile.getHEADER()
+				.getDATEOFCREATION().getValue())));
+*/
+		rep.setProtocol(profile.getHEADER().getPROTOCOL());
+//
+//		// CONFIGURATION
+//		rep.setOfficialName(profile.getBODY().getCONFIGURATION()
+//				.getOFFICIALNAME());
+//		rep.setEnglishName(profile.getBODY().getCONFIGURATION()
+//				.getENGLISHNAME());
+//		rep.setCountry(profile.getBODY().getCONFIGURATION().getCOUNTRY());
+//		rep.setEntryUrl(profile.getBODY().getCONFIGURATION()
+//				.getREPOSITORYWEBPAGE());
+//		rep.setIconUrl(profile.getBODY().getCONFIGURATION().getICONURI());
+//		rep.setRepositoryInstitution(profile.getBODY().getCONFIGURATION()
+//				.getREPOSITORYINSTITUTION());
+//		rep.setTypology(profile.getBODY().getCONFIGURATION().getTYPOLOGY());
+//		rep.setAdminEmail(profile.getBODY().getCONFIGURATION().getADMININFO());
+//		if (profile.getBODY().getCONFIGURATION().getREGISTEREDBY() != null)
+//			rep.setRegisteredBy(profile.getBODY().getCONFIGURATION()
+//					.getREGISTEREDBY());
+//		rep.setMaxNumberOfDataStructures((profile.getBODY().getCONFIGURATION()
+//				.getMAXNUMBEROFDATASTRUCTURE().intValue()));
+//		rep.setMaxSizeOfDatastructure(profile.getBODY().getCONFIGURATION()
+//				.getMAXSIZEOFDATASTRUCTURE().intValue());
+//
+//		// CONFIGURATION/LOCATION
+//		rep.setLatitude(profile.getBODY().getCONFIGURATION().getLOCATION()
+//				.getLATITUDE());
+//		rep.setLongtitude(profile.getBODY().getCONFIGURATION().getLOCATION()
+//				.getLONGITUDE());
+//		rep.setTimezone((float) profile.getBODY().getCONFIGURATION()
+//				.getLOCATION().getTIMEZONE());
+//
+//		if (profile.getBODY().getCONFIGURATION().getEXTRAFIELDS() != null) {
+//			for (FieldType field : profile.getBODY().getCONFIGURATION()
+//					.getEXTRAFIELDS().getFIELD()) {
+//				rep.getExtraFields().put(field.getKey(), field.getValue());
+//			}
+//		}
+//
+//		// CONFIGURATION/INTERFACES
+//		for (INTERFACE i : profile.getBODY().getCONFIGURATION().getINTERFACES()
+//				.getINTERFACE()) {
+//			RepositoryInterface inter = new RepositoryInterface();
+//			List<String> sets = new ArrayList<String>();
+//			List<String> formats = new ArrayList<String>();
+//
+//			for (String s : i.getFORMATS().getFORMAT())
+//				formats.add(s);
+//
+//			if (i.getSETS().getSET().isEmpty())
+//				sets.add("All sets");
+//			else {
+//				for (String s : i.getSETS().getSET())
+//					sets.add(s);
+//			}
+//
+//			inter.setExposedFormats(formats);
+//			inter.setExposedSets(sets);
+//			
+//			if(i.getACCESSPROTOCOL() != null) {
+//				RepositoryAccessProtocol accessProtocol = new RepositoryAccessProtocol();
+//				accessProtocol.setFilter(i.getACCESSPROTOCOL().getFilter());
+//				accessProtocol.setPassword(i.getACCESSPROTOCOL().getPassword());
+//				accessProtocol.setUsername(i.getACCESSPROTOCOL().getUsername());
+//				accessProtocol.setValue(i.getACCESSPROTOCOL().getValue());			
+//				inter.setAccessProtocol(accessProtocol);
+//			}
+//			inter.setAddress(i.getBASEURL());
+//
+//			rep.getInterfaces().add(inter);
+//		}
+//
+//		// TODO ask to fix schema
+//		List<Serializable> list = profile.getBODY().getSTATUS().getContent();
+//
+//		for (int i = 0; i < list.size(); i++) {
+//			Object o = list.get(i);
+//
+//			if (o instanceof JAXBElement) {
+//				JAXBElement e = (JAXBElement) o;
+//				if (e.getName().toString().equals("NUMBER_OF_OBJECTS")) {
+//					BigInteger bint = (BigInteger) e.getValue();
+//					rep.setNumberOfObjects(bint.intValue());
+//				} else if (e.getName().toString().equals(
+//						"HANDLED_DATASTRUCTURE")) {
+//					BigInteger bint = (BigInteger) e.getValue();
+//					rep.setHandledDatastructure(bint.intValue());
+//				} else if (e.getName().toString().equals("USED_DISKSPACE")) {
+//					BigInteger bint = (BigInteger) e.getValue();
+//					rep.setUsedDiskspace(bint.intValue());
+//				} else if (e.getName().toString().equals("LAST_UPDATE")) {
+//					LASTUPDATEType lastUpdate = (LASTUPDATEType) e.getValue();
+//					Date d = ConversionUtils.toDate(lastUpdate.getValue());
+//					rep.setLastUpdate(d);
+//				}
+//			}
+//		}
+//
+//		// BODY/QOS
+//		String availability = profile.getBODY().getQOS().getAVAILABILITY();
+//		if (availability != null)
+//			rep.setAvailability(availability);
+//
+//		String capacity = profile.getBODY().getQOS().getCAPACITY();
+//		if (capacity != null)
+//			rep.setCapacity(capacity);
+//
+//		String responseTime = profile.getBODY().getQOS().getRESPONSETIME();
+//		if (responseTime != null)
+//			rep.setResponseTime(Integer.getInteger(responseTime));
+//
+//		// blackboard
+//		BLACKBOARD bl = profile.getBODY().getBLACKBOARD();
+//		if (bl != null) {
+//			RepositoryBlackboard repBl = new RepositoryBlackboard();
+//			if (bl.getLASTREQUEST() != null)
+//				repBl.setLastrequest(bl.getLASTREQUEST());
+//
+//			if (bl.getLASTRESPONSE() != null)
+//				repBl.setLastresponse(bl.getLASTRESPONSE());
+//
+//			for (MESSAGE m : bl.getMESSAGE()) {
+//				Action action = Action.getAction(m.getACTION().value());
+//				ActionStatus actionStatus = ActionStatus.getActionStatus
+//					(m.getACTIONSTATUS().value());
+//				String id = m.getId() == null ? "" : m.getId();
+//
+//				RepositoryBlackboardMessage rbm = new RepositoryBlackboardMessage(
+//						id, action, actionStatus);
+//
+//				for (PARAMETERS param : m.getPARAMETERS()) {
+//					rbm.getParameters().add(param.getName());
+//				}
+//				repBl.getMessages().add(rbm);
+//			}
+//			rep.setBlackboard(repBl);
+//		}
+//		
+//		if (profile.getBODY().getCONFIGURATION().getDATASOURCEAGGREGATED() != null) {
+//			rep.setDatasourceAggregated(new Boolean(profile.getBODY().getCONFIGURATION().getDATASOURCEAGGREGATED()));
+//		} else {
+//			rep.setDatasourceAggregated(false);
+//		}
+//		
+//		rep.setDatasourceType(profile.getBODY().getCONFIGURATION().getDATASOURCETYPE());
+//		rep.setDatasourceAggregatorId(profile.getBODY().getCONFIGURATION().getDATASOURCEAGGREGATORID());
+//		
+//		if (profile.getBODY().getCONFIGURATION().getDATASOURCEORIGINALID() != null) {
+//			rep.setDatasourceOriginalIdProvenance(profile.getBODY().getCONFIGURATION().getDATASOURCEORIGINALID().getProvenance());
+//			rep.setDatasourceOriginalIdValue(profile.getBODY().getCONFIGURATION().getDATASOURCEORIGINALID().getValue());
+//		}
+//		
+//		if (profile.getBODY().getCONFIGURATION().getDATASOURCECOMPLIANCEDEGREE() != null) {
+//			rep.setDatasourceComplianceDegreeEncoding(profile.getBODY().getCONFIGURATION().getDATASOURCECOMPLIANCEDEGREE().getEncoding());
+//			rep.setDatasourceComplianceDegreeValue(profile.getBODY().getCONFIGURATION().getDATASOURCECOMPLIANCEDEGREE().getValue());
+//		}
+//		
+//		if (profile.getBODY().getCONFIGURATION().getDATACOLLS() != null && 
+//				profile.getBODY().getCONFIGURATION().getDATACOLLS().getDATACOLL() != null) {			
+//			
+//			for (DATACOLLType dataCollType : profile.getBODY().getCONFIGURATION().getDATACOLLS().getDATACOLL()) {				
+//				DataCollectionType dataCollectionType = new DataCollectionType();
+//				dataCollectionType.setGroup(dataCollType.getGroup());
+//				dataCollectionType.setId(dataCollType.getId());
+//				dataCollectionType.setLabel(dataCollType.getLabel());
+//				
+//				if (dataCollType.getINTERFACE() != null) {
+//					DataCollectionInterface dataCollectionInterface = new DataCollectionInterface();
+//					dataCollectionInterface.setBaseUrl(dataCollType.getINTERFACE().getBASEURL());
+//					dataCollectionInterface.setFilter(dataCollType.getINTERFACE().getFILTER());
+//					dataCollectionInterface.setFormat(dataCollType.getINTERFACE().getFORMAT());					
+//									
+//					if (dataCollType.getINTERFACE().getACCESSPROTOCOL() != null) {
+//						DataCollectionAccessProtocol dataCollectionAccessProtocol =  new DataCollectionAccessProtocol();
+//						dataCollectionAccessProtocol.setUsername(dataCollType.getINTERFACE().getACCESSPROTOCOL().getUsername());
+//						dataCollectionAccessProtocol.setPassword(dataCollType.getINTERFACE().getACCESSPROTOCOL().getPassword());
+//						dataCollectionAccessProtocol.setValue(dataCollType.getINTERFACE().getACCESSPROTOCOL().getValue());	
+//						dataCollectionInterface.setProtocol(dataCollectionAccessProtocol);
+//					}					
+//					dataCollectionType.setDataCollectionInterface(dataCollectionInterface);					
+//				}				
+//				rep.getDataCollectionTypes().add(dataCollectionType);
+//			}								
+//		}
+//		
+//		if (profile.getBODY().getCONFIGURATION().getENVIRONMENTS() != null && profile.getBODY().getCONFIGURATION().getENVIRONMENTS().getENVIRONMENT() != null)
+//			rep.getEnvironments().addAll(profile.getBODY().getCONFIGURATION().getENVIRONMENTS().getENVIRONMENT());
+//		
+//				
+		return rep;
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((RepositorySearchCriteria) criteria);
+	}
+
+	public String toXQueryString(RepositorySearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		String xQuery = collection; // "for $x in
+		List<String> predicates = new ArrayList<String>();
+
+		if (criteria != null) {
+			if (criteria.getContains() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/OFFICIAL_NAME[contains(lower-case(.), \""
+								+ criteria.getContains().toLowerCase() + "\")]");
+			}
+			if (criteria.getStartsWith() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/OFFICIAL_NAME[starts-with(lower-case(.), \""
+								+ criteria.getStartsWith().toLowerCase()
+								+ "\")]");
+			}
+
+			if (criteria.getEndsWith() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/OFFICIAL_NAME[ends-with(lower-case(.), \""
+								+ criteria.getStartsWith().toLowerCase()
+								+ "\")]");
+			}
+
+			if (criteria.getOfficialName() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/OFFICIAL_NAME[. = \""
+								+ criteria.getOfficialName() + "\"]");
+			}
+
+			if (criteria.getHaveDocuments() != null) {
+				predicates.add("$x//STATUS/NUMBER_OF_OBJECTS[. > 0]");
+			}
+
+			if (criteria.getAdminInfo() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/ADMIN_INFO[. = \""
+								+ criteria.getAdminInfo() + "\"]");
+			}
+
+			if (criteria.getCountry() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/COUNTRY[. = \""
+								+ criteria.getCountry() + "\"]");
+			}
+
+			if (criteria.getRegisteredBy() != null) {
+				predicates
+						.add("($x/RESOURCE_PROFILE/BODY/CONFIGURATION/REGISTERED_BY[. = \""
+								+ criteria.getRegisteredBy()
+								+ "\"] or $x/RESOURCE_PROFILE/BODY/CONFIGURATION/ADMIN_INFO[. = \""
+								+ criteria.getRegisteredBy() + "\"])");
+			}
+
+			if (criteria.isVerified()) {
+
+				predicates
+						.add("(if ($x/RESOURCE_PROFILE/BODY/CONFIGURATION/EXTRA_FIELDS) then $x/RESOURCE_PROFILE/BODY/CONFIGURATION/EXTRA_FIELDS/FIELD[key = \"VERIFIED\"]/value[. = \""
+								+ "YES" + "\"] else true())");
+
+			}
+
+			for (int i = 0; i < predicates.size(); i++) {
+				String predicate = predicates.get(i);
+
+				if (i > 0)
+					xQuery += " and ";
+				else
+					xQuery += " where ";
+
+				xQuery += predicate;
+			}
+		}
+
+		xQuery += " return $x";
+		return xQuery;
+
+	}
+
+	public String toXQueryString(Repository repository) {
+		String xQuery = collection; // "for $x in
+		xQuery += " let $date := xs:date($x/RESOURCE_PROFILE/BODY/CONFIGURATION/EXTRA_FIELDS/FIELD[key = \"REGISTER_DATE\"]/value)";
+//		List<String> predicates = new ArrayList<String>();
+//
+//		if (repository != null) {
+//			if (repository.getId() != null) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/HEADER/RESOURCE_IDENTIFIER[@value = \""
+//								+ repository.getId() + "\"]");
+//			}
+//			if (repository.getOfficialName() != null) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/OFFICIAL_NAME[. = \""
+//								+ repository.getOfficialName() + "\"]");
+//			}
+//			if (repository.getEnglishName() != null) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/ENGLISH_NAME[. = \""
+//								+ repository.getEnglishName() + "\"]");
+//			}
+//			if (repository.getCountry() != null) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/COUNTRY[. = \""
+//								+ repository.getCountry() + "\"]");
+//			}
+//			if (repository.getEntryUrl() != null) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/ENTRY_URL[. = \""
+//								+ repository.getEntryUrl() + "\"]");
+//			}
+//			if (repository.getIconUrl() != null) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/ICON_URL[@value = \""
+//								+ repository.getIconUrl() + "\"]");
+//			}
+//			if (repository.getRegistrationDate() != null) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/REGISTRATION_DATE[@value = \""
+//								+ ConversionUtils.DateToString(repository
+//										.getRegistrationDate()) + "\"]");
+//			}
+//			if (repository.getNumberOfObjects() != 0) {
+//				predicates
+//						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/NUMBER_OF_OBJECTS[@value ="
+//								+ repository.getNumberOfObjects() + "]");
+//			}
+//			
+//			for (int i = 0; i < predicates.size(); i++) {
+//				String predicate = predicates.get(i);
+//
+//				if (i > 0)
+//					xQuery += " and ";
+//				else
+//					xQuery += " where ";
+//
+//				xQuery += predicate;
+//			}
+//		}
+//
+//		xQuery += " return $x";
+
+		return xQuery;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATASOURCECOMPLIANCEDEGREEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATASOURCECOMPLIANCEDEGREEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/DATASOURCECOMPLIANCEDEGREEType.java	(revision 48242)
@@ -0,0 +1,101 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * Type for the datasource compliance degree with
+ * 				regards to guidelines.
+ * 				Guidlines are to be referred in the encoding
+ * 				attribute.
+ * 
+ * <p>Java class for DATASOURCE_COMPLIANCE_DEGREEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATASOURCE_COMPLIANCE_DEGREEType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *       &lt;attribute name="encoding" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATASOURCE_COMPLIANCE_DEGREEType", propOrder = {
+    "value"
+})
+public class DATASOURCECOMPLIANCEDEGREEType {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute
+    @XmlSchemaType(name = "anySimpleType")
+    protected String encoding;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the encoding property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getEncoding() {
+        return encoding;
+    }
+
+    /**
+     * Sets the value of the encoding property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setEncoding(String value) {
+        this.encoding = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapMapEntryType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapMapEntryType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapMapEntryType.java	(revision 48242)
@@ -0,0 +1,104 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MapMapEntryType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MapMapEntryType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="key" type="{http://www.w3.org/2001/XMLSchema}anyType"/>
+ *         &lt;element name="value" type="{}MapEntryType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MapMapEntryType", propOrder = {
+    "key",
+    "value"
+})
+public class MapMapEntryType {
+
+    @XmlElement(required = true)
+    protected Object key;
+    protected List<MapEntryType> value;
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Object }
+     *     
+     */
+    public Object getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Object }
+     *     
+     */
+    public void setKey(Object value) {
+        this.key = value;
+    }
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the value property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getValue().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MapEntryType }
+     * 
+     * 
+     */
+    public List<MapEntryType> getValue() {
+        if (value == null) {
+            value = new ArrayList<MapEntryType>();
+        }
+        return this.value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapMapType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapMapType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapMapType.java	(revision 48242)
@@ -0,0 +1,75 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MapMapType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MapMapType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="mapEntry" type="{}MapMapEntryType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MapMapType", propOrder = {
+    "mapEntry"
+})
+public class MapMapType {
+
+    protected List<MapMapEntryType> mapEntry;
+
+    /**
+     * Gets the value of the mapEntry property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the mapEntry property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMapEntry().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MapMapEntryType }
+     * 
+     * 
+     */
+    public List<MapMapEntryType> getMapEntry() {
+        if (mapEntry == null) {
+            mapEntry = new ArrayList<MapMapEntryType>();
+        }
+        return this.mapEntry;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SUPPORTEDLOCALEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SUPPORTEDLOCALEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SUPPORTEDLOCALEType.java	(revision 48242)
@@ -0,0 +1,97 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SUPPORTED_LOCALEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SUPPORTED_LOCALEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="LOCALE" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="DEFAULT" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SUPPORTED_LOCALEType", propOrder = {
+    "locale"
+})
+public class SUPPORTEDLOCALEType {
+
+    @XmlElement(name = "LOCALE", required = true)
+    protected String locale;
+    @XmlAttribute(name = "DEFAULT")
+    protected Boolean _default;
+
+    /**
+     * Gets the value of the locale property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLOCALE() {
+        return locale;
+    }
+
+    /**
+     * Sets the value of the locale property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLOCALE(String value) {
+        this.locale = value;
+    }
+
+    /**
+     * Gets the value of the default property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isDEFAULT() {
+        return _default;
+    }
+
+    /**
+     * Sets the value of the default property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setDEFAULT(Boolean value) {
+        this._default = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SearchableTypeType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SearchableTypeType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SearchableTypeType.java	(revision 48242)
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SearchableTypeType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="SearchableTypeType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="date"/>
+ *     &lt;enumeration value="plain"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "SearchableTypeType")
+@XmlEnum
+public enum SearchableTypeType {
+
+    @XmlEnumValue("date")
+    DATE("date"),
+    @XmlEnumValue("plain")
+    PLAIN("plain");
+    private final String value;
+
+    SearchableTypeType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static SearchableTypeType fromValue(String v) {
+        for (SearchableTypeType c: SearchableTypeType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACTION.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACTION.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/ACTION.java	(revision 48242)
@@ -0,0 +1,53 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ACTION.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="ACTION">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="CREATE"/>
+ *     &lt;enumeration value="DELETE"/>
+ *     &lt;enumeration value="UPDATE"/>
+ *     &lt;enumeration value="MANAGE"/>
+ *     &lt;enumeration value="RELEASE"/>
+ *     &lt;enumeration value="CANCEL"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "ACTION")
+@XmlEnum
+public enum ACTION {
+
+    CREATE,
+    DELETE,
+    UPDATE,
+    MANAGE,
+    RELEASE,
+    CANCEL;
+
+    public String value() {
+        return name();
+    }
+
+    public static ACTION fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/BLACKBOARD.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/BLACKBOARD.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/BLACKBOARD.java	(revision 48242)
@@ -0,0 +1,132 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BLACKBOARD complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BLACKBOARD">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="LAST_REQUEST" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="LAST_RESPONSE" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="MESSAGE" type="{}MESSAGE" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BLACKBOARD", propOrder = {
+    "lastrequest",
+    "lastresponse",
+    "message"
+})
+public class BLACKBOARD {
+
+    @XmlElement(name = "LAST_REQUEST")
+    protected String lastrequest;
+    @XmlElement(name = "LAST_RESPONSE")
+    protected String lastresponse;
+    @XmlElement(name = "MESSAGE")
+    protected List<MESSAGE> message;
+
+    /**
+     * Gets the value of the lastrequest property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLASTREQUEST() {
+        return lastrequest;
+    }
+
+    /**
+     * Sets the value of the lastrequest property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLASTREQUEST(String value) {
+        this.lastrequest = value;
+    }
+
+    /**
+     * Gets the value of the lastresponse property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLASTRESPONSE() {
+        return lastresponse;
+    }
+
+    /**
+     * Sets the value of the lastresponse property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLASTRESPONSE(String value) {
+        this.lastresponse = value;
+    }
+
+    /**
+     * Gets the value of the message property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the message property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMESSAGE().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MESSAGE }
+     * 
+     * 
+     */
+    public List<MESSAGE> getMESSAGE() {
+        if (message == null) {
+            message = new ArrayList<MESSAGE>();
+        }
+        return this.message;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/COLLECTIONSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/COLLECTIONSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/COLLECTIONSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for COLLECTIONSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="COLLECTIONSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="COLLECTION" type="{}COLLECTIONType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "COLLECTIONSType", propOrder = {
+    "collection"
+})
+public class COLLECTIONSType {
+
+    @XmlElement(name = "COLLECTION")
+    protected List<COLLECTIONType> collection;
+
+    /**
+     * Gets the value of the collection property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the collection property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getCOLLECTION().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link COLLECTIONType }
+     * 
+     * 
+     */
+    public List<COLLECTIONType> getCOLLECTION() {
+        if (collection == null) {
+            collection = new ArrayList<COLLECTIONType>();
+        }
+        return this.collection;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RECOMMENDATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RECOMMENDATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RECOMMENDATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RECOMMENDATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RECOMMENDATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="recommendation" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RECOMMENDATIONType")
+public class RECOMMENDATIONType {
+
+    @XmlAttribute
+    protected String recommendation;
+
+    /**
+     * Gets the value of the recommendation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getRecommendation() {
+        return recommendation;
+    }
+
+    /**
+     * Sets the value of the recommendation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setRecommendation(String value) {
+        this.recommendation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/MANAGERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/MANAGERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/MANAGERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MANAGERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MANAGERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="manager" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MANAGERType")
+public class MANAGERType {
+
+    @XmlAttribute
+    protected String manager;
+
+    /**
+     * Gets the value of the manager property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getManager() {
+        return manager;
+    }
+
+    /**
+     * Sets the value of the manager property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setManager(String value) {
+        this.manager = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SEARCHABLEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SEARCHABLEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SEARCHABLEType.java	(revision 48242)
@@ -0,0 +1,458 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SEARCHABLEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SEARCHABLEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="NAME" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="TYPE" type="{}SearchableTypeType"/>
+ *         &lt;element name="INDEX_TYPE" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="DESCRIPTION_MAP" type="{}MapType"/>
+ *         &lt;element name="SHORT_DESCRIPTION_MAP" type="{}MapType"/>
+ *         &lt;element name="IN_SEARCH" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="IN_REFINE" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="IN_BROWSE" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         &lt;element name="SEARCH_RANK" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         &lt;element name="REFINE_RANK" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         &lt;element name="BROWSE_RANK" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         &lt;element name="SEARCH_VOCABULARY" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="BROWSE_VOCABULARY" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="FROM_YEAR" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
+ *         &lt;element name="TO_YEAR" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
+ *         &lt;element name="PERIOD_BACK_MAP" type="{}MapMapType" minOccurs="0"/>
+ *       &lt;/all>
+ *       &lt;attribute name="hidden" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SEARCHABLEType", propOrder = {
+
+})
+public class SEARCHABLEType {
+
+    @XmlElement(name = "NAME", required = true)
+    protected String name;
+    @XmlElement(name = "TYPE", required = true)
+    protected SearchableTypeType type;
+    @XmlElement(name = "INDEX_TYPE", required = true)
+    protected String indextype;
+    @XmlElement(name = "DESCRIPTION_MAP", required = true)
+    protected MapType descriptionmap;
+    @XmlElement(name = "SHORT_DESCRIPTION_MAP", required = true)
+    protected MapType shortdescriptionmap;
+    @XmlElement(name = "IN_SEARCH")
+    protected boolean insearch;
+    @XmlElement(name = "IN_REFINE")
+    protected boolean inrefine;
+    @XmlElement(name = "IN_BROWSE")
+    protected boolean inbrowse;
+    @XmlElement(name = "SEARCH_RANK")
+    protected int searchrank;
+    @XmlElement(name = "REFINE_RANK")
+    protected int refinerank;
+    @XmlElement(name = "BROWSE_RANK")
+    protected int browserank;
+    @XmlElement(name = "SEARCH_VOCABULARY")
+    protected String searchvocabulary;
+    @XmlElement(name = "BROWSE_VOCABULARY")
+    protected String browsevocabulary;
+    @XmlElement(name = "FROM_YEAR")
+    protected Integer fromyear;
+    @XmlElement(name = "TO_YEAR")
+    protected Integer toyear;
+    @XmlElement(name = "PERIOD_BACK_MAP")
+    protected MapMapType periodbackmap;
+    @XmlAttribute
+    protected Boolean hidden;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNAME() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNAME(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SearchableTypeType }
+     *     
+     */
+    public SearchableTypeType getTYPE() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SearchableTypeType }
+     *     
+     */
+    public void setTYPE(SearchableTypeType value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the indextype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getINDEXTYPE() {
+        return indextype;
+    }
+
+    /**
+     * Sets the value of the indextype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setINDEXTYPE(String value) {
+        this.indextype = value;
+    }
+
+    /**
+     * Gets the value of the descriptionmap property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapType }
+     *     
+     */
+    public MapType getDESCRIPTIONMAP() {
+        return descriptionmap;
+    }
+
+    /**
+     * Sets the value of the descriptionmap property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapType }
+     *     
+     */
+    public void setDESCRIPTIONMAP(MapType value) {
+        this.descriptionmap = value;
+    }
+
+    /**
+     * Gets the value of the shortdescriptionmap property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapType }
+     *     
+     */
+    public MapType getSHORTDESCRIPTIONMAP() {
+        return shortdescriptionmap;
+    }
+
+    /**
+     * Sets the value of the shortdescriptionmap property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapType }
+     *     
+     */
+    public void setSHORTDESCRIPTIONMAP(MapType value) {
+        this.shortdescriptionmap = value;
+    }
+
+    /**
+     * Gets the value of the insearch property.
+     * 
+     */
+    public boolean isINSEARCH() {
+        return insearch;
+    }
+
+    /**
+     * Sets the value of the insearch property.
+     * 
+     */
+    public void setINSEARCH(boolean value) {
+        this.insearch = value;
+    }
+
+    /**
+     * Gets the value of the inrefine property.
+     * 
+     */
+    public boolean isINREFINE() {
+        return inrefine;
+    }
+
+    /**
+     * Sets the value of the inrefine property.
+     * 
+     */
+    public void setINREFINE(boolean value) {
+        this.inrefine = value;
+    }
+
+    /**
+     * Gets the value of the inbrowse property.
+     * 
+     */
+    public boolean isINBROWSE() {
+        return inbrowse;
+    }
+
+    /**
+     * Sets the value of the inbrowse property.
+     * 
+     */
+    public void setINBROWSE(boolean value) {
+        this.inbrowse = value;
+    }
+
+    /**
+     * Gets the value of the searchrank property.
+     * 
+     */
+    public int getSEARCHRANK() {
+        return searchrank;
+    }
+
+    /**
+     * Sets the value of the searchrank property.
+     * 
+     */
+    public void setSEARCHRANK(int value) {
+        this.searchrank = value;
+    }
+
+    /**
+     * Gets the value of the refinerank property.
+     * 
+     */
+    public int getREFINERANK() {
+        return refinerank;
+    }
+
+    /**
+     * Sets the value of the refinerank property.
+     * 
+     */
+    public void setREFINERANK(int value) {
+        this.refinerank = value;
+    }
+
+    /**
+     * Gets the value of the browserank property.
+     * 
+     */
+    public int getBROWSERANK() {
+        return browserank;
+    }
+
+    /**
+     * Sets the value of the browserank property.
+     * 
+     */
+    public void setBROWSERANK(int value) {
+        this.browserank = value;
+    }
+
+    /**
+     * Gets the value of the searchvocabulary property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSEARCHVOCABULARY() {
+        return searchvocabulary;
+    }
+
+    /**
+     * Sets the value of the searchvocabulary property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSEARCHVOCABULARY(String value) {
+        this.searchvocabulary = value;
+    }
+
+    /**
+     * Gets the value of the browsevocabulary property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getBROWSEVOCABULARY() {
+        return browsevocabulary;
+    }
+
+    /**
+     * Sets the value of the browsevocabulary property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setBROWSEVOCABULARY(String value) {
+        this.browsevocabulary = value;
+    }
+
+    /**
+     * Gets the value of the fromyear property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getFROMYEAR() {
+        return fromyear;
+    }
+
+    /**
+     * Sets the value of the fromyear property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setFROMYEAR(Integer value) {
+        this.fromyear = value;
+    }
+
+    /**
+     * Gets the value of the toyear property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getTOYEAR() {
+        return toyear;
+    }
+
+    /**
+     * Sets the value of the toyear property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setTOYEAR(Integer value) {
+        this.toyear = value;
+    }
+
+    /**
+     * Gets the value of the periodbackmap property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapMapType }
+     *     
+     */
+    public MapMapType getPERIODBACKMAP() {
+        return periodbackmap;
+    }
+
+    /**
+     * Sets the value of the periodbackmap property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapMapType }
+     *     
+     */
+    public void setPERIODBACKMAP(MapMapType value) {
+        this.periodbackmap = value;
+    }
+
+    /**
+     * Gets the value of the hidden property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isHidden() {
+        if (hidden == null) {
+            return false;
+        } else {
+            return hidden;
+        }
+    }
+
+    /**
+     * Sets the value of the hidden property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setHidden(Boolean value) {
+        this.hidden = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/MANAGERSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/MANAGERSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/MANAGERSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MANAGERSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MANAGERSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="MANAGER" type="{}MANAGERType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MANAGERSType", propOrder = {
+    "manager"
+})
+public class MANAGERSType {
+
+    @XmlElement(name = "MANAGER")
+    protected List<MANAGERType> manager;
+
+    /**
+     * Gets the value of the manager property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the manager property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMANAGER().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MANAGERType }
+     * 
+     * 
+     */
+    public List<MANAGERType> getMANAGER() {
+        if (manager == null) {
+            manager = new ArrayList<MANAGERType>();
+        }
+        return this.manager;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/PARAMETERS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/PARAMETERS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/PARAMETERS.java	(revision 48242)
@@ -0,0 +1,94 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for PARAMETERS complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PARAMETERS">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PARAMETERS", propOrder = {
+    "value"
+})
+public class PARAMETERS {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute(required = true)
+    protected String name;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/FieldType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/FieldType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/FieldType.java	(revision 48242)
@@ -0,0 +1,96 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for FieldType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FieldType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="key" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FieldType", propOrder = {
+
+})
+public class FieldType {
+
+    @XmlElement(required = true)
+    protected String key;
+    @XmlElement(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setKey(String value) {
+        this.key = value;
+    }
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/repository/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2012.03.27 at 11:16:38 AM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.repository;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="RepositoryServiceResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="CommunityDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/STATUS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/STATUS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/STATUS.java	(revision 48242)
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+package gr.uoa.di.driver.xml.ws;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all minOccurs="0">
+ *         &lt;element ref="{}HANDLED_DATASTRUCTURE"/>
+ *         &lt;element ref="{}USED_DISKSPACE"/>
+ *         &lt;element name="LAST_UPDATE" type="{}LAST_UPDATEType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "content"
+})
+@XmlRootElement(name = "STATUS")
+public class STATUS {
+
+    @XmlElementRefs({
+        @XmlElementRef(name = "HANDLED_DATASTRUCTURE", type = JAXBElement.class),
+        @XmlElementRef(name = "LAST_UPDATE", type = JAXBElement.class),
+        @XmlElementRef(name = "USED_DISKSPACE", type = JAXBElement.class)
+    })
+    @XmlMixed
+    protected List<Serializable> content;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the content property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * {@link JAXBElement }{@code <}{@link Integer }{@code >}
+     * {@link JAXBElement }{@code <}{@link LASTUPDATEType }{@code >}
+     * {@link JAXBElement }{@code <}{@link Integer }{@code >}
+     * 
+     * 
+     */
+    public List<Serializable> getContent() {
+        if (content == null) {
+            content = new ArrayList<Serializable>();
+        }
+        return this.content;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/UserProfileXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/UserProfileXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/UserProfileXmlConverter.java	(revision 48242)
@@ -0,0 +1,555 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.functionality.CommunityRegistration;
+import eu.dnetlib.domain.functionality.SavedQuery;
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.domain.functionality.UserProfileSearchCriteria;
+import eu.dnetlib.domain.functionality.UserStore;
+import gr.uoa.di.driver.xml.userprofile.COMMUNITYREGISTRATIONType;
+import gr.uoa.di.driver.xml.userprofile.FILTERType;
+import gr.uoa.di.driver.xml.userprofile.ObjectFactory;
+import gr.uoa.di.driver.xml.userprofile.QUERYType.COLLECTIONID;
+import gr.uoa.di.driver.xml.userprofile.QUERYType.COMMUNITYID;
+import gr.uoa.di.driver.xml.userprofile.RESOURCEPROFILE;
+import gr.uoa.di.driver.xml.userprofile.SAVEDQUERYType;
+
+public class UserProfileXmlConverter extends AbstractConverter<UserProfile> implements
+		ResourceToXmlConverter<UserProfile> {
+
+	private ObjectFactory of = new ObjectFactory();
+	private static Logger logger = Logger
+			.getLogger(UserProfileXmlConverter.class);
+
+	public UserProfileXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public String ObjectToXml(UserProfile user) throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		// header info
+		profile.setHEADER(of.createHEADERType());
+
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+		profile.getHEADER().setRESOURCEIDENTIFIER(
+				of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+
+		profile.getHEADER().getRESOURCETYPE().setValue(user.getResourceType());
+		profile.getHEADER().getRESOURCEKIND().setValue(user.getResourceKind());
+
+		if (user.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils
+							.DateToString(user.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue("");
+
+		if (user.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					user.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (user.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					user.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+		
+		profile.setBODY(of.createBODYType());
+		profile.getBODY().setSTATUS("");
+		profile.getBODY().setSECURITYPARAMETERS(
+				of.createSECURITYPARAMETERSType());
+		// TODO security parameters
+		profile.getBODY().getSECURITYPARAMETERS().setSECURITYPARAMETER("value");
+		profile.getBODY().setCONFIGURATION(of.createCONFIGURATIONType());
+
+		// general info
+		profile.getBODY().getCONFIGURATION().setPERSONALINFO(
+				of.createPERSONALINFOType());
+
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().setEMAIL(
+				of.createPERSONALINFOTypeEMAIL());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().setINSTITUTION(
+				of.createPERSONALINFOTypeINSTITUTION());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().setFIRSTNAME(
+				of.createPERSONALINFOTypeFIRSTNAME());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().setLASTNAME(
+				of.createPERSONALINFOTypeLASTNAME());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().setACTIVATIONID(
+				of.createPERSONALINFOTypeACTIVATIONID());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().setACTIVE(
+				of.createPERSONALINFOTypeACTIVE());
+
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().getEMAIL()
+				.setValue(user.getEmail());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().getINSTITUTION()
+				.setValue(user.getInstitution());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().getFIRSTNAME()
+				.setValue(user.getFirstname());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().getLASTNAME()
+				.setValue(user.getLastname());
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO()
+				.getACTIVATIONID().setValue(user.getActivationId());
+
+		profile.getBODY().getCONFIGURATION().getPERSONALINFO().getACTIVE()
+				.setValue(user.getActive());
+
+		// recommendations
+		profile.getBODY().getCONFIGURATION().setRECOMMENDATION(
+				of.createRECOMMENDATIONType());
+		profile.getBODY().getCONFIGURATION().getRECOMMENDATION()
+				.setRECOMMENDATIONS(of.createRECOMMENDATIONSType());
+
+		if (user.getLastNotificationDate() != null)
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATION()
+					.setLASTNOTIFICATION(
+							ConversionUtils.DateToString(user
+									.getLastNotificationDate()));
+		if (user.getRecommendationPeriod() != null)
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATION().setPERIOD(
+					user.getRecommendationPeriod());
+		if (user.getRecommendationSendEmail() != null)
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATION()
+					.setSENDEMAIL(user.getRecommendationSendEmail());
+
+		for (String id : user.getRecommendations()) {
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATION()
+					.getRECOMMENDATIONS().getRECOMMENDATIONID().add(id);
+		}
+
+		// communities
+		profile.getBODY().getCONFIGURATION().setCOMMUNITIES(
+				of.createCOMMUNITIESType());
+
+		for (CommunityRegistration commReg : user.getCommunities()) {
+			COMMUNITYREGISTRATIONType regType = of
+					.createCOMMUNITYREGISTRATIONType();
+
+			regType.setAlertOnChange(commReg.isAlertOnChange());
+			regType.setCommunityId(commReg.getCommunityId());
+			regType.setInsertInQueries(commReg.getIncludeInQueries());
+
+			profile.getBODY().getCONFIGURATION().getCOMMUNITIES()
+					.getCOMMUNITYREGISTRATION().add(regType);
+		}
+
+		// documents
+		if (user.getDocumentIds().size() != 0) {
+			profile.getBODY().getCONFIGURATION().setDOCUMENTS(
+					of.createDOCUMENTSType());
+
+			for (String documentId : user.getDocumentIds())
+				profile.getBODY().getCONFIGURATION().getDOCUMENTS()
+						.getDOCUMENTID().add(documentId);
+		}
+
+		// user store
+		if (user.getStore() != null) {
+
+			profile.getBODY().getCONFIGURATION().setUSERSTORE(
+					of.createSTOREType());
+			profile.getBODY().getCONFIGURATION().getUSERSTORE().setServiceURL(
+					user.getStore().getStoreServiceURL());
+			profile.getBODY().getCONFIGURATION().getUSERSTORE().setStoreID(
+					user.getStore().getStoreID());
+
+		}
+
+		// user image
+		if (user.getUserPhotoID() != null)
+			profile.getBODY().getCONFIGURATION().setUserImageID(
+					user.getUserPhotoID());
+
+		// FILTER
+
+		if (user.getFilter() != null) {
+
+			FILTERType filter = of.createFILTERType();
+			filter.setQuery(of.createSAVEDQUERYType());
+			filter.getQuery().setAlertOnChange(
+					user.getFilter().isAlertOnChange());
+			filter.getQuery().getHashValue().addAll(
+					user.getFilter().getHashValues());
+
+			filter.getQuery().setQuery(of.createQUERYType());
+			filter.getQuery().getQuery().setCQL(of.createQUERYTypeCQL());
+
+			filter.getQuery().getQuery().getCQL().setValue(
+					user.getFilter().getCqlText());
+
+			if (user.getFilter().getRefineText() != null) {
+
+				filter.getQuery().getQuery().setREFINE(
+						of.createQUERYTypeREFINE());
+				filter.getQuery().getQuery().getREFINE().setValue(
+						user.getFilter().getRefineText());
+
+			}
+
+			if (user.getFilter().getCollectionIds() != null) {
+				for (String id : user.getFilter().getCollectionIds()) {
+					COLLECTIONID colId = of.createQUERYTypeCOLLECTIONID();
+
+					colId.setCollectionId(id);
+
+					filter.getQuery().getQuery().getCOLLECTIONID().add(colId);
+				}
+			}
+
+			if (user.getFilter().getCommunityIds() != null) {
+				for (String id : user.getFilter().getCommunityIds()) {
+					COMMUNITYID comId = of.createQUERYTypeCOMMUNITYID();
+
+					comId.setCommunityId(id);
+
+					filter.getQuery().getQuery().getCOMMUNITYID().add(comId);
+				}
+			}
+
+			profile.getBODY().getCONFIGURATION().setFILTER(filter);
+
+		}
+
+		// saved queries
+		for (SavedQuery sQuery : user.getSavedQueries()) {
+
+			SAVEDQUERYType savedQuery = of.createSAVEDQUERYType();
+
+			savedQuery.setQuery(of.createQUERYType());
+			savedQuery.getQuery().setCQL(of.createQUERYTypeCQL());
+
+			savedQuery.setAlertOnChange(sQuery.isAlertOnChange());
+			savedQuery.getHashValue().addAll(sQuery.getHashValues());
+
+			savedQuery.getQuery().getCQL().setValue(sQuery.getCqlText());
+
+			// added for REFINE
+			if (sQuery.getRefineText() != null) {
+				savedQuery.getQuery().setREFINE(of.createQUERYTypeREFINE());
+				savedQuery.getQuery().getREFINE().setValue(
+						sQuery.getRefineText());
+
+			}
+
+			if (sQuery.getCollectionIds() != null) {
+				for (String id : sQuery.getCollectionIds()) {
+					COLLECTIONID colId = of.createQUERYTypeCOLLECTIONID();
+
+					colId.setCollectionId(id);
+
+					savedQuery.getQuery().getCOLLECTIONID().add(colId);
+				}
+			}
+
+			if (sQuery.getCommunityIds() != null) {
+				for (String id : sQuery.getCommunityIds()) {
+					COMMUNITYID comId = of.createQUERYTypeCOMMUNITYID();
+
+					comId.setCommunityId(id);
+
+					savedQuery.getQuery().getCOMMUNITYID().add(comId);
+				}
+			}
+
+			profile.getBODY().getCONFIGURATION().getSAVEDQUERIES().add(
+					savedQuery);
+		}
+
+		this.getMarshaller().marshal(profile, baos);
+
+		return baos.toString();
+	}
+
+	public UserProfile XmlToObject(String xml) throws JAXBException {
+		UserProfile user = new UserProfile();
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		// header info
+		user.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER()
+				.getValue());
+
+		if (profile.getHEADER().getDATEOFCREATION().getValue() != null) {
+			user.setDateOfCreation(ConversionUtils.parseDate(profile
+					.getHEADER().getDATEOFCREATION().getValue()));
+			user.setRegistrationDate(ConversionUtils.parseDate(profile
+					.getHEADER().getDATEOFCREATION().getValue()));
+		}
+		user.setResourceType(profile.getHEADER().getRESOURCETYPE().getValue());
+		user.setResourceKind(profile.getHEADER().getRESOURCEKIND().getValue());
+		user.setResourceUri(profile.getHEADER().getRESOURCEURI().getValue());
+
+		// general info
+		user.setEmail(profile.getBODY().getCONFIGURATION().getPERSONALINFO()
+				.getEMAIL().getValue());
+		user.setFirstname(profile.getBODY().getCONFIGURATION()
+				.getPERSONALINFO().getFIRSTNAME().getValue());
+		user.setLastname(profile.getBODY().getCONFIGURATION().getPERSONALINFO()
+				.getLASTNAME().getValue());
+		user.setInstitution(profile.getBODY().getCONFIGURATION()
+				.getPERSONALINFO().getINSTITUTION().getValue());
+		user.setActivationId(profile.getBODY().getCONFIGURATION()
+				.getPERSONALINFO().getACTIVATIONID().getValue());
+
+		if (profile.getBODY().getCONFIGURATION().getPERSONALINFO().getACTIVE() != null)
+			user.setActive(profile.getBODY().getCONFIGURATION()
+					.getPERSONALINFO().getACTIVE().isValue());
+
+		// image ID
+		if (profile.getBODY().getCONFIGURATION().getUserImageID() != null)
+			user.setUserPhotoID(profile.getBODY().getCONFIGURATION()
+					.getUserImageID());
+
+		// recommendations
+		List<String> ids = profile.getBODY().getCONFIGURATION()
+				.getRECOMMENDATION().getRECOMMENDATIONS().getRECOMMENDATIONID();
+
+		user.setRecommendationPeriod(profile.getBODY().getCONFIGURATION()
+				.getRECOMMENDATION().getPERIOD());
+		user.setRecommendationSendEmail(profile.getBODY().getCONFIGURATION()
+				.getRECOMMENDATION().isSENDEMAIL());
+		if (profile.getBODY().getCONFIGURATION().getRECOMMENDATION()
+				.getLASTNOTIFICATION() != null)
+			user.setLastNotificationDate(ConversionUtils.parseDate(profile
+					.getBODY().getCONFIGURATION().getRECOMMENDATION()
+					.getLASTNOTIFICATION()));
+
+		for (String id : ids) {
+			user.getRecommendations().add(id);
+		}
+
+		// documents
+		if (profile.getBODY().getCONFIGURATION().getDOCUMENTS() != null) {
+
+			List<String> documentIds = profile.getBODY().getCONFIGURATION()
+					.getDOCUMENTS().getDOCUMENTID();
+
+			List<String> docIDs = new ArrayList<String>();
+			for (String docId : documentIds)
+				docIDs.add(docId);
+			user.setDocumentIds(docIDs);
+			
+		}
+
+		// userSTORE
+		if (profile.getBODY().getCONFIGURATION().getUSERSTORE() != null) {
+
+			user.setStore(new UserStore());
+			user.getStore().setStoreServiceURL(
+					profile.getBODY().getCONFIGURATION().getUSERSTORE()
+							.getServiceURL());
+			user.getStore().setStoreID(
+					profile.getBODY().getCONFIGURATION().getUSERSTORE()
+							.getStoreID());
+
+		}
+
+		// communities
+		if (profile.getBODY().getCONFIGURATION().getCOMMUNITIES() != null) {
+			List<COMMUNITYREGISTRATIONType> communities = profile.getBODY()
+					.getCONFIGURATION().getCOMMUNITIES()
+					.getCOMMUNITYREGISTRATION();
+			for (COMMUNITYREGISTRATIONType reg : communities) {
+				CommunityRegistration comReg = new CommunityRegistration();
+
+				comReg.setAlertOnChange(reg.isAlertOnChange());
+				comReg.setCommunityId(reg.getCommunityId());
+				comReg.setIncludeInQueries(reg.isInsertInQueries());
+
+				user.getCommunities().add(comReg);
+			}
+		}
+
+		if (profile.getBODY().getCONFIGURATION().getFILTER() != null
+				&& profile.getBODY().getCONFIGURATION().getFILTER().getQuery()
+						.getQuery().getCQL().getValue() != null) {
+
+			logger.debug("create filter for user");
+
+			FILTERType filter = profile.getBODY().getCONFIGURATION()
+					.getFILTER();
+			SavedQuery sQuery = new SavedQuery();
+
+			sQuery.setCqlText(filter.getQuery().getQuery().getCQL().getValue());
+			logger.debug("SQL TEXT:" + sQuery.getCqlText());
+
+			sQuery.setHashValues(new ArrayList<String>());
+			sQuery.getHashValues().addAll(filter.getQuery().getHashValue());
+
+			sQuery.setAlertOnChange(filter.getQuery().isAlertOnChange());
+
+			if (filter.getQuery().getQuery().getREFINE() != null)
+				sQuery.setRefineText(filter.getQuery().getQuery().getREFINE()
+						.getValue());
+
+			if (filter.getQuery().getQuery().getCOLLECTIONID() != null) {
+
+				List<COLLECTIONID> collectionsIds = filter.getQuery()
+						.getQuery().getCOLLECTIONID();
+				for (COLLECTIONID col : collectionsIds) {
+					sQuery.getCollectionIds().add(col.getCollectionId());
+				}
+			}
+
+			if (filter.getQuery().getQuery().getCOMMUNITYID() != null) {
+
+				List<COMMUNITYID> communityIds = filter.getQuery().getQuery()
+						.getCOMMUNITYID();
+				for (COMMUNITYID com : communityIds) {
+					sQuery.getCommunityIds().add(com.getCommunityId());
+				}
+			}
+			user.setFilter(sQuery);
+
+		}
+
+		// queries
+		List<SAVEDQUERYType> queries = profile.getBODY().getCONFIGURATION()
+				.getSAVEDQUERIES();
+		for (SAVEDQUERYType squery : queries) {
+
+			SavedQuery savedQuery = new SavedQuery();
+
+			savedQuery.setAlertOnChange(squery.isAlertOnChange());
+
+			savedQuery.setCqlText(squery.getQuery().getCQL().getValue());
+
+			if (squery.getQuery().getREFINE() != null)
+				savedQuery.setRefineText(squery.getQuery().getREFINE()
+						.getValue());
+
+			if (squery.getQuery().getCOLLECTIONID() != null) {
+				List<COLLECTIONID> collectionIds = squery.getQuery()
+						.getCOLLECTIONID();
+				for (COLLECTIONID col : collectionIds) {
+					savedQuery.getCollectionIds().add(col.getCollectionId());
+				}
+			}
+
+			if (squery.getQuery().getCOMMUNITYID() != null) {
+				List<COMMUNITYID> communityIds = squery.getQuery()
+						.getCOMMUNITYID();
+				for (COMMUNITYID com : communityIds) {
+					savedQuery.getCommunityIds().add(com.getCommunityId());
+				}
+			}
+
+			savedQuery.setHashValues(new ArrayList<String>());
+			savedQuery.getHashValues().addAll(squery.getHashValue());
+
+			user.getSavedQueries().add(savedQuery);
+		}
+
+		return user;
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((UserProfileSearchCriteria) criteria);
+	}
+
+	public String toXQueryString(UserProfileSearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		String xQuery = "for $x in collection(\"/db/DRIVER/UserDSResources/UserDSResourceType\") ";
+		List<String> predicates = new ArrayList<String>();
+
+		if (criteria.getContains() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/PERSONAL_INFO/EMAIL[contains(lower-case(@value), \""
+							+ criteria.getContains().toLowerCase() + "\")]");
+		}
+
+		if (criteria.getStartsWith() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/PERSONAL_INFO/EMAIL[starts-with(lower-case(@value), \""
+							+ criteria.getStartsWith().toLowerCase() + "\")]");
+		}
+
+		if (criteria.getEndsWith() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/PERSONAL_INFO/EMAIL[ends-with(lower-case(@value), \""
+							+ criteria.getEndsWith().toLowerCase() + "\")]");
+		}
+
+		if (criteria.getEmail() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/PERSONAL_INFO/EMAIL[@value = \""
+							+ criteria.getEmail() + "\"]");
+		}
+
+		if (criteria.getActivationId() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/PERSONAL_INFO/ACTIVATION_ID[@value = \""
+							+ criteria.getActivationId() + "\"]");
+		}
+
+		if (criteria.getActive() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/PERSONAL_INFO/ACTIVE[@value = \""
+							+ criteria.getActive() + "\"]");
+		}
+		
+		if (criteria.getBelongsToCommunity() != null) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/COMMUNITIES/COMMUNITY_REGISTRATION[@communityId = \""
+							+ criteria.getBelongsToCommunity() + "\"]");
+		}
+
+		if (criteria.getIdentities().size() > 0) {
+			xQuery += ", $sec in collection(\"/db/DRIVER/SecurityProfileDSResources/SecurityProfileDSResourceType\")";
+			predicates
+					.add(" $sec/RESOURCE_PROFILE/BODY/CONFIGURATION/resourceId = $x/RESOURCE_PROFILE/HEADER/RESOURCE_IDENTIFIER/@value ");
+
+			String roles = "( ";
+			for (int i = 0; i < criteria.getIdentities().size(); i++) {
+				if (i != 0) {
+					roles += " or ";
+				}
+				roles += " $sec/RESOURCE_PROFILE/BODY/CONFIGURATION/identities/text[ends-with(., \""
+						+ criteria.getIdentities().get(i) + "\")]";
+			}
+			roles += " )";
+			predicates.add(roles);
+		}
+
+		for (CommunityRegistration comReg : criteria.getCommunityRegs()) {
+			predicates
+					.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/COMMUNITIES/COMMUNITY_REGISTRATION[@communityId=\""
+							+ comReg.getCommunityId()
+							+ "\"]"
+							+ "[@alertOnChange=\""
+							+ comReg.isAlertOnChange()
+							+ "\"]");
+		}
+
+		for (int i = 0; i < predicates.size(); i++) {
+			String predicate = predicates.get(i);
+
+			if (i > 0)
+				xQuery += " and ";
+			else
+				xQuery += " where ";
+
+			xQuery += predicate;
+		}
+
+		xQuery += " return $x";
+
+		return xQuery;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/CONFIGURATION.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/CONFIGURATION.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/CONFIGURATION.java	(revision 48242)
@@ -0,0 +1,128 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element ref="{}TYPOLOGY"/>
+ *         &lt;element ref="{}MAX_SIZE_OF_DATASTRUCTURE"/>
+ *         &lt;element ref="{}AVAILABLE_DISKSPACE"/>
+ *         &lt;element ref="{}MAX_NUMBER_OF_DATASTRUCTURE"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+
+})
+@XmlRootElement(name = "CONFIGURATION")
+public class CONFIGURATION {
+
+    @XmlElement(name = "TYPOLOGY", required = true)
+    protected String typology;
+    @XmlElement(name = "MAX_SIZE_OF_DATASTRUCTURE")
+    protected int maxsizeofdatastructure;
+    @XmlElement(name = "AVAILABLE_DISKSPACE")
+    protected int availablediskspace;
+    @XmlElement(name = "MAX_NUMBER_OF_DATASTRUCTURE")
+    protected int maxnumberofdatastructure;
+
+    /**
+     * Gets the value of the typology property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTYPOLOGY() {
+        return typology;
+    }
+
+    /**
+     * Sets the value of the typology property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTYPOLOGY(String value) {
+        this.typology = value;
+    }
+
+    /**
+     * Gets the value of the maxsizeofdatastructure property.
+     * 
+     */
+    public int getMAXSIZEOFDATASTRUCTURE() {
+        return maxsizeofdatastructure;
+    }
+
+    /**
+     * Sets the value of the maxsizeofdatastructure property.
+     * 
+     */
+    public void setMAXSIZEOFDATASTRUCTURE(int value) {
+        this.maxsizeofdatastructure = value;
+    }
+
+    /**
+     * Gets the value of the availablediskspace property.
+     * 
+     */
+    public int getAVAILABLEDISKSPACE() {
+        return availablediskspace;
+    }
+
+    /**
+     * Sets the value of the availablediskspace property.
+     * 
+     */
+    public void setAVAILABLEDISKSPACE(int value) {
+        this.availablediskspace = value;
+    }
+
+    /**
+     * Gets the value of the maxnumberofdatastructure property.
+     * 
+     */
+    public int getMAXNUMBEROFDATASTRUCTURE() {
+        return maxnumberofdatastructure;
+    }
+
+    /**
+     * Sets the value of the maxnumberofdatastructure property.
+     * 
+     */
+    public void setMAXNUMBEROFDATASTRUCTURE(int value) {
+        this.maxnumberofdatastructure = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,72 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="WebInterfaceLayoutResources"/>
+ *             &lt;enumeration value="PendingDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,415 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="NAME">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="OWNER">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="DESCRIPTION">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="COLLECTIONS" type="{}COLLECTIONSType"/>
+ *         &lt;element name="MANAGERS" type="{}MANAGERSType"/>
+ *         &lt;element name="RECOMMENDATIONS" type="{}RECOMMENDATIONSType"/>
+ *         &lt;element name="authoritativeDocuments" type="{}authoritativeDocumentsType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+    "name",
+    "owner",
+    "description",
+    "collections",
+    "managers",
+    "recommendations",
+    "authoritativeDocuments"
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "NAME", required = true)
+    protected CONFIGURATIONType.NAME name;
+    @XmlElement(name = "OWNER", required = true)
+    protected CONFIGURATIONType.OWNER owner;
+    @XmlElement(name = "DESCRIPTION", required = true)
+    protected CONFIGURATIONType.DESCRIPTION description;
+    @XmlElement(name = "COLLECTIONS", required = true)
+    protected COLLECTIONSType collections;
+    @XmlElement(name = "MANAGERS", required = true)
+    protected MANAGERSType managers;
+    @XmlElement(name = "RECOMMENDATIONS", required = true)
+    protected RECOMMENDATIONSType recommendations;
+    @XmlElement(required = true)
+    protected AuthoritativeDocumentsType authoritativeDocuments;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType.NAME }
+     *     
+     */
+    public CONFIGURATIONType.NAME getNAME() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType.NAME }
+     *     
+     */
+    public void setNAME(CONFIGURATIONType.NAME value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the owner property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType.OWNER }
+     *     
+     */
+    public CONFIGURATIONType.OWNER getOWNER() {
+        return owner;
+    }
+
+    /**
+     * Sets the value of the owner property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType.OWNER }
+     *     
+     */
+    public void setOWNER(CONFIGURATIONType.OWNER value) {
+        this.owner = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType.DESCRIPTION }
+     *     
+     */
+    public CONFIGURATIONType.DESCRIPTION getDESCRIPTION() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType.DESCRIPTION }
+     *     
+     */
+    public void setDESCRIPTION(CONFIGURATIONType.DESCRIPTION value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the collections property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link COLLECTIONSType }
+     *     
+     */
+    public COLLECTIONSType getCOLLECTIONS() {
+        return collections;
+    }
+
+    /**
+     * Sets the value of the collections property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link COLLECTIONSType }
+     *     
+     */
+    public void setCOLLECTIONS(COLLECTIONSType value) {
+        this.collections = value;
+    }
+
+    /**
+     * Gets the value of the managers property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MANAGERSType }
+     *     
+     */
+    public MANAGERSType getMANAGERS() {
+        return managers;
+    }
+
+    /**
+     * Sets the value of the managers property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MANAGERSType }
+     *     
+     */
+    public void setMANAGERS(MANAGERSType value) {
+        this.managers = value;
+    }
+
+    /**
+     * Gets the value of the recommendations property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RECOMMENDATIONSType }
+     *     
+     */
+    public RECOMMENDATIONSType getRECOMMENDATIONS() {
+        return recommendations;
+    }
+
+    /**
+     * Sets the value of the recommendations property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RECOMMENDATIONSType }
+     *     
+     */
+    public void setRECOMMENDATIONS(RECOMMENDATIONSType value) {
+        this.recommendations = value;
+    }
+
+    /**
+     * Gets the value of the authoritativeDocuments property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link AuthoritativeDocumentsType }
+     *     
+     */
+    public AuthoritativeDocumentsType getAuthoritativeDocuments() {
+        return authoritativeDocuments;
+    }
+
+    /**
+     * Sets the value of the authoritativeDocuments property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link AuthoritativeDocumentsType }
+     *     
+     */
+    public void setAuthoritativeDocuments(AuthoritativeDocumentsType value) {
+        this.authoritativeDocuments = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class DESCRIPTION {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class NAME {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class OWNER {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/SECURITYPARAMETERSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/SECURITYPARAMETERSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/SECURITYPARAMETERSType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SECURITY_PARAMETERSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SECURITY_PARAMETERSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="SECURITY_PARAMETER" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SECURITY_PARAMETERSType")
+public class SECURITYPARAMETERSType {
+
+    @XmlAttribute(name = "SECURITY_PARAMETER")
+    protected String securityparameter;
+
+    /**
+     * Gets the value of the securityparameter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETER() {
+        return securityparameter;
+    }
+
+    /**
+     * Sets the value of the securityparameter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETER(String value) {
+        this.securityparameter = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/CommunityXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/CommunityXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/CommunityXmlConverter.java	(revision 48242)
@@ -0,0 +1,279 @@
+package gr.uoa.di.driver.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import javax.xml.bind.JAXBException;
+
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.domain.functionality.Community;
+import eu.dnetlib.domain.functionality.CommunitySearchCriteria;
+import gr.uoa.di.driver.xml.community.COLLECTIONType;
+import gr.uoa.di.driver.xml.community.MANAGERType;
+import gr.uoa.di.driver.xml.community.ObjectFactory;
+import gr.uoa.di.driver.xml.community.RECOMMENDATIONType;
+import gr.uoa.di.driver.xml.community.RESOURCEPROFILE;
+
+public class CommunityXmlConverter extends AbstractConverter<Community> implements
+		ResourceToXmlConverter<Community> {
+
+	private ObjectFactory of = new ObjectFactory();
+
+	public CommunityXmlConverter() throws JAXBException {
+		super(RESOURCEPROFILE.class);
+	}
+
+	public Community XmlToObject(String xml) throws JAXBException {
+		Community community = new Community();
+		RESOURCEPROFILE profile = (RESOURCEPROFILE) this.getUnmarshaller()
+				.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+
+		community.setResourceId(profile.getHEADER().getRESOURCEIDENTIFIER()
+				.getValue());
+		community.setResourceUri(profile.getHEADER().getRESOURCEURI()
+				.getValue());
+		community.setResourceKind(profile.getHEADER().getRESOURCEKIND()
+				.getValue());
+		community.setResourceType(profile.getHEADER().getRESOURCETYPE()
+				.getValue());
+		community.setDateOfCreation(ConversionUtils.parseDate(profile.getHEADER()
+				.getDATEOFCREATION().getValue()));
+		
+		community.setName(profile.getBODY().getCONFIGURATION().getNAME()
+				.getValue());
+		community.setDescription(profile.getBODY().getCONFIGURATION()
+				.getDESCRIPTION().getValue());
+		community.setOwner(profile.getBODY().getCONFIGURATION().getOWNER()
+				.getValue());
+
+		List<COLLECTIONType> collections = profile.getBODY().getCONFIGURATION()
+				.getCOLLECTIONS().getCOLLECTION();
+		List<MANAGERType> managers = profile.getBODY().getCONFIGURATION()
+				.getMANAGERS().getMANAGER();
+		List<RECOMMENDATIONType> recommendations = profile.getBODY()
+				.getCONFIGURATION().getRECOMMENDATIONS().getRECOMMENDATION();
+		List<String> authDocs = profile.getBODY().getCONFIGURATION()
+				.getAuthoritativeDocuments().getAuthoritativeDocument();
+
+		for (COLLECTIONType type : collections) {
+			community.getCollections().add(type.getCollection());
+		}
+
+		for (MANAGERType type : managers) {
+			community.getManagers().add(type.getManager());
+		}
+
+		for (RECOMMENDATIONType type : recommendations) {
+			community.getRecommendations().add(type.getRecommendation());
+		}
+
+		community.setAuthoritativeDocuments(new HashSet<String>(authDocs));
+
+		return community;
+	}
+	
+	public String ObjectToXml(Community community) throws JAXBException {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		RESOURCEPROFILE profile = of.createRESOURCEPROFILE();
+
+		profile.setHEADER(of.createHEADERType());
+		profile.setBODY(of.createBODYType());
+
+		profile.getHEADER().setRESOURCEIDENTIFIER(of.createRESOURCEIDENTIFIERType());
+		profile.getHEADER().setRESOURCEKIND(of.createRESOURCEKINDType());
+		profile.getHEADER().setRESOURCETYPE(of.createRESOURCETYPEType());
+		profile.getHEADER().setRESOURCEURI(of.createRESOURCEURIType());
+		profile.getHEADER().setDATEOFCREATION(of.createDATEOFCREATIONType());
+
+		profile.getHEADER().getRESOURCEKIND().setValue(community.getResourceKind());
+		profile.getHEADER().getRESOURCETYPE().setValue(community.getResourceType());
+		
+		if (community.getDateOfCreation() != null)
+			profile.getHEADER().getDATEOFCREATION().setValue(
+					ConversionUtils
+							.DateToString(community.getDateOfCreation()));
+		else
+			profile.getHEADER().getDATEOFCREATION().setValue("");
+
+		if (community.getResourceId() != null)
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue(
+					community.getResourceId());
+		else
+			profile.getHEADER().getRESOURCEIDENTIFIER().setValue("");
+		
+		if (community.getResourceUri() != null)
+			profile.getHEADER().getRESOURCEURI().setValue(
+					community.getResourceUri());
+		else
+			profile.getHEADER().getRESOURCEURI().setValue("");
+		
+		
+		
+		profile.getBODY().setSECURITYPARAMETERS(
+				of.createSECURITYPARAMETERSType());
+		profile.getBODY().setCONFIGURATION(of.createCONFIGURATIONType());
+
+		profile.getBODY().setSTATUS("value");
+		profile.getBODY().getSECURITYPARAMETERS().setSECURITYPARAMETER(
+				"Security Parameters");
+
+		profile.getBODY().getCONFIGURATION().setDESCRIPTION(
+				of.createCONFIGURATIONTypeDESCRIPTION());
+		profile.getBODY().getCONFIGURATION().getDESCRIPTION().setValue(
+				community.getDescription());
+
+		profile.getBODY().getCONFIGURATION().setNAME(
+				of.createCONFIGURATIONTypeNAME());
+		profile.getBODY().getCONFIGURATION().getNAME().setValue(
+				community.getName());
+
+		profile.getBODY().getCONFIGURATION().setOWNER(
+				of.createCONFIGURATIONTypeOWNER());
+		profile.getBODY().getCONFIGURATION().getOWNER().setValue(
+				community.getOwner());
+
+		profile.getBODY().getCONFIGURATION().setCOLLECTIONS(
+				of.createCOLLECTIONSType());
+		profile.getBODY().getCONFIGURATION().setMANAGERS(
+				of.createMANAGERSType());
+		profile.getBODY().getCONFIGURATION().setRECOMMENDATIONS(
+				of.createRECOMMENDATIONSType());
+		profile.getBODY().getCONFIGURATION().setAuthoritativeDocuments(
+				of.createAuthoritativeDocumentsType());
+
+		for (String collection : community.getCollections()) {
+			COLLECTIONType col = of.createCOLLECTIONType();
+
+			col.setCollection(collection);
+			profile.getBODY().getCONFIGURATION().getCOLLECTIONS()
+					.getCOLLECTION().add(col);
+		}
+
+		for (String manager : community.getManagers()) {
+			MANAGERType man = of.createMANAGERType();
+
+			man.setManager(manager);
+			profile.getBODY().getCONFIGURATION().getMANAGERS().getMANAGER()
+					.add(man);
+		}
+
+		for (String recommendation : community.getRecommendations()) {
+			RECOMMENDATIONType rec = of.createRECOMMENDATIONType();
+
+			rec.setRecommendation(recommendation);
+			profile.getBODY().getCONFIGURATION().getRECOMMENDATIONS()
+					.getRECOMMENDATION().add(rec);
+		}
+
+		profile.getBODY().getCONFIGURATION().getAuthoritativeDocuments()
+				.getAuthoritativeDocument().addAll(
+						community.getAuthoritativeDocuments());
+
+		this.getMarshaller().marshal(profile, baos);
+
+		return baos.toString();
+	}
+
+	public String toXQueryString(SearchCriteria criteria) {
+		return this.toXQueryString((CommunitySearchCriteria) criteria);
+	}
+
+	/**
+	 * Creates an XPath query based on the criteria given.
+	 * 
+	 * @param criteria
+	 *            The criteria...
+	 * @return the query...
+	 */
+	public String toXQueryString(CommunitySearchCriteria criteria) {
+		criteria = ConversionUtils.createProxy(criteria);
+		
+		String xQuery = null;
+		String predicate = "";
+
+		if (criteria.getContains() != null) {
+			predicate = "[contains(lower-case(@value), \""
+					+ criteria.getContains().toLowerCase() + "\")]";
+		}
+
+		if (criteria.getStartsWith() != null) {
+			predicate += "[starts-with(lower-case(@value), \""
+					+ criteria.getStartsWith().toLowerCase() + "\")]";
+		}
+
+		if (criteria.getEndsWith() != null) {
+			predicate += "[ends-with(lower-case(@value), \""
+					+ criteria.getEndsWith().toLowerCase() + "\")]";
+		}
+
+		xQuery = "for $x in collection(\"/db/DRIVER/CommunityDSResources/CommunityDSResourceType\")";
+		if (!predicate.equals("")) {
+			xQuery += " where ";
+			xQuery += " $x//CONFIGURATION/NAME " + predicate;
+		}
+
+		xQuery += " order by $x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME/@value ";
+		xQuery += " return $x";
+
+		System.out.println("xquery: " + xQuery);
+
+		return xQuery;
+	}
+
+	@Deprecated
+	public String toXQueryString(Community exampleInstance) {
+		/*
+		 * for $x in
+		 * collection("/db/DRIVER/CommunityResources/CommunityDataStructure")
+		 * where
+		 * $x//CONFIGURATION/COLLECTIONS/COLLECTION[@collection="collection1"]
+		 * return $x
+		 */
+		String xQuery = "for $x in collection(\"/db/DRIVER/CommunityDSResources/CommunityDSResourceType\") ";
+		List<String> predicates = new ArrayList<String>();
+
+		if (exampleInstance != null) {
+			if (exampleInstance.getCommunityId() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/HEADER/RESOURCE_IDENTIFIER[@value=\""
+								+ exampleInstance.getCommunityId() + "\"]");
+			}
+			if (exampleInstance.getName() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME[@value=\""
+								+ exampleInstance.getName() + "\"]");
+			}
+			if (exampleInstance.getDescription() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/DESCRIPTION[@value=\""
+								+ exampleInstance.getDescription() + "\"]");
+			}
+			if (exampleInstance.getOwner() != null) {
+				predicates
+						.add("$x/RESOURCE_PROFILE/BODY/CONFIGURATION/OWNER[@value=\""
+								+ exampleInstance.getOwner() + "\"]");
+			}
+
+			// TODO add managers and collections
+
+			for (int i = 0; i < predicates.size(); i++) {
+				String predicate = predicates.get(i);
+
+				if (i > 0)
+					xQuery += " and ";
+				else
+					xQuery += " where ";
+
+				xQuery += predicate;
+			}
+		}
+
+		xQuery += " order by $x/RESOURCE_PROFILE/BODY/CONFIGURATION/NAME/@value ";
+		xQuery += " return $x";
+
+		return xQuery;
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayListType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayListType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DisplayListType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DisplayListType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DisplayListType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="display" type="{}DisplayType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DisplayListType", propOrder = {
+    "display"
+})
+public class DisplayListType {
+
+    @XmlElement(required = true)
+    protected List<DisplayType> display;
+
+    /**
+     * Gets the value of the display property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the display property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDisplay().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DisplayType }
+     * 
+     * 
+     */
+    public List<DisplayType> getDisplay() {
+        if (display == null) {
+            display = new ArrayList<DisplayType>();
+        }
+        return this.display;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/CutpointType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/CutpointType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/CutpointType.java	(revision 48242)
@@ -0,0 +1,61 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CutpointType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="CutpointType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="line"/>
+ *     &lt;enumeration value="value"/>
+ *     &lt;enumeration value="part"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "CutpointType")
+@XmlEnum
+public enum CutpointType {
+
+    @XmlEnumValue("line")
+    LINE("line"),
+    @XmlEnumValue("value")
+    VALUE("value"),
+    @XmlEnumValue("part")
+    PART("part");
+    private final String value;
+
+    CutpointType(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static CutpointType fromValue(String v) {
+        for (CutpointType c: CutpointType.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,125 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="NAME" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="MDFORMAT_NAME" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="INDEX_LAYOUT_NAME" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+    "name",
+    "mdformatname",
+    "indexlayoutname"
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "NAME", required = true)
+    protected String name;
+    @XmlElement(name = "MDFORMAT_NAME", required = true)
+    protected String mdformatname;
+    @XmlElement(name = "INDEX_LAYOUT_NAME", required = true)
+    protected String indexlayoutname;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNAME() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNAME(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the mdformatname property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMDFORMATNAME() {
+        return mdformatname;
+    }
+
+    /**
+     * Sets the value of the mdformatname property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMDFORMATNAME(String value) {
+        this.mdformatname = value;
+    }
+
+    /**
+     * Gets the value of the indexlayoutname property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getINDEXLAYOUTNAME() {
+        return indexlayoutname;
+    }
+
+    /**
+     * Sets the value of the indexlayoutname property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setINDEXLAYOUTNAME(String value) {
+        this.indexlayoutname = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/MESSAGEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/MESSAGEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/MESSAGEType.java	(revision 48242)
@@ -0,0 +1,189 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for MESSAGEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MESSAGEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{}ACTION"/>
+ *         &lt;element name="PARAMETER" type="{}PARAMETERType" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element ref="{}ACTION_STATUS"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="date" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MESSAGEType", propOrder = {
+    "action",
+    "parameter",
+    "actionstatus"
+})
+public class MESSAGEType {
+
+    @XmlElement(name = "ACTION", required = true)
+    protected String action;
+    @XmlElement(name = "PARAMETER")
+    protected List<PARAMETERType> parameter;
+    @XmlElement(name = "ACTION_STATUS", required = true)
+    protected String actionstatus;
+    @XmlAttribute(required = true)
+    protected String id;
+    @XmlAttribute(required = true)
+    protected XMLGregorianCalendar date;
+
+    /**
+     * Gets the value of the action property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getACTION() {
+        return action;
+    }
+
+    /**
+     * Sets the value of the action property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setACTION(String value) {
+        this.action = value;
+    }
+
+    /**
+     * Gets the value of the parameter property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the parameter property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getPARAMETER().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link PARAMETERType }
+     * 
+     * 
+     */
+    public List<PARAMETERType> getPARAMETER() {
+        if (parameter == null) {
+            parameter = new ArrayList<PARAMETERType>();
+        }
+        return this.parameter;
+    }
+
+    /**
+     * Gets the value of the actionstatus property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getACTIONSTATUS() {
+        return actionstatus;
+    }
+
+    /**
+     * Sets the value of the actionstatus property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setACTIONSTATUS(String value) {
+        this.actionstatus = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the date property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getDate() {
+        return date;
+    }
+
+    /**
+     * Sets the value of the date property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setDate(XMLGregorianCalendar value) {
+        this.date = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/QOS.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/QOS.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/QOS.java	(revision 48242)
@@ -0,0 +1,136 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element ref="{}AVAILABILITY"/>
+ *         &lt;element ref="{}CAPACITY"/>
+ *         &lt;element ref="{}RESPONSE_TIME"/>
+ *         &lt;element ref="{}THROUGHPUT"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+
+})
+@XmlRootElement(name = "QOS")
+public class QOS {
+
+    @XmlElement(name = "AVAILABILITY", required = true)
+    protected String availability;
+    @XmlElement(name = "CAPACITY", required = true)
+    protected String capacity;
+    @XmlElement(name = "RESPONSE_TIME")
+    protected int responsetime;
+    @XmlElement(name = "THROUGHPUT")
+    protected double throughput;
+
+    /**
+     * Gets the value of the availability property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAVAILABILITY() {
+        return availability;
+    }
+
+    /**
+     * Sets the value of the availability property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAVAILABILITY(String value) {
+        this.availability = value;
+    }
+
+    /**
+     * Gets the value of the capacity property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCAPACITY() {
+        return capacity;
+    }
+
+    /**
+     * Sets the value of the capacity property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCAPACITY(String value) {
+        this.capacity = value;
+    }
+
+    /**
+     * Gets the value of the responsetime property.
+     * 
+     */
+    public int getRESPONSETIME() {
+        return responsetime;
+    }
+
+    /**
+     * Sets the value of the responsetime property.
+     * 
+     */
+    public void setRESPONSETIME(int value) {
+        this.responsetime = value;
+    }
+
+    /**
+     * Gets the value of the throughput property.
+     * 
+     */
+    public double getTHROUGHPUT() {
+        return throughput;
+    }
+
+    /**
+     * Sets the value of the throughput property.
+     * 
+     */
+    public void setTHROUGHPUT(double value) {
+        this.throughput = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/LASTUPDATEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/LASTUPDATEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/LASTUPDATEType.java	(revision 48242)
@@ -0,0 +1,66 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for LAST_UPDATEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="LAST_UPDATEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "LAST_UPDATEType")
+public class LASTUPDATEType {
+
+    @XmlAttribute(required = true)
+    protected XMLGregorianCalendar value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setValue(XMLGregorianCalendar value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PARAMETERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PARAMETERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PARAMETERType.java	(revision 48242)
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PARAMETERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PARAMETERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PARAMETERType")
+public class PARAMETERType {
+
+    @XmlAttribute(required = true)
+    protected String name;
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/MapType.java	(revision 48242)
@@ -0,0 +1,75 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MapType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MapType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="entry" type="{}MapEntryType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MapType", propOrder = {
+    "entry"
+})
+public class MapType {
+
+    protected List<MapEntryType> entry;
+
+    /**
+     * Gets the value of the entry property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the entry property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEntry().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MapEntryType }
+     * 
+     * 
+     */
+    public List<MapEntryType> getEntry() {
+        if (entry == null) {
+            entry = new ArrayList<MapEntryType>();
+        }
+        return this.entry;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SwitchType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SwitchType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/SwitchType.java	(revision 48242)
@@ -0,0 +1,124 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SwitchType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SwitchType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="documentFieldMap" type="{}MapType"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="conditionField" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="default" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SwitchType", propOrder = {
+    "documentFieldMap"
+})
+public class SwitchType {
+
+    @XmlElement(required = true)
+    protected MapType documentFieldMap;
+    @XmlAttribute(required = true)
+    protected String conditionField;
+    @XmlAttribute(name = "default")
+    protected Boolean _default;
+
+    /**
+     * Gets the value of the documentFieldMap property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapType }
+     *     
+     */
+    public MapType getDocumentFieldMap() {
+        return documentFieldMap;
+    }
+
+    /**
+     * Sets the value of the documentFieldMap property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapType }
+     *     
+     */
+    public void setDocumentFieldMap(MapType value) {
+        this.documentFieldMap = value;
+    }
+
+    /**
+     * Gets the value of the conditionField property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getConditionField() {
+        return conditionField;
+    }
+
+    /**
+     * Sets the value of the conditionField property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setConditionField(String value) {
+        this.conditionField = value;
+    }
+
+    /**
+     * Gets the value of the default property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isDefault() {
+        return _default;
+    }
+
+    /**
+     * Sets the value of the default property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setDefault(Boolean value) {
+        this._default = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentFieldType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentFieldType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DocumentFieldType.java	(revision 48242)
@@ -0,0 +1,312 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DocumentFieldType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DocumentFieldType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="descriptionMap" type="{}MapType" minOccurs="0"/>
+ *         &lt;element name="forceDescription" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         &lt;element name="multipleValuesDescriptionMap" type="{}MapType" minOccurs="0"/>
+ *         &lt;element name="vocabulary" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="switch" type="{}SwitchType" minOccurs="0"/>
+ *         &lt;element name="displays" type="{}DisplayListType" minOccurs="0"/>
+ *         &lt;element name="maxCharacters" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
+ *         &lt;element name="cutpoint" type="{}CutpointType" minOccurs="0"/>
+ *         &lt;element name="cssClass" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DocumentFieldType", propOrder = {
+    "name",
+    "descriptionMap",
+    "forceDescription",
+    "multipleValuesDescriptionMap",
+    "vocabulary",
+    "_switch",
+    "displays",
+    "maxCharacters",
+    "cutpoint",
+    "cssClass"
+})
+public class DocumentFieldType {
+
+    protected String name;
+    protected MapType descriptionMap;
+    protected Boolean forceDescription;
+    protected MapType multipleValuesDescriptionMap;
+    protected String vocabulary;
+    @XmlElement(name = "switch")
+    protected SwitchType _switch;
+    protected DisplayListType displays;
+    protected Integer maxCharacters;
+    protected CutpointType cutpoint;
+    protected String cssClass;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the descriptionMap property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapType }
+     *     
+     */
+    public MapType getDescriptionMap() {
+        return descriptionMap;
+    }
+
+    /**
+     * Sets the value of the descriptionMap property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapType }
+     *     
+     */
+    public void setDescriptionMap(MapType value) {
+        this.descriptionMap = value;
+    }
+
+    /**
+     * Gets the value of the forceDescription property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isForceDescription() {
+        return forceDescription;
+    }
+
+    /**
+     * Sets the value of the forceDescription property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setForceDescription(Boolean value) {
+        this.forceDescription = value;
+    }
+
+    /**
+     * Gets the value of the multipleValuesDescriptionMap property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapType }
+     *     
+     */
+    public MapType getMultipleValuesDescriptionMap() {
+        return multipleValuesDescriptionMap;
+    }
+
+    /**
+     * Sets the value of the multipleValuesDescriptionMap property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapType }
+     *     
+     */
+    public void setMultipleValuesDescriptionMap(MapType value) {
+        this.multipleValuesDescriptionMap = value;
+    }
+
+    /**
+     * Gets the value of the vocabulary property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getVocabulary() {
+        return vocabulary;
+    }
+
+    /**
+     * Sets the value of the vocabulary property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setVocabulary(String value) {
+        this.vocabulary = value;
+    }
+
+    /**
+     * Gets the value of the switch property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SwitchType }
+     *     
+     */
+    public SwitchType getSwitch() {
+        return _switch;
+    }
+
+    /**
+     * Sets the value of the switch property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SwitchType }
+     *     
+     */
+    public void setSwitch(SwitchType value) {
+        this._switch = value;
+    }
+
+    /**
+     * Gets the value of the displays property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DisplayListType }
+     *     
+     */
+    public DisplayListType getDisplays() {
+        return displays;
+    }
+
+    /**
+     * Sets the value of the displays property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DisplayListType }
+     *     
+     */
+    public void setDisplays(DisplayListType value) {
+        this.displays = value;
+    }
+
+    /**
+     * Gets the value of the maxCharacters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getMaxCharacters() {
+        return maxCharacters;
+    }
+
+    /**
+     * Sets the value of the maxCharacters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setMaxCharacters(Integer value) {
+        this.maxCharacters = value;
+    }
+
+    /**
+     * Gets the value of the cutpoint property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CutpointType }
+     *     
+     */
+    public CutpointType getCutpoint() {
+        return cutpoint;
+    }
+
+    /**
+     * Sets the value of the cutpoint property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CutpointType }
+     *     
+     */
+    public void setCutpoint(CutpointType value) {
+        this.cutpoint = value;
+    }
+
+    /**
+     * Gets the value of the cssClass property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    /**
+     * Sets the value of the cssClass property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCssClass(String value) {
+        this.cssClass = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="WebInterfaceLayoutResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/HEADERType.java	(revision 48242)
@@ -0,0 +1,231 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="PARENT_ID" type="{}PARENT_IDType" minOccurs="0"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *         &lt;element name="PROTOCOLS" type="{}PROTOCOLSType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "PARENT_ID")
+    protected PARENTIDType parentid;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+    @XmlElement(name = "PROTOCOLS", required = true)
+    protected PROTOCOLSType protocols;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the parentid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PARENTIDType }
+     *     
+     */
+    public PARENTIDType getPARENTID() {
+        return parentid;
+    }
+
+    /**
+     * Sets the value of the parentid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PARENTIDType }
+     *     
+     */
+    public void setPARENTID(PARENTIDType value) {
+        this.parentid = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+    /**
+     * Gets the value of the protocols property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PROTOCOLSType }
+     *     
+     */
+    public PROTOCOLSType getPROTOCOLS() {
+        return protocols;
+    }
+
+    /**
+     * Sets the value of the protocols property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PROTOCOLSType }
+     *     
+     */
+    public void setPROTOCOLS(PROTOCOLSType value) {
+        this.protocols = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/MANAGERSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/MANAGERSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/MANAGERSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MANAGERSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MANAGERSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="MANAGER" type="{}MANAGERType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MANAGERSType", propOrder = {
+    "manager"
+})
+public class MANAGERSType {
+
+    @XmlElement(name = "MANAGER")
+    protected List<MANAGERType> manager;
+
+    /**
+     * Gets the value of the manager property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the manager property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMANAGER().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MANAGERType }
+     * 
+     * 
+     */
+    public List<MANAGERType> getMANAGER() {
+        if (manager == null) {
+            manager = new ArrayList<MANAGERType>();
+        }
+        return this.manager;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="CollectionDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/DESCRIPTIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/DESCRIPTIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/DESCRIPTIONType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DESCRIPTIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DESCRIPTIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="FIELD" type="{}FIELDType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DESCRIPTIONType", propOrder = {
+    "field"
+})
+public class DESCRIPTIONType {
+
+    @XmlElement(name = "FIELD", required = true)
+    protected List<FIELDType> field;
+
+    /**
+     * Gets the value of the field property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the field property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getFIELD().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link FIELDType }
+     * 
+     * 
+     */
+    public List<FIELDType> getFIELD() {
+        if (field == null) {
+            field = new ArrayList<FIELDType>();
+        }
+        return this.field;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/COUNTDOCSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/COUNTDOCSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/COUNTDOCSType.java	(revision 48242)
@@ -0,0 +1,84 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for COUNT_DOCSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="COUNT_DOCSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="number" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="last_update" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "COUNT_DOCSType")
+public class COUNTDOCSType {
+
+    @XmlAttribute(required = true)
+    protected int number;
+    @XmlAttribute(name = "last_update", required = true)
+    protected String lastUpdate;
+
+    /**
+     * Gets the value of the number property.
+     * 
+     */
+    public int getNumber() {
+        return number;
+    }
+
+    /**
+     * Sets the value of the number property.
+     * 
+     */
+    public void setNumber(int value) {
+        this.number = value;
+    }
+
+    /**
+     * Gets the value of the lastUpdate property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLastUpdate() {
+        return lastUpdate;
+    }
+
+    /**
+     * Sets the value of the lastUpdate property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLastUpdate(String value) {
+        this.lastUpdate = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,223 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.xml.webinterfacelayout package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.xml.webinterfacelayout
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link SwitchType }
+     * 
+     */
+    public SwitchType createSwitchType() {
+        return new SwitchType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link DisplayListType }
+     * 
+     */
+    public DisplayListType createDisplayListType() {
+        return new DisplayListType();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link SEARCHABLEType }
+     * 
+     */
+    public SEARCHABLEType createSEARCHABLEType() {
+        return new SEARCHABLEType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link MapType }
+     * 
+     */
+    public MapType createMapType() {
+        return new MapType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link MapMapEntryType }
+     * 
+     */
+    public MapMapEntryType createMapMapEntryType() {
+        return new MapMapEntryType();
+    }
+
+    /**
+     * Create an instance of {@link SuportedLocalesListType }
+     * 
+     */
+    public SuportedLocalesListType createSuportedLocalesListType() {
+        return new SuportedLocalesListType();
+    }
+
+    /**
+     * Create an instance of {@link MapMapType }
+     * 
+     */
+    public MapMapType createMapMapType() {
+        return new MapMapType();
+    }
+
+    /**
+     * Create an instance of {@link SUPPORTEDLOCALEType }
+     * 
+     */
+    public SUPPORTEDLOCALEType createSUPPORTEDLOCALEType() {
+        return new SUPPORTEDLOCALEType();
+    }
+
+    /**
+     * Create an instance of {@link DocumentFieldListType }
+     * 
+     */
+    public DocumentFieldListType createDocumentFieldListType() {
+        return new DocumentFieldListType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link DocumentFieldType }
+     * 
+     */
+    public DocumentFieldType createDocumentFieldType() {
+        return new DocumentFieldType();
+    }
+
+    /**
+     * Create an instance of {@link SEARCHABLESType }
+     * 
+     */
+    public SEARCHABLESType createSEARCHABLESType() {
+        return new SEARCHABLESType();
+    }
+
+    /**
+     * Create an instance of {@link DisplayType }
+     * 
+     */
+    public DisplayType createDisplayType() {
+        return new DisplayType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link DocumentDescriptionType }
+     * 
+     */
+    public DocumentDescriptionType createDocumentDescriptionType() {
+        return new DocumentDescriptionType();
+    }
+
+    /**
+     * Create an instance of {@link MapEntryType }
+     * 
+     */
+    public MapEntryType createMapEntryType() {
+        return new MapEntryType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RECOMMENDATIONSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RECOMMENDATIONSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RECOMMENDATIONSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RECOMMENDATIONSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RECOMMENDATIONSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="RECOMMENDATION" type="{}RECOMMENDATIONType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RECOMMENDATIONSType", propOrder = {
+    "recommendation"
+})
+public class RECOMMENDATIONSType {
+
+    @XmlElement(name = "RECOMMENDATION")
+    protected List<RECOMMENDATIONType> recommendation;
+
+    /**
+     * Gets the value of the recommendation property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the recommendation property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getRECOMMENDATION().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link RECOMMENDATIONType }
+     * 
+     * 
+     */
+    public List<RECOMMENDATIONType> getRECOMMENDATION() {
+        if (recommendation == null) {
+            recommendation = new ArrayList<RECOMMENDATIONType>();
+        }
+        return this.recommendation;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/COLLECTIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/COLLECTIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/COLLECTIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for COLLECTIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="COLLECTIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="collection" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "COLLECTIONType")
+public class COLLECTIONType {
+
+    @XmlAttribute
+    protected String collection;
+
+    /**
+     * Gets the value of the collection property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCollection() {
+        return collection;
+    }
+
+    /**
+     * Sets the value of the collection property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCollection(String value) {
+        this.collection = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/FIELDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/FIELDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/FIELDType.java	(revision 48242)
@@ -0,0 +1,113 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for FIELDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FIELDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="ord" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="label" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FIELDType", propOrder = {
+    "content"
+})
+public class FIELDType {
+
+    @XmlValue
+    protected String content;
+    @XmlAttribute(required = true)
+    protected int ord;
+    @XmlAttribute(required = true)
+    protected String label;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the value of the content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setContent(String value) {
+        this.content = value;
+    }
+
+    /**
+     * Gets the value of the ord property.
+     * 
+     */
+    public int getOrd() {
+        return ord;
+    }
+
+    /**
+     * Sets the value of the ord property.
+     * 
+     */
+    public void setOrd(int value) {
+        this.ord = value;
+    }
+
+    /**
+     * Gets the value of the label property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLabel() {
+        return label;
+    }
+
+    /**
+     * Sets the value of the label property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLabel(String value) {
+        this.label = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/FATHERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/FATHERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/FATHERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for FATHERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FATHERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FATHERType")
+public class FATHERType {
+
+    @XmlAttribute(required = true)
+    protected String id;
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PROTOCOLSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PROTOCOLSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PROTOCOLSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PROTOCOLSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PROTOCOLSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="PROTOCOL" type="{}PROTOCOLType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PROTOCOLSType", propOrder = {
+    "protocol"
+})
+public class PROTOCOLSType {
+
+    @XmlElement(name = "PROTOCOL", required = true)
+    protected List<PROTOCOLType> protocol;
+
+    /**
+     * Gets the value of the protocol property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the protocol property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getPROTOCOL().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link PROTOCOLType }
+     * 
+     * 
+     */
+    public List<PROTOCOLType> getPROTOCOL() {
+        if (protocol == null) {
+            protocol = new ArrayList<PROTOCOLType>();
+        }
+        return this.protocol;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BODYType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element ref="{}CONFIGURATION"/>
+ *         &lt;element ref="{}STATUS"/>
+ *         &lt;element ref="{}QOS"/>
+ *         &lt;element ref="{}SECURITY_PARAMETERS"/>
+ *         &lt;element ref="{}BLACKBOARD"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATION configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected STATUS status;
+    @XmlElement(name = "QOS", required = true)
+    protected QOS qos;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected String securityparameters;
+    @XmlElement(name = "BLACKBOARD", required = true)
+    protected BLACKBOARDType blackboard;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATION }
+     *     
+     */
+    public CONFIGURATION getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATION }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATION value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STATUS }
+     *     
+     */
+    public STATUS getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STATUS }
+     *     
+     */
+    public void setSTATUS(STATUS value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the qos property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link QOS }
+     *     
+     */
+    public QOS getQOS() {
+        return qos;
+    }
+
+    /**
+     * Sets the value of the qos property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link QOS }
+     *     
+     */
+    public void setQOS(QOS value) {
+        this.qos = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETERS(String value) {
+        this.securityparameters = value;
+    }
+
+    /**
+     * Gets the value of the blackboard property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BLACKBOARDType }
+     *     
+     */
+    public BLACKBOARDType getBLACKBOARD() {
+        return blackboard;
+    }
+
+    /**
+     * Sets the value of the blackboard property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BLACKBOARDType }
+     *     
+     */
+    public void setBLACKBOARD(BLACKBOARDType value) {
+        this.blackboard = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PARENTIDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PARENTIDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PARENTIDType.java	(revision 48242)
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PARENT_IDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PARENT_IDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PARENT_IDType")
+public class PARENTIDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+    @XmlAttribute(required = true)
+    protected String type;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BLACKBOARDLASTType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BLACKBOARDLASTType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BLACKBOARDLASTType.java	(revision 48242)
@@ -0,0 +1,94 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for BLACKBOARD_LASTType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BLACKBOARD_LASTType">
+ *   &lt;simpleContent>
+ *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *       &lt;attribute name="date" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/extension>
+ *   &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BLACKBOARD_LASTType", propOrder = {
+    "value"
+})
+public class BLACKBOARDLASTType {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute
+    protected String date;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the date property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDate() {
+        return date;
+    }
+
+    /**
+     * Sets the value of the date property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDate(String value) {
+        this.date = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/STATUSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/STATUSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/STATUSType.java	(revision 48242)
@@ -0,0 +1,96 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for STATUSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="STATUSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="COUNT_DOCS" type="{}COUNT_DOCSType"/>
+ *         &lt;element name="RETRIEVAL_CONDITION" type="{}RETRIEVAL_CONDITIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "STATUSType", propOrder = {
+
+})
+public class STATUSType {
+
+    @XmlElement(name = "COUNT_DOCS", required = true)
+    protected COUNTDOCSType countdocs;
+    @XmlElement(name = "RETRIEVAL_CONDITION", required = true)
+    protected RETRIEVALCONDITIONType retrievalcondition;
+
+    /**
+     * Gets the value of the countdocs property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link COUNTDOCSType }
+     *     
+     */
+    public COUNTDOCSType getCOUNTDOCS() {
+        return countdocs;
+    }
+
+    /**
+     * Sets the value of the countdocs property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link COUNTDOCSType }
+     *     
+     */
+    public void setCOUNTDOCS(COUNTDOCSType value) {
+        this.countdocs = value;
+    }
+
+    /**
+     * Gets the value of the retrievalcondition property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RETRIEVALCONDITIONType }
+     *     
+     */
+    public RETRIEVALCONDITIONType getRETRIEVALCONDITION() {
+        return retrievalcondition;
+    }
+
+    /**
+     * Sets the value of the retrievalcondition property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RETRIEVALCONDITIONType }
+     *     
+     */
+    public void setRETRIEVALCONDITION(RETRIEVALCONDITIONType value) {
+        this.retrievalcondition = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="RSSFeedDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="RSSFeedDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,68 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setValue(XMLGregorianCalendar value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/webinterfacelayout/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.9-03/31/2009 04:14 PM(snajper)-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2010.11.16 at 03:50:10 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.webinterfacelayout;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/AuthoritativeDocumentsType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/AuthoritativeDocumentsType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/AuthoritativeDocumentsType.java	(revision 48242)
@@ -0,0 +1,75 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for authoritativeDocumentsType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="authoritativeDocumentsType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="authoritativeDocument" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "authoritativeDocumentsType", propOrder = {
+    "authoritativeDocument"
+})
+public class AuthoritativeDocumentsType {
+
+    protected List<String> authoritativeDocument;
+
+    /**
+     * Gets the value of the authoritativeDocument property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the authoritativeDocument property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAuthoritativeDocument().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getAuthoritativeDocument() {
+        if (authoritativeDocument == null) {
+            authoritativeDocument = new ArrayList<String>();
+        }
+        return this.authoritativeDocument;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,308 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.xml.collection package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _SUBJECT_QNAME = new QName("", "SUBJECT");
+    private final static QName _ICONURI_QNAME = new QName("", "ICON_URI");
+    private final static QName _VISIBLE_QNAME = new QName("", "VISIBLE");
+    private final static QName _NAME_QNAME = new QName("", "NAME");
+    private final static QName _MEMBERSHIPCONDITION_QNAME = new QName("", "MEMBERSHIP_CONDITION");
+    private final static QName _CONTAINER_QNAME = new QName("", "CONTAINER");
+    private final static QName _IMAGEURL_QNAME = new QName("", "IMAGE_URL");
+    private final static QName _PRIVATE_QNAME = new QName("", "PRIVATE");
+    private final static QName _SECURITYPARAMETERS_QNAME = new QName("", "SECURITY_PARAMETERS");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.xml.collection
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link RETRIEVALCONDITIONType }
+     * 
+     */
+    public RETRIEVALCONDITIONType createRETRIEVALCONDITIONType() {
+        return new RETRIEVALCONDITIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link CHILDType }
+     * 
+     */
+    public CHILDType createCHILDType() {
+        return new CHILDType();
+    }
+
+    /**
+     * Create an instance of {@link COUNTDOCSType }
+     * 
+     */
+    public COUNTDOCSType createCOUNTDOCSType() {
+        return new COUNTDOCSType();
+    }
+
+    /**
+     * Create an instance of {@link MANAGERType }
+     * 
+     */
+    public MANAGERType createMANAGERType() {
+        return new MANAGERType();
+    }
+
+    /**
+     * Create an instance of {@link MANAGERSType }
+     * 
+     */
+    public MANAGERSType createMANAGERSType() {
+        return new MANAGERSType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link FIELDType }
+     * 
+     */
+    public FIELDType createFIELDType() {
+        return new FIELDType();
+    }
+
+    /**
+     * Create an instance of {@link CHILDRENType }
+     * 
+     */
+    public CHILDRENType createCHILDRENType() {
+        return new CHILDRENType();
+    }
+
+    /**
+     * Create an instance of {@link OWNERType }
+     * 
+     */
+    public OWNERType createOWNERType() {
+        return new OWNERType();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType }
+     * 
+     */
+    public STATUSType createSTATUSType() {
+        return new STATUSType();
+    }
+
+    /**
+     * Create an instance of {@link BASKETType }
+     * 
+     */
+    public BASKETType createBASKETType() {
+        return new BASKETType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link FATHERType }
+     * 
+     */
+    public FATHERType createFATHERType() {
+        return new FATHERType();
+    }
+
+    /**
+     * Create an instance of {@link BASKETDOCUMENTType }
+     * 
+     */
+    public BASKETDOCUMENTType createBASKETDOCUMENTType() {
+        return new BASKETDOCUMENTType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link DESCRIPTIONType }
+     * 
+     */
+    public DESCRIPTIONType createDESCRIPTIONType() {
+        return new DESCRIPTIONType();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "SUBJECT")
+    public JAXBElement<String> createSUBJECT(String value) {
+        return new JAXBElement<String>(_SUBJECT_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "ICON_URI")
+    public JAXBElement<String> createICONURI(String value) {
+        return new JAXBElement<String>(_ICONURI_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "VISIBLE")
+    public JAXBElement<Integer> createVISIBLE(Integer value) {
+        return new JAXBElement<Integer>(_VISIBLE_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "NAME")
+    public JAXBElement<String> createNAME(String value) {
+        return new JAXBElement<String>(_NAME_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "MEMBERSHIP_CONDITION")
+    public JAXBElement<String> createMEMBERSHIPCONDITION(String value) {
+        return new JAXBElement<String>(_MEMBERSHIPCONDITION_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "CONTAINER")
+    public JAXBElement<Integer> createCONTAINER(Integer value) {
+        return new JAXBElement<Integer>(_CONTAINER_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "IMAGE_URL")
+    public JAXBElement<String> createIMAGEURL(String value) {
+        return new JAXBElement<String>(_IMAGEURL_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "PRIVATE")
+    public JAXBElement<Integer> createPRIVATE(Integer value) {
+        return new JAXBElement<Integer>(_PRIVATE_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "SECURITY_PARAMETERS")
+    public JAXBElement<String> createSECURITYPARAMETERS(String value) {
+        return new JAXBElement<String>(_SECURITYPARAMETERS_QNAME, String.class, null, value);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/DOCUMENTSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/DOCUMENTSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/DOCUMENTSType.java	(revision 48242)
@@ -0,0 +1,89 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DOCUMENTSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DOCUMENTSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="DOCUMENT_ID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="IS_NEW" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DOCUMENTSType", propOrder = {
+    "documentid",
+    "isnew"
+})
+public class DOCUMENTSType {
+
+    @XmlElement(name = "DOCUMENT_ID", required = true)
+    protected String documentid;
+    @XmlElement(name = "IS_NEW")
+    protected boolean isnew;
+
+    /**
+     * Gets the value of the documentid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDOCUMENTID() {
+        return documentid;
+    }
+
+    /**
+     * Sets the value of the documentid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDOCUMENTID(String value) {
+        this.documentid = value;
+    }
+
+    /**
+     * Gets the value of the isnew property.
+     * 
+     */
+    public boolean isISNEW() {
+        return isnew;
+    }
+
+    /**
+     * Sets the value of the isnew property.
+     * 
+     */
+    public void setISNEW(boolean value) {
+        this.isnew = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/SECURITYPARAMETERSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/SECURITYPARAMETERSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/SECURITYPARAMETERSType.java	(revision 48242)
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SECURITY_PARAMETERSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SECURITY_PARAMETERSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="SECURITY_PARAMETER" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SECURITY_PARAMETERSType", propOrder = {
+
+})
+public class SECURITYPARAMETERSType {
+
+    @XmlElement(name = "SECURITY_PARAMETER", required = true)
+    protected String securityparameter;
+
+    /**
+     * Gets the value of the securityparameter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETER() {
+        return securityparameter;
+    }
+
+    /**
+     * Sets the value of the securityparameter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETER(String value) {
+        this.securityparameter = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,272 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="PERSONAL_INFO" type="{}PERSONAL_INFOType"/>
+ *         &lt;element name="COMMUNITIES" type="{}COMMUNITIESType"/>
+ *         &lt;element name="SAVED_QUERIES" type="{}SAVED_QUERYType" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="FILTER" type="{}FILTERType" minOccurs="0"/>
+ *         &lt;element name="RECOMMENDATION" type="{}RECOMMENDATIONType"/>
+ *         &lt;element name="DOCUMENTS" type="{}DOCUMENTSType" minOccurs="0"/>
+ *         &lt;element name="USER_STORE" type="{}STOREType" minOccurs="0"/>
+ *         &lt;element name="userImageID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+    "personalinfo",
+    "communities",
+    "savedqueries",
+    "filter",
+    "recommendation",
+    "documents",
+    "userstore",
+    "userImageID"
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "PERSONAL_INFO", required = true)
+    protected PERSONALINFOType personalinfo;
+    @XmlElement(name = "COMMUNITIES", required = true)
+    protected COMMUNITIESType communities;
+    @XmlElement(name = "SAVED_QUERIES")
+    protected List<SAVEDQUERYType> savedqueries;
+    @XmlElement(name = "FILTER")
+    protected FILTERType filter;
+    @XmlElement(name = "RECOMMENDATION", required = true)
+    protected RECOMMENDATIONType recommendation;
+    @XmlElement(name = "DOCUMENTS")
+    protected DOCUMENTSType documents;
+    @XmlElement(name = "USER_STORE")
+    protected STOREType userstore;
+    protected String userImageID;
+
+    /**
+     * Gets the value of the personalinfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PERSONALINFOType }
+     *     
+     */
+    public PERSONALINFOType getPERSONALINFO() {
+        return personalinfo;
+    }
+
+    /**
+     * Sets the value of the personalinfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PERSONALINFOType }
+     *     
+     */
+    public void setPERSONALINFO(PERSONALINFOType value) {
+        this.personalinfo = value;
+    }
+
+    /**
+     * Gets the value of the communities property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link COMMUNITIESType }
+     *     
+     */
+    public COMMUNITIESType getCOMMUNITIES() {
+        return communities;
+    }
+
+    /**
+     * Sets the value of the communities property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link COMMUNITIESType }
+     *     
+     */
+    public void setCOMMUNITIES(COMMUNITIESType value) {
+        this.communities = value;
+    }
+
+    /**
+     * Gets the value of the savedqueries property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the savedqueries property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSAVEDQUERIES().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SAVEDQUERYType }
+     * 
+     * 
+     */
+    public List<SAVEDQUERYType> getSAVEDQUERIES() {
+        if (savedqueries == null) {
+            savedqueries = new ArrayList<SAVEDQUERYType>();
+        }
+        return this.savedqueries;
+    }
+
+    /**
+     * Gets the value of the filter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FILTERType }
+     *     
+     */
+    public FILTERType getFILTER() {
+        return filter;
+    }
+
+    /**
+     * Sets the value of the filter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FILTERType }
+     *     
+     */
+    public void setFILTER(FILTERType value) {
+        this.filter = value;
+    }
+
+    /**
+     * Gets the value of the recommendation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RECOMMENDATIONType }
+     *     
+     */
+    public RECOMMENDATIONType getRECOMMENDATION() {
+        return recommendation;
+    }
+
+    /**
+     * Sets the value of the recommendation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RECOMMENDATIONType }
+     *     
+     */
+    public void setRECOMMENDATION(RECOMMENDATIONType value) {
+        this.recommendation = value;
+    }
+
+    /**
+     * Gets the value of the documents property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DOCUMENTSType }
+     *     
+     */
+    public DOCUMENTSType getDOCUMENTS() {
+        return documents;
+    }
+
+    /**
+     * Sets the value of the documents property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DOCUMENTSType }
+     *     
+     */
+    public void setDOCUMENTS(DOCUMENTSType value) {
+        this.documents = value;
+    }
+
+    /**
+     * Gets the value of the userstore property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STOREType }
+     *     
+     */
+    public STOREType getUSERSTORE() {
+        return userstore;
+    }
+
+    /**
+     * Sets the value of the userstore property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STOREType }
+     *     
+     */
+    public void setUSERSTORE(STOREType value) {
+        this.userstore = value;
+    }
+
+    /**
+     * Gets the value of the userImageID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUserImageID() {
+        return userImageID;
+    }
+
+    /**
+     * Sets the value of the userImageID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUserImageID(String value) {
+        this.userImageID = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/BODYType.java	(revision 48242)
@@ -0,0 +1,125 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="SECURITY_PARAMETERS" type="{}SECURITY_PARAMETERSType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "securityparameters"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected String status;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected SECURITYPARAMETERSType securityparameters;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSTATUS(String value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public SECURITYPARAMETERSType getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public void setSECURITYPARAMETERS(SECURITYPARAMETERSType value) {
+        this.securityparameters = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="CommunityDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/DOCUMENTSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/DOCUMENTSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/DOCUMENTSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DOCUMENTSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DOCUMENTSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="DOCUMENT_ID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DOCUMENTSType", propOrder = {
+    "documentid"
+})
+public class DOCUMENTSType {
+
+    @XmlElement(name = "DOCUMENT_ID")
+    protected List<String> documentid;
+
+    /**
+     * Gets the value of the documentid property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the documentid property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDOCUMENTID().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getDOCUMENTID() {
+        if (documentid == null) {
+            documentid = new ArrayList<String>();
+        }
+        return this.documentid;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/community/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,199 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:47:34 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.community;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.community.xml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.community.xml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType.DESCRIPTION }
+     * 
+     */
+    public CONFIGURATIONType.DESCRIPTION createCONFIGURATIONTypeDESCRIPTION() {
+        return new CONFIGURATIONType.DESCRIPTION();
+    }
+
+    /**
+     * Create an instance of {@link MANAGERType }
+     * 
+     */
+    public MANAGERType createMANAGERType() {
+        return new MANAGERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link COLLECTIONSType }
+     * 
+     */
+    public COLLECTIONSType createCOLLECTIONSType() {
+        return new COLLECTIONSType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link AuthoritativeDocumentsType }
+     * 
+     */
+    public AuthoritativeDocumentsType createAuthoritativeDocumentsType() {
+        return new AuthoritativeDocumentsType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType.NAME }
+     * 
+     */
+    public CONFIGURATIONType.NAME createCONFIGURATIONTypeNAME() {
+        return new CONFIGURATIONType.NAME();
+    }
+
+    /**
+     * Create an instance of {@link COLLECTIONType }
+     * 
+     */
+    public COLLECTIONType createCOLLECTIONType() {
+        return new COLLECTIONType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link SECURITYPARAMETERSType }
+     * 
+     */
+    public SECURITYPARAMETERSType createSECURITYPARAMETERSType() {
+        return new SECURITYPARAMETERSType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link RECOMMENDATIONType }
+     * 
+     */
+    public RECOMMENDATIONType createRECOMMENDATIONType() {
+        return new RECOMMENDATIONType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType.OWNER }
+     * 
+     */
+    public CONFIGURATIONType.OWNER createCONFIGURATIONTypeOWNER() {
+        return new CONFIGURATIONType.OWNER();
+    }
+
+    /**
+     * Create an instance of {@link RECOMMENDATIONSType }
+     * 
+     */
+    public RECOMMENDATIONSType createRECOMMENDATIONSType() {
+        return new RECOMMENDATIONSType();
+    }
+
+    /**
+     * Create an instance of {@link MANAGERSType }
+     * 
+     */
+    public MANAGERSType createMANAGERSType() {
+        return new MANAGERSType();
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BLACKBOARDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BLACKBOARDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/BLACKBOARDType.java	(revision 48242)
@@ -0,0 +1,133 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BLACKBOARDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BLACKBOARDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="LAST_REQUEST" type="{}BLACKBOARD_LASTType"/>
+ *         &lt;element name="LAST_RESPONSE" type="{}BLACKBOARD_LASTType"/>
+ *         &lt;element name="MESSAGE" type="{}MESSAGEType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BLACKBOARDType", propOrder = {
+    "lastrequest",
+    "lastresponse",
+    "message"
+})
+public class BLACKBOARDType {
+
+    @XmlElement(name = "LAST_REQUEST", required = true)
+    protected BLACKBOARDLASTType lastrequest;
+    @XmlElement(name = "LAST_RESPONSE", required = true)
+    protected BLACKBOARDLASTType lastresponse;
+    @XmlElement(name = "MESSAGE")
+    protected List<MESSAGEType> message;
+
+    /**
+     * Gets the value of the lastrequest property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BLACKBOARDLASTType }
+     *     
+     */
+    public BLACKBOARDLASTType getLASTREQUEST() {
+        return lastrequest;
+    }
+
+    /**
+     * Sets the value of the lastrequest property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BLACKBOARDLASTType }
+     *     
+     */
+    public void setLASTREQUEST(BLACKBOARDLASTType value) {
+        this.lastrequest = value;
+    }
+
+    /**
+     * Gets the value of the lastresponse property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BLACKBOARDLASTType }
+     *     
+     */
+    public BLACKBOARDLASTType getLASTRESPONSE() {
+        return lastresponse;
+    }
+
+    /**
+     * Sets the value of the lastresponse property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BLACKBOARDLASTType }
+     *     
+     */
+    public void setLASTRESPONSE(BLACKBOARDLASTType value) {
+        this.lastresponse = value;
+    }
+
+    /**
+     * Gets the value of the message property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the message property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMESSAGE().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MESSAGEType }
+     * 
+     * 
+     */
+    public List<MESSAGEType> getMESSAGE() {
+        if (message == null) {
+            message = new ArrayList<MESSAGEType>();
+        }
+        return this.message;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,72 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="UserDSResources"/>
+ *             &lt;enumeration value="PendingDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/SAVEDQUERYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/SAVEDQUERYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/SAVEDQUERYType.java	(revision 48242)
@@ -0,0 +1,123 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SAVED_QUERYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SAVED_QUERYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="query" type="{}QUERYType"/>
+ *         &lt;element name="hashValue" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="alertOnChange" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SAVED_QUERYType", propOrder = {
+    "query",
+    "hashValue",
+    "alertOnChange"
+})
+public class SAVEDQUERYType {
+
+    @XmlElement(required = true)
+    protected QUERYType query;
+    protected List<String> hashValue;
+    protected boolean alertOnChange;
+
+    /**
+     * Gets the value of the query property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link QUERYType }
+     *     
+     */
+    public QUERYType getQuery() {
+        return query;
+    }
+
+    /**
+     * Sets the value of the query property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link QUERYType }
+     *     
+     */
+    public void setQuery(QUERYType value) {
+        this.query = value;
+    }
+
+    /**
+     * Gets the value of the hashValue property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the hashValue property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getHashValue().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getHashValue() {
+        if (hashValue == null) {
+            hashValue = new ArrayList<String>();
+        }
+        return this.hashValue;
+    }
+
+    /**
+     * Gets the value of the alertOnChange property.
+     * 
+     */
+    public boolean isAlertOnChange() {
+        return alertOnChange;
+    }
+
+    /**
+     * Sets the value of the alertOnChange property.
+     * 
+     */
+    public void setAlertOnChange(boolean value) {
+        this.alertOnChange = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/PERSONALINFOType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/PERSONALINFOType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/PERSONALINFOType.java	(revision 48242)
@@ -0,0 +1,564 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PERSONAL_INFOType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PERSONAL_INFOType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="FIRST_NAME">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="LAST_NAME">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="INSTITUTION">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="EMAIL">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="ACTIVATION_ID">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="ACTIVE">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PERSONAL_INFOType", propOrder = {
+    "firstname",
+    "lastname",
+    "institution",
+    "email",
+    "activationid",
+    "active"
+})
+public class PERSONALINFOType {
+
+    @XmlElement(name = "FIRST_NAME", required = true)
+    protected PERSONALINFOType.FIRSTNAME firstname;
+    @XmlElement(name = "LAST_NAME", required = true)
+    protected PERSONALINFOType.LASTNAME lastname;
+    @XmlElement(name = "INSTITUTION", required = true)
+    protected PERSONALINFOType.INSTITUTION institution;
+    @XmlElement(name = "EMAIL", required = true)
+    protected PERSONALINFOType.EMAIL email;
+    @XmlElement(name = "ACTIVATION_ID", required = true)
+    protected PERSONALINFOType.ACTIVATIONID activationid;
+    @XmlElement(name = "ACTIVE", required = true)
+    protected PERSONALINFOType.ACTIVE active;
+
+    /**
+     * Gets the value of the firstname property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PERSONALINFOType.FIRSTNAME }
+     *     
+     */
+    public PERSONALINFOType.FIRSTNAME getFIRSTNAME() {
+        return firstname;
+    }
+
+    /**
+     * Sets the value of the firstname property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PERSONALINFOType.FIRSTNAME }
+     *     
+     */
+    public void setFIRSTNAME(PERSONALINFOType.FIRSTNAME value) {
+        this.firstname = value;
+    }
+
+    /**
+     * Gets the value of the lastname property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PERSONALINFOType.LASTNAME }
+     *     
+     */
+    public PERSONALINFOType.LASTNAME getLASTNAME() {
+        return lastname;
+    }
+
+    /**
+     * Sets the value of the lastname property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PERSONALINFOType.LASTNAME }
+     *     
+     */
+    public void setLASTNAME(PERSONALINFOType.LASTNAME value) {
+        this.lastname = value;
+    }
+
+    /**
+     * Gets the value of the institution property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PERSONALINFOType.INSTITUTION }
+     *     
+     */
+    public PERSONALINFOType.INSTITUTION getINSTITUTION() {
+        return institution;
+    }
+
+    /**
+     * Sets the value of the institution property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PERSONALINFOType.INSTITUTION }
+     *     
+     */
+    public void setINSTITUTION(PERSONALINFOType.INSTITUTION value) {
+        this.institution = value;
+    }
+
+    /**
+     * Gets the value of the email property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PERSONALINFOType.EMAIL }
+     *     
+     */
+    public PERSONALINFOType.EMAIL getEMAIL() {
+        return email;
+    }
+
+    /**
+     * Sets the value of the email property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PERSONALINFOType.EMAIL }
+     *     
+     */
+    public void setEMAIL(PERSONALINFOType.EMAIL value) {
+        this.email = value;
+    }
+
+    /**
+     * Gets the value of the activationid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PERSONALINFOType.ACTIVATIONID }
+     *     
+     */
+    public PERSONALINFOType.ACTIVATIONID getACTIVATIONID() {
+        return activationid;
+    }
+
+    /**
+     * Sets the value of the activationid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PERSONALINFOType.ACTIVATIONID }
+     *     
+     */
+    public void setACTIVATIONID(PERSONALINFOType.ACTIVATIONID value) {
+        this.activationid = value;
+    }
+
+    /**
+     * Gets the value of the active property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PERSONALINFOType.ACTIVE }
+     *     
+     */
+    public PERSONALINFOType.ACTIVE getACTIVE() {
+        return active;
+    }
+
+    /**
+     * Sets the value of the active property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PERSONALINFOType.ACTIVE }
+     *     
+     */
+    public void setACTIVE(PERSONALINFOType.ACTIVE value) {
+        this.active = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class ACTIVATIONID {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class ACTIVE {
+
+        @XmlAttribute
+        protected Boolean value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setValue(Boolean value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class EMAIL {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class FIRSTNAME {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class INSTITUTION {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class LASTNAME {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/LAYOUTType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/LAYOUTType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/LAYOUTType.java	(revision 48242)
@@ -0,0 +1,45 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.04 at 06:02:31 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for LAYOUTType.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="LAYOUTType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="FULL"/>
+ *     &lt;enumeration value="BRIEF"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ * 
+ */
+@XmlType(name = "LAYOUTType")
+@XmlEnum
+public enum LAYOUTType {
+
+    FULL,
+    BRIEF;
+
+    public String value() {
+        return name();
+    }
+
+    public static LAYOUTType fromValue(String v) {
+        return valueOf(v);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PROTOCOLType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PROTOCOLType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/PROTOCOLType.java	(revision 48242)
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PROTOCOLType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="PROTOCOLType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="address" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PROTOCOLType")
+public class PROTOCOLType {
+
+    @XmlAttribute(required = true)
+    protected String name;
+    @XmlAttribute(required = true)
+    protected String address;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the address property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAddress() {
+        return address;
+    }
+
+    /**
+     * Sets the value of the address property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAddress(String value) {
+        this.address = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,66 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected XMLGregorianCalendar value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setValue(XMLGregorianCalendar value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ws/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,344 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.02.16 at 06:22:03 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.ws;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.ws.xml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _AVAILABILITY_QNAME = new QName("", "AVAILABILITY");
+    private final static QName _THROUGHPUT_QNAME = new QName("", "THROUGHPUT");
+    private final static QName _BLACKBOARD_QNAME = new QName("", "BLACKBOARD");
+    private final static QName _CAPACITY_QNAME = new QName("", "CAPACITY");
+    private final static QName _TYPOLOGY_QNAME = new QName("", "TYPOLOGY");
+    private final static QName _SECURITYPARAMETERS_QNAME = new QName("", "SECURITY_PARAMETERS");
+    private final static QName _MAXSIZEOFDATASTRUCTURE_QNAME = new QName("", "MAX_SIZE_OF_DATASTRUCTURE");
+    private final static QName _MAXNUMBEROFDATASTRUCTURE_QNAME = new QName("", "MAX_NUMBER_OF_DATASTRUCTURE");
+    private final static QName _ACTIONSTATUS_QNAME = new QName("", "ACTION_STATUS");
+    private final static QName _RESPONSETIME_QNAME = new QName("", "RESPONSE_TIME");
+    private final static QName _AVAILABLEDISKSPACE_QNAME = new QName("", "AVAILABLE_DISKSPACE");
+    private final static QName _HANDLEDDATASTRUCTURE_QNAME = new QName("", "HANDLED_DATASTRUCTURE");
+    private final static QName _USEDDISKSPACE_QNAME = new QName("", "USED_DISKSPACE");
+    private final static QName _ACTION_QNAME = new QName("", "ACTION");
+    private final static QName _STATUSLASTUPDATE_QNAME = new QName("", "LAST_UPDATE");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.ws.xml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link STATUS }
+     * 
+     */
+    public STATUS createSTATUS() {
+        return new STATUS();
+    }
+
+    /**
+     * Create an instance of {@link LASTUPDATEType }
+     * 
+     */
+    public LASTUPDATEType createLASTUPDATEType() {
+        return new LASTUPDATEType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link MESSAGEType }
+     * 
+     */
+    public MESSAGEType createMESSAGEType() {
+        return new MESSAGEType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link PARENTIDType }
+     * 
+     */
+    public PARENTIDType createPARENTIDType() {
+        return new PARENTIDType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATION }
+     * 
+     */
+    public CONFIGURATION createCONFIGURATION() {
+        return new CONFIGURATION();
+    }
+
+    /**
+     * Create an instance of {@link PROTOCOLSType }
+     * 
+     */
+    public PROTOCOLSType createPROTOCOLSType() {
+        return new PROTOCOLSType();
+    }
+
+    /**
+     * Create an instance of {@link BLACKBOARDLASTType }
+     * 
+     */
+    public BLACKBOARDLASTType createBLACKBOARDLASTType() {
+        return new BLACKBOARDLASTType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link PARAMETERType }
+     * 
+     */
+    public PARAMETERType createPARAMETERType() {
+        return new PARAMETERType();
+    }
+
+    /**
+     * Create an instance of {@link PROTOCOLType }
+     * 
+     */
+    public PROTOCOLType createPROTOCOLType() {
+        return new PROTOCOLType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link BLACKBOARDType }
+     * 
+     */
+    public BLACKBOARDType createBLACKBOARDType() {
+        return new BLACKBOARDType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link QOS }
+     * 
+     */
+    public QOS createQOS() {
+        return new QOS();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "AVAILABILITY")
+    public JAXBElement<String> createAVAILABILITY(String value) {
+        return new JAXBElement<String>(_AVAILABILITY_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Double }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "THROUGHPUT")
+    public JAXBElement<Double> createTHROUGHPUT(Double value) {
+        return new JAXBElement<Double>(_THROUGHPUT_QNAME, Double.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link BLACKBOARDType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "BLACKBOARD")
+    public JAXBElement<BLACKBOARDType> createBLACKBOARD(BLACKBOARDType value) {
+        return new JAXBElement<BLACKBOARDType>(_BLACKBOARD_QNAME, BLACKBOARDType.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "CAPACITY")
+    public JAXBElement<String> createCAPACITY(String value) {
+        return new JAXBElement<String>(_CAPACITY_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "TYPOLOGY")
+    public JAXBElement<String> createTYPOLOGY(String value) {
+        return new JAXBElement<String>(_TYPOLOGY_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "SECURITY_PARAMETERS")
+    public JAXBElement<String> createSECURITYPARAMETERS(String value) {
+        return new JAXBElement<String>(_SECURITYPARAMETERS_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "MAX_SIZE_OF_DATASTRUCTURE")
+    public JAXBElement<Integer> createMAXSIZEOFDATASTRUCTURE(Integer value) {
+        return new JAXBElement<Integer>(_MAXSIZEOFDATASTRUCTURE_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "MAX_NUMBER_OF_DATASTRUCTURE")
+    public JAXBElement<Integer> createMAXNUMBEROFDATASTRUCTURE(Integer value) {
+        return new JAXBElement<Integer>(_MAXNUMBEROFDATASTRUCTURE_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "ACTION_STATUS")
+    public JAXBElement<String> createACTIONSTATUS(String value) {
+        return new JAXBElement<String>(_ACTIONSTATUS_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "RESPONSE_TIME")
+    public JAXBElement<Integer> createRESPONSETIME(Integer value) {
+        return new JAXBElement<Integer>(_RESPONSETIME_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "AVAILABLE_DISKSPACE")
+    public JAXBElement<Integer> createAVAILABLEDISKSPACE(Integer value) {
+        return new JAXBElement<Integer>(_AVAILABLEDISKSPACE_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "HANDLED_DATASTRUCTURE")
+    public JAXBElement<Integer> createHANDLEDDATASTRUCTURE(Integer value) {
+        return new JAXBElement<Integer>(_HANDLEDDATASTRUCTURE_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "USED_DISKSPACE")
+    public JAXBElement<Integer> createUSEDDISKSPACE(Integer value) {
+        return new JAXBElement<Integer>(_USEDDISKSPACE_QNAME, Integer.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "ACTION")
+    public JAXBElement<String> createACTION(String value) {
+        return new JAXBElement<String>(_ACTION_QNAME, String.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link LASTUPDATEType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "LAST_UPDATE", scope = STATUS.class)
+    public JAXBElement<LASTUPDATEType> createSTATUSLASTUPDATE(LASTUPDATEType value) {
+        return new JAXBElement<LASTUPDATEType>(_STATUSLASTUPDATE_QNAME, LASTUPDATEType.class, STATUS.class, value);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CHILDRENType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CHILDRENType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CHILDRENType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CHILDRENType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CHILDRENType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CHILD" type="{}CHILDType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CHILDRENType", propOrder = {
+    "child"
+})
+public class CHILDRENType {
+
+    @XmlElement(name = "CHILD")
+    protected List<CHILDType> child;
+
+    /**
+     * Gets the value of the child property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the child property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getCHILD().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link CHILDType }
+     * 
+     * 
+     */
+    public List<CHILDType> getCHILD() {
+        if (child == null) {
+            child = new ArrayList<CHILDType>();
+        }
+        return this.child;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/FILTERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/FILTERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/FILTERType.java	(revision 48242)
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for FILTERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="FILTERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="query" type="{}SAVED_QUERYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FILTERType", propOrder = {
+    "query"
+})
+public class FILTERType {
+
+    @XmlElement(required = true)
+    protected SAVEDQUERYType query;
+
+    /**
+     * Gets the value of the query property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SAVEDQUERYType }
+     *     
+     */
+    public SAVEDQUERYType getQuery() {
+        return query;
+    }
+
+    /**
+     * Sets the value of the query property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SAVEDQUERYType }
+     *     
+     */
+    public void setQuery(SAVEDQUERYType value) {
+        this.query = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RETRIEVALCONDITIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RETRIEVALCONDITIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RETRIEVALCONDITIONType.java	(revision 48242)
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for RETRIEVAL_CONDITIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RETRIEVAL_CONDITIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="frozen" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}int">
+ *             &lt;enumeration value="0"/>
+ *             &lt;enumeration value="1"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RETRIEVAL_CONDITIONType", propOrder = {
+    "content"
+})
+public class RETRIEVALCONDITIONType {
+
+    @XmlValue
+    protected String content;
+    @XmlAttribute(required = true)
+    protected int frozen;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the value of the content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setContent(String value) {
+        this.content = value;
+    }
+
+    /**
+     * Gets the value of the frozen property.
+     * 
+     */
+    public int getFrozen() {
+        return frozen;
+    }
+
+    /**
+     * Sets the value of the frozen property.
+     * 
+     */
+    public void setFrozen(int value) {
+        this.frozen = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BASKETDOCUMENTType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BASKETDOCUMENTType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BASKETDOCUMENTType.java	(revision 48242)
@@ -0,0 +1,94 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for BASKETDOCUMENTType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BASKETDOCUMENTType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BASKETDOCUMENTType", propOrder = {
+    "content"
+})
+public class BASKETDOCUMENTType {
+
+    @XmlValue
+    protected String content;
+    @XmlAttribute(required = true)
+    protected String id;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the value of the content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setContent(String value) {
+        this.content = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BASKETType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BASKETType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BASKETType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BASKETType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BASKETType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="DOCUMENT" type="{}BASKETDOCUMENTType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BASKETType", propOrder = {
+    "document"
+})
+public class BASKETType {
+
+    @XmlElement(name = "DOCUMENT")
+    protected List<BASKETDOCUMENTType> document;
+
+    /**
+     * Gets the value of the document property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the document property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDOCUMENT().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link BASKETDOCUMENTType }
+     * 
+     * 
+     */
+    public List<BASKETDOCUMENTType> getDOCUMENT() {
+        if (document == null) {
+            document = new ArrayList<BASKETDOCUMENTType>();
+        }
+        return this.document;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/BODYType.java	(revision 48242)
@@ -0,0 +1,125 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{}STATUSType"/>
+ *         &lt;element ref="{}SECURITY_PARAMETERS"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "securityparameters"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected STATUSType status;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected String securityparameters;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STATUSType }
+     *     
+     */
+    public STATUSType getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STATUSType }
+     *     
+     */
+    public void setSTATUS(STATUSType value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETERS(String value) {
+        this.securityparameters = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,279 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.xml.userprofile package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.xml.userprofile
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link QUERYType }
+     * 
+     */
+    public QUERYType createQUERYType() {
+        return new QUERYType();
+    }
+
+    /**
+     * Create an instance of {@link SECURITYPARAMETERSType }
+     * 
+     */
+    public SECURITYPARAMETERSType createSECURITYPARAMETERSType() {
+        return new SECURITYPARAMETERSType();
+    }
+
+    /**
+     * Create an instance of {@link QUERYType.REFINE }
+     * 
+     */
+    public QUERYType.REFINE createQUERYTypeREFINE() {
+        return new QUERYType.REFINE();
+    }
+
+    /**
+     * Create an instance of {@link PERSONALINFOType.EMAIL }
+     * 
+     */
+    public PERSONALINFOType.EMAIL createPERSONALINFOTypeEMAIL() {
+        return new PERSONALINFOType.EMAIL();
+    }
+
+    /**
+     * Create an instance of {@link QUERYType.CQL }
+     * 
+     */
+    public QUERYType.CQL createQUERYTypeCQL() {
+        return new QUERYType.CQL();
+    }
+
+    /**
+     * Create an instance of {@link COMMUNITIESType }
+     * 
+     */
+    public COMMUNITIESType createCOMMUNITIESType() {
+        return new COMMUNITIESType();
+    }
+
+    /**
+     * Create an instance of {@link SAVEDQUERYType }
+     * 
+     */
+    public SAVEDQUERYType createSAVEDQUERYType() {
+        return new SAVEDQUERYType();
+    }
+
+    /**
+     * Create an instance of {@link FILTERType }
+     * 
+     */
+    public FILTERType createFILTERType() {
+        return new FILTERType();
+    }
+
+    /**
+     * Create an instance of {@link QUERYType.COMMUNITYID }
+     * 
+     */
+    public QUERYType.COMMUNITYID createQUERYTypeCOMMUNITYID() {
+        return new QUERYType.COMMUNITYID();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link RECOMMENDATIONType }
+     * 
+     */
+    public RECOMMENDATIONType createRECOMMENDATIONType() {
+        return new RECOMMENDATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link RECOMMENDATIONSType }
+     * 
+     */
+    public RECOMMENDATIONSType createRECOMMENDATIONSType() {
+        return new RECOMMENDATIONSType();
+    }
+
+    /**
+     * Create an instance of {@link PERSONALINFOType.LASTNAME }
+     * 
+     */
+    public PERSONALINFOType.LASTNAME createPERSONALINFOTypeLASTNAME() {
+        return new PERSONALINFOType.LASTNAME();
+    }
+
+    /**
+     * Create an instance of {@link PERSONALINFOType.ACTIVATIONID }
+     * 
+     */
+    public PERSONALINFOType.ACTIVATIONID createPERSONALINFOTypeACTIVATIONID() {
+        return new PERSONALINFOType.ACTIVATIONID();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link PERSONALINFOType.INSTITUTION }
+     * 
+     */
+    public PERSONALINFOType.INSTITUTION createPERSONALINFOTypeINSTITUTION() {
+        return new PERSONALINFOType.INSTITUTION();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link PERSONALINFOType.ACTIVE }
+     * 
+     */
+    public PERSONALINFOType.ACTIVE createPERSONALINFOTypeACTIVE() {
+        return new PERSONALINFOType.ACTIVE();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link DOCUMENTSType }
+     * 
+     */
+    public DOCUMENTSType createDOCUMENTSType() {
+        return new DOCUMENTSType();
+    }
+
+    /**
+     * Create an instance of {@link QUERYType.COLLECTIONID }
+     * 
+     */
+    public QUERYType.COLLECTIONID createQUERYTypeCOLLECTIONID() {
+        return new QUERYType.COLLECTIONID();
+    }
+
+    /**
+     * Create an instance of {@link PERSONALINFOType.FIRSTNAME }
+     * 
+     */
+    public PERSONALINFOType.FIRSTNAME createPERSONALINFOTypeFIRSTNAME() {
+        return new PERSONALINFOType.FIRSTNAME();
+    }
+
+    /**
+     * Create an instance of {@link STOREType }
+     * 
+     */
+    public STOREType createSTOREType() {
+        return new STOREType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link PERSONALINFOType }
+     * 
+     */
+    public PERSONALINFOType createPERSONALINFOType() {
+        return new PERSONALINFOType();
+    }
+
+    /**
+     * Create an instance of {@link COMMUNITYREGISTRATIONType }
+     * 
+     */
+    public COMMUNITYREGISTRATIONType createCOMMUNITYREGISTRATIONType() {
+        return new COMMUNITYREGISTRATIONType();
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CHILDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CHILDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CHILDType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CHILDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CHILDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CHILDType")
+public class CHILDType {
+
+    @XmlAttribute(required = true)
+    protected String id;
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="CollectionDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RSSFEEDINFOType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RSSFEEDINFOType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RSSFEEDINFOType.java	(revision 48242)
@@ -0,0 +1,161 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RSSFEED_INFOType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RSSFEED_INFOType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="USER_ID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="CQLQUERY" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="DATE_OF_LAST_VISIT" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="DOCUMENTS" type="{}DOCUMENTSType" maxOccurs="unbounded"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RSSFEED_INFOType", propOrder = {
+    "userid",
+    "cqlquery",
+    "dateoflastvisit",
+    "documents"
+})
+public class RSSFEEDINFOType {
+
+    @XmlElement(name = "USER_ID", required = true)
+    protected String userid;
+    @XmlElement(name = "CQLQUERY", required = true)
+    protected String cqlquery;
+    @XmlElement(name = "DATE_OF_LAST_VISIT", required = true)
+    protected String dateoflastvisit;
+    @XmlElement(name = "DOCUMENTS", required = true)
+    protected List<DOCUMENTSType> documents;
+
+    /**
+     * Gets the value of the userid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUSERID() {
+        return userid;
+    }
+
+    /**
+     * Sets the value of the userid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUSERID(String value) {
+        this.userid = value;
+    }
+
+    /**
+     * Gets the value of the cqlquery property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCQLQUERY() {
+        return cqlquery;
+    }
+
+    /**
+     * Sets the value of the cqlquery property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCQLQUERY(String value) {
+        this.cqlquery = value;
+    }
+
+    /**
+     * Gets the value of the dateoflastvisit property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDATEOFLASTVISIT() {
+        return dateoflastvisit;
+    }
+
+    /**
+     * Sets the value of the dateoflastvisit property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDATEOFLASTVISIT(String value) {
+        this.dateoflastvisit = value;
+    }
+
+    /**
+     * Gets the value of the documents property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the documents property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDOCUMENTS().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DOCUMENTSType }
+     * 
+     * 
+     */
+    public List<DOCUMENTSType> getDOCUMENTS() {
+        if (documents == null) {
+            documents = new ArrayList<DOCUMENTSType>();
+        }
+        return this.documents;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/BODYType.java	(revision 48242)
@@ -0,0 +1,160 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="QUERY_RESULTS" type="{}QUERY_RESULTSType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="USER_ID" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="CQL_QUERY" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="HASH_VALUE" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "queryresults"
+})
+public class BODYType {
+
+    @XmlElement(name = "QUERY_RESULTS")
+    protected List<QUERYRESULTSType> queryresults;
+    @XmlAttribute(name = "USER_ID", required = true)
+    protected String userid;
+    @XmlAttribute(name = "CQL_QUERY", required = true)
+    protected String cqlquery;
+    @XmlAttribute(name = "HASH_VALUE", required = true)
+    protected BigInteger hashvalue;
+
+    /**
+     * Gets the value of the queryresults property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the queryresults property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getQUERYRESULTS().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link QUERYRESULTSType }
+     * 
+     * 
+     */
+    public List<QUERYRESULTSType> getQUERYRESULTS() {
+        if (queryresults == null) {
+            queryresults = new ArrayList<QUERYRESULTSType>();
+        }
+        return this.queryresults;
+    }
+
+    /**
+     * Gets the value of the userid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getUSERID() {
+        return userid;
+    }
+
+    /**
+     * Sets the value of the userid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setUSERID(String value) {
+        this.userid = value;
+    }
+
+    /**
+     * Gets the value of the cqlquery property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCQLQUERY() {
+        return cqlquery;
+    }
+
+    /**
+     * Sets the value of the cqlquery property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCQLQUERY(String value) {
+        this.cqlquery = value;
+    }
+
+    /**
+     * Gets the value of the hashvalue property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getHASHVALUE() {
+        return hashvalue;
+    }
+
+    /**
+     * Sets the value of the hashvalue property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setHASHVALUE(BigInteger value) {
+        this.hashvalue = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/BODYType.java	(revision 48242)
@@ -0,0 +1,209 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="SECURITY_PARAMETERS" type="{}SECURITY_PARAMETERSType"/>
+ *         &lt;element name="INDEX" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
+ *         &lt;element name="ACTIVE" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         &lt;element name="TITLE" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "securityparameters",
+    "index",
+    "active",
+    "title"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected String status;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected SECURITYPARAMETERSType securityparameters;
+    @XmlElement(name = "INDEX")
+    protected Integer index;
+    @XmlElement(name = "ACTIVE")
+    protected Boolean active;
+    @XmlElement(name = "TITLE")
+    protected String title;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSTATUS(String value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public SECURITYPARAMETERSType getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public void setSECURITYPARAMETERS(SECURITYPARAMETERSType value) {
+        this.securityparameters = value;
+    }
+
+    /**
+     * Gets the value of the index property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getINDEX() {
+        return index;
+    }
+
+    /**
+     * Sets the value of the index property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setINDEX(Integer value) {
+        this.index = value;
+    }
+
+    /**
+     * Gets the value of the active property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isACTIVE() {
+        return active;
+    }
+
+    /**
+     * Sets the value of the active property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setACTIVE(Boolean value) {
+        this.active = value;
+    }
+
+    /**
+     * Gets the value of the title property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTITLE() {
+        return title;
+    }
+
+    /**
+     * Sets the value of the title property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTITLE(String value) {
+        this.title = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,396 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element ref="{}IMAGE_URL"/>
+ *         &lt;element ref="{}NAME"/>
+ *         &lt;element name="OWNER" type="{}OWNERType"/>
+ *         &lt;element name="MANAGERS" type="{}MANAGERSType" minOccurs="0"/>
+ *         &lt;element name="BASKET" type="{}BASKETType" minOccurs="0"/>
+ *         &lt;element name="FATHER" type="{}FATHERType"/>
+ *         &lt;element name="DESCRIPTION" type="{}DESCRIPTIONType"/>
+ *         &lt;element ref="{}SUBJECT"/>
+ *         &lt;element ref="{}PRIVATE"/>
+ *         &lt;element ref="{}VISIBLE"/>
+ *         &lt;element ref="{}CONTAINER"/>
+ *         &lt;element name="CHILDREN" type="{}CHILDRENType"/>
+ *         &lt;element ref="{}MEMBERSHIP_CONDITION"/>
+ *         &lt;element ref="{}ICON_URI"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "IMAGE_URL", required = true)
+    protected String imageurl;
+    @XmlElement(name = "NAME", required = true)
+    protected String name;
+    @XmlElement(name = "OWNER", required = true)
+    protected OWNERType owner;
+    @XmlElement(name = "MANAGERS")
+    protected MANAGERSType managers;
+    @XmlElement(name = "BASKET")
+    protected BASKETType basket;
+    @XmlElement(name = "FATHER", required = true)
+    protected FATHERType father;
+    @XmlElement(name = "DESCRIPTION", required = true)
+    protected DESCRIPTIONType description;
+    @XmlElement(name = "SUBJECT", required = true)
+    protected String subject;
+    @XmlElement(name = "PRIVATE")
+    protected int _private;
+    @XmlElement(name = "VISIBLE")
+    protected int visible;
+    @XmlElement(name = "CONTAINER")
+    protected int container;
+    @XmlElement(name = "CHILDREN", required = true)
+    protected CHILDRENType children;
+    @XmlElement(name = "MEMBERSHIP_CONDITION", required = true)
+    protected String membershipcondition;
+    @XmlElement(name = "ICON_URI", required = true)
+    protected String iconuri;
+
+    /**
+     * Gets the value of the imageurl property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getIMAGEURL() {
+        return imageurl;
+    }
+
+    /**
+     * Sets the value of the imageurl property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setIMAGEURL(String value) {
+        this.imageurl = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNAME() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNAME(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the owner property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link OWNERType }
+     *     
+     */
+    public OWNERType getOWNER() {
+        return owner;
+    }
+
+    /**
+     * Sets the value of the owner property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link OWNERType }
+     *     
+     */
+    public void setOWNER(OWNERType value) {
+        this.owner = value;
+    }
+
+    /**
+     * Gets the value of the managers property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MANAGERSType }
+     *     
+     */
+    public MANAGERSType getMANAGERS() {
+        return managers;
+    }
+
+    /**
+     * Sets the value of the managers property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MANAGERSType }
+     *     
+     */
+    public void setMANAGERS(MANAGERSType value) {
+        this.managers = value;
+    }
+
+    /**
+     * Gets the value of the basket property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BASKETType }
+     *     
+     */
+    public BASKETType getBASKET() {
+        return basket;
+    }
+
+    /**
+     * Sets the value of the basket property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BASKETType }
+     *     
+     */
+    public void setBASKET(BASKETType value) {
+        this.basket = value;
+    }
+
+    /**
+     * Gets the value of the father property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FATHERType }
+     *     
+     */
+    public FATHERType getFATHER() {
+        return father;
+    }
+
+    /**
+     * Sets the value of the father property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FATHERType }
+     *     
+     */
+    public void setFATHER(FATHERType value) {
+        this.father = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DESCRIPTIONType }
+     *     
+     */
+    public DESCRIPTIONType getDESCRIPTION() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DESCRIPTIONType }
+     *     
+     */
+    public void setDESCRIPTION(DESCRIPTIONType value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the subject property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSUBJECT() {
+        return subject;
+    }
+
+    /**
+     * Sets the value of the subject property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSUBJECT(String value) {
+        this.subject = value;
+    }
+
+    /**
+     * Gets the value of the private property.
+     * 
+     */
+    public int getPRIVATE() {
+        return _private;
+    }
+
+    /**
+     * Sets the value of the private property.
+     * 
+     */
+    public void setPRIVATE(int value) {
+        this._private = value;
+    }
+
+    /**
+     * Gets the value of the visible property.
+     * 
+     */
+    public int getVISIBLE() {
+        return visible;
+    }
+
+    /**
+     * Sets the value of the visible property.
+     * 
+     */
+    public void setVISIBLE(int value) {
+        this.visible = value;
+    }
+
+    /**
+     * Gets the value of the container property.
+     * 
+     */
+    public int getCONTAINER() {
+        return container;
+    }
+
+    /**
+     * Sets the value of the container property.
+     * 
+     */
+    public void setCONTAINER(int value) {
+        this.container = value;
+    }
+
+    /**
+     * Gets the value of the children property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CHILDRENType }
+     *     
+     */
+    public CHILDRENType getCHILDREN() {
+        return children;
+    }
+
+    /**
+     * Sets the value of the children property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CHILDRENType }
+     *     
+     */
+    public void setCHILDREN(CHILDRENType value) {
+        this.children = value;
+    }
+
+    /**
+     * Gets the value of the membershipcondition property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMEMBERSHIPCONDITION() {
+        return membershipcondition;
+    }
+
+    /**
+     * Sets the value of the membershipcondition property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMEMBERSHIPCONDITION(String value) {
+        this.membershipcondition = value;
+    }
+
+    /**
+     * Gets the value of the iconuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getICONURI() {
+        return iconuri;
+    }
+
+    /**
+     * Sets the value of the iconuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setICONURI(String value) {
+        this.iconuri = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/MANAGERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/MANAGERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/MANAGERType.java	(revision 48242)
@@ -0,0 +1,121 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for MANAGERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="MANAGERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="role" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MANAGERType", propOrder = {
+    "content"
+})
+public class MANAGERType {
+
+    @XmlValue
+    protected String content;
+    @XmlAttribute(required = true)
+    protected String id;
+    @XmlAttribute(required = true)
+    protected String role;
+
+    /**
+     * Gets the value of the content property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * Sets the value of the content property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setContent(String value) {
+        this.content = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the role property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getRole() {
+        return role;
+    }
+
+    /**
+     * Sets the value of the role property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setRole(String value) {
+        this.role = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/USERSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/USERSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/USERSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for USERSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="USERSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="USER_ID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "USERSType", propOrder = {
+    "userid"
+})
+public class USERSType {
+
+    @XmlElement(name = "USER_ID")
+    protected List<String> userid;
+
+    /**
+     * Gets the value of the userid property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the userid property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getUSERID().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getUSERID() {
+        if (userid == null) {
+            userid = new ArrayList<String>();
+        }
+        return this.userid;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,135 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.RSSFeed.xml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.RSSFeed.xml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link SECURITYPARAMETERSType }
+     * 
+     */
+    public SECURITYPARAMETERSType createSECURITYPARAMETERSType() {
+        return new SECURITYPARAMETERSType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link DOCUMENTSType }
+     * 
+     */
+    public DOCUMENTSType createDOCUMENTSType() {
+        return new DOCUMENTSType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RSSFEEDINFOType }
+     * 
+     */
+    public RSSFEEDINFOType createRSSFEEDINFOType() {
+        return new RSSFEEDINFOType();
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RECOMMENDATIONSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RECOMMENDATIONSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RECOMMENDATIONSType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RECOMMENDATIONSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RECOMMENDATIONSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="RECOMMENDATION_ID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RECOMMENDATIONSType", propOrder = {
+    "recommendationid"
+})
+public class RECOMMENDATIONSType {
+
+    @XmlElement(name = "RECOMMENDATION_ID")
+    protected List<String> recommendationid;
+
+    /**
+     * Gets the value of the recommendationid property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the recommendationid property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getRECOMMENDATIONID().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getRECOMMENDATIONID() {
+        if (recommendationid == null) {
+            recommendationid = new ArrayList<String>();
+        }
+        return this.recommendationid;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/BODYType.java	(revision 48242)
@@ -0,0 +1,125 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="SECURITY_PARAMETERS" type="{}SECURITY_PARAMETERSType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "securityparameters"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected String status;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected SECURITYPARAMETERSType securityparameters;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSTATUS(String value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public SECURITYPARAMETERSType getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public void setSECURITYPARAMETERS(SECURITYPARAMETERSType value) {
+        this.securityparameters = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="RECOMMENDATION_INFO" type="{}RECOMMENDATION_INFOType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+    "recommendationinfo"
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "RECOMMENDATION_INFO", required = true)
+    protected RECOMMENDATIONINFOType recommendationinfo;
+
+    /**
+     * Gets the value of the recommendationinfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RECOMMENDATIONINFOType }
+     *     
+     */
+    public RECOMMENDATIONINFOType getRECOMMENDATIONINFO() {
+        return recommendationinfo;
+    }
+
+    /**
+     * Sets the value of the recommendationinfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RECOMMENDATIONINFOType }
+     *     
+     */
+    public void setRECOMMENDATIONINFO(RECOMMENDATIONINFOType value) {
+        this.recommendationinfo = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="RecommendationDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/STATUSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/STATUSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/STATUSType.java	(revision 48242)
@@ -0,0 +1,865 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for STATUSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="STATUSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="LAYOUTS">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element name="LAYOUT" maxOccurs="unbounded" minOccurs="0">
+ *                     &lt;complexType>
+ *                       &lt;complexContent>
+ *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                           &lt;all>
+ *                             &lt;element name="FIELDS">
+ *                               &lt;complexType>
+ *                                 &lt;complexContent>
+ *                                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                                     &lt;sequence>
+ *                                       &lt;element name="FIELD" maxOccurs="unbounded" minOccurs="0">
+ *                                         &lt;complexType>
+ *                                           &lt;complexContent>
+ *                                             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                                               &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                               &lt;attribute name="xpath" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                               &lt;attribute name="indexable" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                                               &lt;attribute name="result" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                                               &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                               &lt;attribute name="stat" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                                               &lt;attribute name="tokenizable" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                                             &lt;/restriction>
+ *                                           &lt;/complexContent>
+ *                                         &lt;/complexType>
+ *                                       &lt;/element>
+ *                                     &lt;/sequence>
+ *                                   &lt;/restriction>
+ *                                 &lt;/complexContent>
+ *                               &lt;/complexType>
+ *                             &lt;/element>
+ *                             &lt;element name="TRANSFORMATION" minOccurs="0">
+ *                               &lt;complexType>
+ *                                 &lt;complexContent>
+ *                                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                                     &lt;sequence>
+ *                                       &lt;any/>
+ *                                     &lt;/sequence>
+ *                                     &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                   &lt;/restriction>
+ *                                 &lt;/complexContent>
+ *                               &lt;/complexType>
+ *                             &lt;/element>
+ *                             &lt;element name="RULES" minOccurs="0">
+ *                               &lt;complexType>
+ *                                 &lt;complexContent>
+ *                                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                                     &lt;sequence>
+ *                                       &lt;element name="RULE" type="{http://www.w3.org/2001/XMLSchema}anyType" maxOccurs="unbounded" minOccurs="0"/>
+ *                                     &lt;/sequence>
+ *                                   &lt;/restriction>
+ *                                 &lt;/complexContent>
+ *                               &lt;/complexType>
+ *                             &lt;/element>
+ *                           &lt;/all>
+ *                           &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                         &lt;/restriction>
+ *                       &lt;/complexContent>
+ *                     &lt;/complexType>
+ *                   &lt;/element>
+ *                 &lt;/sequence>
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "STATUSType", propOrder = {
+
+})
+public class STATUSType {
+
+    @XmlElement(name = "LAYOUTS", required = true)
+    protected STATUSType.LAYOUTS layouts;
+
+    /**
+     * Gets the value of the layouts property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STATUSType.LAYOUTS }
+     *     
+     */
+    public STATUSType.LAYOUTS getLAYOUTS() {
+        return layouts;
+    }
+
+    /**
+     * Sets the value of the layouts property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STATUSType.LAYOUTS }
+     *     
+     */
+    public void setLAYOUTS(STATUSType.LAYOUTS value) {
+        this.layouts = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="LAYOUT" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;all>
+     *                   &lt;element name="FIELDS">
+     *                     &lt;complexType>
+     *                       &lt;complexContent>
+     *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                           &lt;sequence>
+     *                             &lt;element name="FIELD" maxOccurs="unbounded" minOccurs="0">
+     *                               &lt;complexType>
+     *                                 &lt;complexContent>
+     *                                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                                     &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                                     &lt;attribute name="xpath" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                                     &lt;attribute name="indexable" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                                     &lt;attribute name="result" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                                     &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                                     &lt;attribute name="stat" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                                     &lt;attribute name="tokenizable" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                                   &lt;/restriction>
+     *                                 &lt;/complexContent>
+     *                               &lt;/complexType>
+     *                             &lt;/element>
+     *                           &lt;/sequence>
+     *                         &lt;/restriction>
+     *                       &lt;/complexContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                   &lt;element name="TRANSFORMATION" minOccurs="0">
+     *                     &lt;complexType>
+     *                       &lt;complexContent>
+     *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                           &lt;sequence>
+     *                             &lt;any/>
+     *                           &lt;/sequence>
+     *                           &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                         &lt;/restriction>
+     *                       &lt;/complexContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                   &lt;element name="RULES" minOccurs="0">
+     *                     &lt;complexType>
+     *                       &lt;complexContent>
+     *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                           &lt;sequence>
+     *                             &lt;element name="RULE" type="{http://www.w3.org/2001/XMLSchema}anyType" maxOccurs="unbounded" minOccurs="0"/>
+     *                           &lt;/sequence>
+     *                         &lt;/restriction>
+     *                       &lt;/complexContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                 &lt;/all>
+     *                 &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "layout"
+    })
+    public static class LAYOUTS {
+
+        @XmlElement(name = "LAYOUT")
+        protected List<STATUSType.LAYOUTS.LAYOUT> layout;
+
+        /**
+         * Gets the value of the layout property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the layout property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getLAYOUT().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link STATUSType.LAYOUTS.LAYOUT }
+         * 
+         * 
+         */
+        public List<STATUSType.LAYOUTS.LAYOUT> getLAYOUT() {
+            if (layout == null) {
+                layout = new ArrayList<STATUSType.LAYOUTS.LAYOUT>();
+            }
+            return this.layout;
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;all>
+         *         &lt;element name="FIELDS">
+         *           &lt;complexType>
+         *             &lt;complexContent>
+         *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *                 &lt;sequence>
+         *                   &lt;element name="FIELD" maxOccurs="unbounded" minOccurs="0">
+         *                     &lt;complexType>
+         *                       &lt;complexContent>
+         *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *                           &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *                           &lt;attribute name="xpath" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *                           &lt;attribute name="indexable" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *                           &lt;attribute name="result" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *                           &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *                           &lt;attribute name="stat" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *                           &lt;attribute name="tokenizable" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *                         &lt;/restriction>
+         *                       &lt;/complexContent>
+         *                     &lt;/complexType>
+         *                   &lt;/element>
+         *                 &lt;/sequence>
+         *               &lt;/restriction>
+         *             &lt;/complexContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *         &lt;element name="TRANSFORMATION" minOccurs="0">
+         *           &lt;complexType>
+         *             &lt;complexContent>
+         *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *                 &lt;sequence>
+         *                   &lt;any/>
+         *                 &lt;/sequence>
+         *                 &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *               &lt;/restriction>
+         *             &lt;/complexContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *         &lt;element name="RULES" minOccurs="0">
+         *           &lt;complexType>
+         *             &lt;complexContent>
+         *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *                 &lt;sequence>
+         *                   &lt;element name="RULE" type="{http://www.w3.org/2001/XMLSchema}anyType" maxOccurs="unbounded" minOccurs="0"/>
+         *                 &lt;/sequence>
+         *               &lt;/restriction>
+         *             &lt;/complexContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *       &lt;/all>
+         *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+
+        })
+        public static class LAYOUT {
+
+            @XmlElement(name = "FIELDS", required = true)
+            protected STATUSType.LAYOUTS.LAYOUT.FIELDS fields;
+            @XmlElement(name = "TRANSFORMATION")
+            protected STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION transformation;
+            @XmlElement(name = "RULES")
+            protected STATUSType.LAYOUTS.LAYOUT.RULES rules;
+            @XmlAttribute(required = true)
+            protected String name;
+
+            /**
+             * Gets the value of the fields property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link STATUSType.LAYOUTS.LAYOUT.FIELDS }
+             *     
+             */
+            public STATUSType.LAYOUTS.LAYOUT.FIELDS getFIELDS() {
+                return fields;
+            }
+
+            /**
+             * Sets the value of the fields property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link STATUSType.LAYOUTS.LAYOUT.FIELDS }
+             *     
+             */
+            public void setFIELDS(STATUSType.LAYOUTS.LAYOUT.FIELDS value) {
+                this.fields = value;
+            }
+
+            /**
+             * Gets the value of the transformation property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION }
+             *     
+             */
+            public STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION getTRANSFORMATION() {
+                return transformation;
+            }
+
+            /**
+             * Sets the value of the transformation property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION }
+             *     
+             */
+            public void setTRANSFORMATION(STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION value) {
+                this.transformation = value;
+            }
+
+            /**
+             * Gets the value of the rules property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link STATUSType.LAYOUTS.LAYOUT.RULES }
+             *     
+             */
+            public STATUSType.LAYOUTS.LAYOUT.RULES getRULES() {
+                return rules;
+            }
+
+            /**
+             * Sets the value of the rules property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link STATUSType.LAYOUTS.LAYOUT.RULES }
+             *     
+             */
+            public void setRULES(STATUSType.LAYOUTS.LAYOUT.RULES value) {
+                this.rules = value;
+            }
+
+            /**
+             * Gets the value of the name property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getName() {
+                return name;
+            }
+
+            /**
+             * Sets the value of the name property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setName(String value) {
+                this.name = value;
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;complexContent>
+             *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+             *       &lt;sequence>
+             *         &lt;element name="FIELD" maxOccurs="unbounded" minOccurs="0">
+             *           &lt;complexType>
+             *             &lt;complexContent>
+             *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+             *                 &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *                 &lt;attribute name="xpath" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *                 &lt;attribute name="indexable" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+             *                 &lt;attribute name="result" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+             *                 &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *                 &lt;attribute name="stat" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+             *                 &lt;attribute name="tokenizable" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+             *               &lt;/restriction>
+             *             &lt;/complexContent>
+             *           &lt;/complexType>
+             *         &lt;/element>
+             *       &lt;/sequence>
+             *     &lt;/restriction>
+             *   &lt;/complexContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "field"
+            })
+            public static class FIELDS {
+
+                @XmlElement(name = "FIELD")
+                protected List<STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD> field;
+
+                /**
+                 * Gets the value of the field property.
+                 * 
+                 * <p>
+                 * This accessor method returns a reference to the live list,
+                 * not a snapshot. Therefore any modification you make to the
+                 * returned list will be present inside the JAXB object.
+                 * This is why there is not a <CODE>set</CODE> method for the field property.
+                 * 
+                 * <p>
+                 * For example, to add a new item, do as follows:
+                 * <pre>
+                 *    getFIELD().add(newItem);
+                 * </pre>
+                 * 
+                 * 
+                 * <p>
+                 * Objects of the following type(s) are allowed in the list
+                 * {@link STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD }
+                 * 
+                 * 
+                 */
+                public List<STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD> getFIELD() {
+                    if (field == null) {
+                        field = new ArrayList<STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD>();
+                    }
+                    return this.field;
+                }
+
+
+                /**
+                 * <p>Java class for anonymous complex type.
+                 * 
+                 * <p>The following schema fragment specifies the expected content contained within this class.
+                 * 
+                 * <pre>
+                 * &lt;complexType>
+                 *   &lt;complexContent>
+                 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+                 *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+                 *       &lt;attribute name="xpath" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+                 *       &lt;attribute name="indexable" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+                 *       &lt;attribute name="result" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+                 *       &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+                 *       &lt;attribute name="stat" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+                 *       &lt;attribute name="tokenizable" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+                 *     &lt;/restriction>
+                 *   &lt;/complexContent>
+                 * &lt;/complexType>
+                 * </pre>
+                 * 
+                 * 
+                 */
+                @XmlAccessorType(XmlAccessType.FIELD)
+                @XmlType(name = "")
+                public static class FIELD {
+
+                    @XmlAttribute(required = true)
+                    protected String name;
+                    @XmlAttribute(required = true)
+                    protected String xpath;
+                    @XmlAttribute(required = true)
+                    protected boolean indexable;
+                    @XmlAttribute(required = true)
+                    protected boolean result;
+                    @XmlAttribute
+                    protected String type;
+                    @XmlAttribute
+                    protected Boolean stat;
+                    @XmlAttribute
+                    protected Boolean tokenizable;
+
+                    /**
+                     * Gets the value of the name property.
+                     * 
+                     * @return
+                     *     possible object is
+                     *     {@link String }
+                     *     
+                     */
+                    public String getName() {
+                        return name;
+                    }
+
+                    /**
+                     * Sets the value of the name property.
+                     * 
+                     * @param value
+                     *     allowed object is
+                     *     {@link String }
+                     *     
+                     */
+                    public void setName(String value) {
+                        this.name = value;
+                    }
+
+                    /**
+                     * Gets the value of the xpath property.
+                     * 
+                     * @return
+                     *     possible object is
+                     *     {@link String }
+                     *     
+                     */
+                    public String getXpath() {
+                        return xpath;
+                    }
+
+                    /**
+                     * Sets the value of the xpath property.
+                     * 
+                     * @param value
+                     *     allowed object is
+                     *     {@link String }
+                     *     
+                     */
+                    public void setXpath(String value) {
+                        this.xpath = value;
+                    }
+
+                    /**
+                     * Gets the value of the indexable property.
+                     * 
+                     */
+                    public boolean isIndexable() {
+                        return indexable;
+                    }
+
+                    /**
+                     * Sets the value of the indexable property.
+                     * 
+                     */
+                    public void setIndexable(boolean value) {
+                        this.indexable = value;
+                    }
+
+                    /**
+                     * Gets the value of the result property.
+                     * 
+                     */
+                    public boolean isResult() {
+                        return result;
+                    }
+
+                    /**
+                     * Sets the value of the result property.
+                     * 
+                     */
+                    public void setResult(boolean value) {
+                        this.result = value;
+                    }
+
+                    /**
+                     * Gets the value of the type property.
+                     * 
+                     * @return
+                     *     possible object is
+                     *     {@link String }
+                     *     
+                     */
+                    public String getType() {
+                        return type;
+                    }
+
+                    /**
+                     * Sets the value of the type property.
+                     * 
+                     * @param value
+                     *     allowed object is
+                     *     {@link String }
+                     *     
+                     */
+                    public void setType(String value) {
+                        this.type = value;
+                    }
+
+                    /**
+                     * Gets the value of the stat property.
+                     * 
+                     * @return
+                     *     possible object is
+                     *     {@link Boolean }
+                     *     
+                     */
+                    public Boolean isStat() {
+                        return stat;
+                    }
+
+                    /**
+                     * Sets the value of the stat property.
+                     * 
+                     * @param value
+                     *     allowed object is
+                     *     {@link Boolean }
+                     *     
+                     */
+                    public void setStat(Boolean value) {
+                        this.stat = value;
+                    }
+
+                    /**
+                     * Gets the value of the tokenizable property.
+                     * 
+                     * @return
+                     *     possible object is
+                     *     {@link Boolean }
+                     *     
+                     */
+                    public Boolean isTokenizable() {
+                        return tokenizable;
+                    }
+
+                    /**
+                     * Sets the value of the tokenizable property.
+                     * 
+                     * @param value
+                     *     allowed object is
+                     *     {@link Boolean }
+                     *     
+                     */
+                    public void setTokenizable(Boolean value) {
+                        this.tokenizable = value;
+                    }
+
+                }
+
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;complexContent>
+             *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+             *       &lt;sequence>
+             *         &lt;element name="RULE" type="{http://www.w3.org/2001/XMLSchema}anyType" maxOccurs="unbounded" minOccurs="0"/>
+             *       &lt;/sequence>
+             *     &lt;/restriction>
+             *   &lt;/complexContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "rule"
+            })
+            public static class RULES {
+
+                @XmlElement(name = "RULE")
+                protected List<Object> rule;
+
+                /**
+                 * Gets the value of the rule property.
+                 * 
+                 * <p>
+                 * This accessor method returns a reference to the live list,
+                 * not a snapshot. Therefore any modification you make to the
+                 * returned list will be present inside the JAXB object.
+                 * This is why there is not a <CODE>set</CODE> method for the rule property.
+                 * 
+                 * <p>
+                 * For example, to add a new item, do as follows:
+                 * <pre>
+                 *    getRULE().add(newItem);
+                 * </pre>
+                 * 
+                 * 
+                 * <p>
+                 * Objects of the following type(s) are allowed in the list
+                 * {@link Object }
+                 * 
+                 * 
+                 */
+                public List<Object> getRULE() {
+                    if (rule == null) {
+                        rule = new ArrayList<Object>();
+                    }
+                    return this.rule;
+                }
+
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;complexContent>
+             *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+             *       &lt;sequence>
+             *         &lt;any/>
+             *       &lt;/sequence>
+             *       &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *     &lt;/restriction>
+             *   &lt;/complexContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "content"
+            })
+            public static class TRANSFORMATION {
+
+                @XmlMixed
+                @XmlAnyElement(lax = true)
+                protected List<Object> content;
+                @XmlAttribute(required = true)
+                protected String type;
+
+                /**
+                 * Gets the value of the content property.
+                 * 
+                 * <p>
+                 * This accessor method returns a reference to the live list,
+                 * not a snapshot. Therefore any modification you make to the
+                 * returned list will be present inside the JAXB object.
+                 * This is why there is not a <CODE>set</CODE> method for the content property.
+                 * 
+                 * <p>
+                 * For example, to add a new item, do as follows:
+                 * <pre>
+                 *    getContent().add(newItem);
+                 * </pre>
+                 * 
+                 * 
+                 * <p>
+                 * Objects of the following type(s) are allowed in the list
+                 * {@link String }
+                 * {@link Object }
+                 * {@link Element }
+                 * 
+                 * 
+                 */
+                public List<Object> getContent() {
+                    if (content == null) {
+                        content = new ArrayList<Object>();
+                    }
+                    return this.content;
+                }
+
+                /**
+                 * Gets the value of the type property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getType() {
+                    return type;
+                }
+
+                /**
+                 * Sets the value of the type property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setType(String value) {
+                    this.type = value;
+                }
+
+            }
+
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATEType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEType }
+     *     
+     */
+    public DATEType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RECOMMENDATIONINFOType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RECOMMENDATIONINFOType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RECOMMENDATIONINFOType.java	(revision 48242)
@@ -0,0 +1,241 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RECOMMENDATION_INFOType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RECOMMENDATION_INFOType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="RECOMMENDATION_TEXT" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="DATE_OF_EXPIRATION">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="TYPE" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="COMMUNITIES" type="{}COMMUNITIESType" minOccurs="0"/>
+ *         &lt;element name="USERS" type="{}USERSType" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RECOMMENDATION_INFOType", propOrder = {
+    "recommendationtext",
+    "dateofexpiration",
+    "type",
+    "communities",
+    "users"
+})
+public class RECOMMENDATIONINFOType {
+
+    @XmlElement(name = "RECOMMENDATION_TEXT", required = true)
+    protected String recommendationtext;
+    @XmlElement(name = "DATE_OF_EXPIRATION", required = true)
+    protected RECOMMENDATIONINFOType.DATEOFEXPIRATION dateofexpiration;
+    @XmlElement(name = "TYPE", required = true)
+    protected String type;
+    @XmlElement(name = "COMMUNITIES")
+    protected COMMUNITIESType communities;
+    @XmlElement(name = "USERS")
+    protected USERSType users;
+
+    /**
+     * Gets the value of the recommendationtext property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getRECOMMENDATIONTEXT() {
+        return recommendationtext;
+    }
+
+    /**
+     * Sets the value of the recommendationtext property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setRECOMMENDATIONTEXT(String value) {
+        this.recommendationtext = value;
+    }
+
+    /**
+     * Gets the value of the dateofexpiration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RECOMMENDATIONINFOType.DATEOFEXPIRATION }
+     *     
+     */
+    public RECOMMENDATIONINFOType.DATEOFEXPIRATION getDATEOFEXPIRATION() {
+        return dateofexpiration;
+    }
+
+    /**
+     * Sets the value of the dateofexpiration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RECOMMENDATIONINFOType.DATEOFEXPIRATION }
+     *     
+     */
+    public void setDATEOFEXPIRATION(RECOMMENDATIONINFOType.DATEOFEXPIRATION value) {
+        this.dateofexpiration = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTYPE() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTYPE(String value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the communities property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link COMMUNITIESType }
+     *     
+     */
+    public COMMUNITIESType getCOMMUNITIES() {
+        return communities;
+    }
+
+    /**
+     * Sets the value of the communities property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link COMMUNITIESType }
+     *     
+     */
+    public void setCOMMUNITIES(COMMUNITIESType value) {
+        this.communities = value;
+    }
+
+    /**
+     * Gets the value of the users property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link USERSType }
+     *     
+     */
+    public USERSType getUSERS() {
+        return users;
+    }
+
+    /**
+     * Sets the value of the users property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link USERSType }
+     *     
+     */
+    public void setUSERS(USERSType value) {
+        this.users = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class DATEOFEXPIRATION {
+
+        @XmlAttribute(required = true)
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/SECURITYPARAMETERSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/SECURITYPARAMETERSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/SECURITYPARAMETERSType.java	(revision 48242)
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SECURITY_PARAMETERSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SECURITY_PARAMETERSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="SECURITY_PARAMETER" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SECURITY_PARAMETERSType", propOrder = {
+
+})
+public class SECURITYPARAMETERSType {
+
+    @XmlElement(name = "SECURITY_PARAMETER", required = true)
+    protected String securityparameter;
+
+    /**
+     * Gets the value of the securityparameter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETER() {
+        return securityparameter;
+    }
+
+    /**
+     * Sets the value of the securityparameter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETER(String value) {
+        this.securityparameter = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/SECURITYPARAMETERSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/SECURITYPARAMETERSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/SECURITYPARAMETERSType.java	(revision 48242)
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SECURITY_PARAMETERSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="SECURITY_PARAMETERSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="SECURITY_PARAMETER" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SECURITY_PARAMETERSType", propOrder = {
+
+})
+public class SECURITYPARAMETERSType {
+
+    @XmlElement(name = "SECURITY_PARAMETER", required = true)
+    protected String securityparameter;
+
+    /**
+     * Gets the value of the securityparameter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETER() {
+        return securityparameter;
+    }
+
+    /**
+     * Sets the value of the securityparameter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETER(String value) {
+        this.securityparameter = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,72 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="QueryHashDSResources"/>
+ *             &lt;enumeration value="PendingDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/QUERYRESULTSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/QUERYRESULTSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/QUERYRESULTSType.java	(revision 48242)
@@ -0,0 +1,89 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for QUERY_RESULTSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="QUERY_RESULTSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="DOC_ID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="IS_NEW" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QUERY_RESULTSType", propOrder = {
+    "docid",
+    "isnew"
+})
+public class QUERYRESULTSType {
+
+    @XmlElement(name = "DOC_ID", required = true)
+    protected String docid;
+    @XmlElement(name = "IS_NEW")
+    protected boolean isnew;
+
+    /**
+     * Gets the value of the docid property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDOCID() {
+        return docid;
+    }
+
+    /**
+     * Sets the value of the docid property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDOCID(String value) {
+        this.docid = value;
+    }
+
+    /**
+     * Gets the value of the isnew property.
+     * 
+     */
+    public boolean isISNEW() {
+        return isnew;
+    }
+
+    /**
+     * Sets the value of the isnew property.
+     * 
+     */
+    public void setISNEW(boolean value) {
+        this.isnew = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ResourceToXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ResourceToXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/ResourceToXmlConverter.java	(revision 48242)
@@ -0,0 +1,26 @@
+package gr.uoa.di.driver.xml;
+
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.SearchCriteria;
+import eu.dnetlib.util.ObjectToXmlConverter;
+
+
+/**
+ * Used to convert a driver resource from java to xml and vice versa. It is IS 
+ * specific since it also provides information about the resource type and 
+ * converts SearchCriteria to XQueries, specific to the IS storage.
+ * 
+ * @author <a href='mailto:antleb@di.uoa.gr'>Antonis Lempesis</a>
+ *
+ * @param <D> the resource type to convert, must implement the Xmlable interface.
+ */
+public interface ResourceToXmlConverter<D extends DriverResource> 
+	extends ObjectToXmlConverter<D> {
+	
+	/**
+	 * Creates an XQuery from the given search criteria.
+	 * @param criteria The search criteria.
+	 * @return the XQuery...
+	 */
+	public String toXQueryString(SearchCriteria criteria);
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/STATUSType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/STATUSType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/STATUSType.java	(revision 48242)
@@ -0,0 +1,37 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for STATUSType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="STATUSType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "STATUSType")
+public class STATUSType {
+
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,198 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="secProfId" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="resourceId" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="attributes" type="{}attribute" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="identities" type="{}typedString" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="obligations" type="{}obligation" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+    "secProfId",
+    "resourceId",
+    "attributes",
+    "identities",
+    "obligations"
+})
+public class CONFIGURATIONType {
+
+    protected String secProfId;
+    @XmlElement(required = true)
+    protected String resourceId;
+    @XmlElement(nillable = true)
+    protected List<Attribute> attributes;
+    @XmlElement(nillable = true)
+    protected List<TypedString> identities;
+    @XmlElement(nillable = true)
+    protected List<Obligation> obligations;
+
+    /**
+     * Gets the value of the secProfId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSecProfId() {
+        return secProfId;
+    }
+
+    /**
+     * Sets the value of the secProfId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSecProfId(String value) {
+        this.secProfId = value;
+    }
+
+    /**
+     * Gets the value of the resourceId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getResourceId() {
+        return resourceId;
+    }
+
+    /**
+     * Sets the value of the resourceId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setResourceId(String value) {
+        this.resourceId = value;
+    }
+
+    /**
+     * Gets the value of the attributes property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the attributes property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAttributes().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Attribute }
+     * 
+     * 
+     */
+    public List<Attribute> getAttributes() {
+        if (attributes == null) {
+            attributes = new ArrayList<Attribute>();
+        }
+        return this.attributes;
+    }
+
+    /**
+     * Gets the value of the identities property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the identities property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getIdentities().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link TypedString }
+     * 
+     * 
+     */
+    public List<TypedString> getIdentities() {
+        if (identities == null) {
+            identities = new ArrayList<TypedString>();
+        }
+        return this.identities;
+    }
+
+    /**
+     * Gets the value of the obligations property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the obligations property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getObligations().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Obligation }
+     * 
+     * 
+     */
+    public List<Obligation> getObligations() {
+        if (obligations == null) {
+            obligations = new ArrayList<Obligation>();
+        }
+        return this.obligations;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,111 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.queryResultsHashResource.xml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.queryResultsHashResource.xml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link QUERYRESULTSType }
+     * 
+     */
+    public QUERYRESULTSType createQUERYRESULTSType() {
+        return new QUERYRESULTSType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="RecommendationDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/DATEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/DATEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/DATEType.java	(revision 48242)
@@ -0,0 +1,66 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for DATEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATEType")
+public class DATEType {
+
+    @XmlAttribute(required = true)
+    protected XMLGregorianCalendar value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setValue(XMLGregorianCalendar value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/BODYType.java	(revision 48242)
@@ -0,0 +1,97 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{}STATUSType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected STATUSType status;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STATUSType }
+     *     
+     */
+    public STATUSType getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STATUSType }
+     *     
+     */
+    public void setSTATUS(STATUSType value) {
+        this.status = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/TypedString.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/TypedString.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/TypedString.java	(revision 48242)
@@ -0,0 +1,94 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for typedString complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="typedString">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="text" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="type" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "typedString", propOrder = {
+    "text",
+    "type"
+})
+public class TypedString {
+
+    protected String text;
+    protected String type;
+
+    /**
+     * Gets the value of the text property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getText() {
+        return text;
+    }
+
+    /**
+     * Sets the value of the text property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setText(String value) {
+        this.text = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/OWNERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/OWNERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/collection/OWNERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.27 at 09:06:32 AM EET 
+//
+
+
+package gr.uoa.di.driver.xml.collection;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OWNERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="OWNERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OWNERType")
+public class OWNERType {
+
+    @XmlAttribute(required = true)
+    protected String id;
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,185 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="NAME" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="DESCRIPTION" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="SCHEMA">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="uri" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "NAME", required = true)
+    protected String name;
+    @XmlElement(name = "DESCRIPTION", required = true)
+    protected String description;
+    @XmlElement(name = "SCHEMA", required = true)
+    protected CONFIGURATIONType.SCHEMA schema;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNAME() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNAME(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDESCRIPTION() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDESCRIPTION(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the schema property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType.SCHEMA }
+     *     
+     */
+    public CONFIGURATIONType.SCHEMA getSCHEMA() {
+        return schema;
+    }
+
+    /**
+     * Sets the value of the schema property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType.SCHEMA }
+     *     
+     */
+    public void setSCHEMA(CONFIGURATIONType.SCHEMA value) {
+        this.schema = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="uri" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class SCHEMA {
+
+        @XmlAttribute(required = true)
+        @XmlSchemaType(name = "anyURI")
+        protected String uri;
+
+        /**
+         * Gets the value of the uri property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getUri() {
+            return uri;
+        }
+
+        /**
+         * Sets the value of the uri property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setUri(String value) {
+            this.uri = value;
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="MDFormatDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/BODYType.java	(revision 48242)
@@ -0,0 +1,125 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{}STATUSType" minOccurs="0"/>
+ *         &lt;element ref="{}SECURITY_PARAMETERS" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "securityparameters"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS")
+    protected STATUSType status;
+    @XmlElement(name = "SECURITY_PARAMETERS")
+    protected String securityparameters;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link STATUSType }
+     *     
+     */
+    public STATUSType getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link STATUSType }
+     *     
+     */
+    public void setSTATUS(STATUSType value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSECURITYPARAMETERS(String value) {
+        this.securityparameters = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,72 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="SecurityProfileDSResources"/>
+ *             &lt;enumeration value="PendingDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/Obligation.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/Obligation.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/Obligation.java	(revision 48242)
@@ -0,0 +1,131 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for obligation complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="obligation">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="obligation" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="resource" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="attributes" type="{}attribute" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "obligation", propOrder = {
+    "obligation",
+    "resource",
+    "attributes"
+})
+public class Obligation {
+
+    protected String obligation;
+    protected String resource;
+    @XmlElement(nillable = true)
+    protected List<Attribute> attributes;
+
+    /**
+     * Gets the value of the obligation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getObligation() {
+        return obligation;
+    }
+
+    /**
+     * Sets the value of the obligation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setObligation(String value) {
+        this.obligation = value;
+    }
+
+    /**
+     * Gets the value of the resource property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getResource() {
+        return resource;
+    }
+
+    /**
+     * Sets the value of the resource property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setResource(String value) {
+        this.resource = value;
+    }
+
+    /**
+     * Gets the value of the attributes property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the attributes property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAttributes().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Attribute }
+     * 
+     * 
+     */
+    public List<Attribute> getAttributes() {
+        if (attributes == null) {
+            attributes = new ArrayList<Attribute>();
+        }
+        return this.attributes;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/DAOException.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/DAOException.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/DAOException.java	(revision 48242)
@@ -0,0 +1,22 @@
+package gr.uoa.di.driver.dao;
+
+public class DAOException extends Exception {
+	private static final long serialVersionUID = -2561665485195003136L;
+
+	public DAOException() {
+		super();
+	}
+
+	public DAOException(Throwable cause) {
+		super(cause);
+	}
+
+	public DAOException(String message, Throwable cause) {
+		super(message, cause);
+	}
+	
+	public DAOException(String message) {
+		super(message);
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/GenericISDao.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/GenericISDao.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/GenericISDao.java	(revision 48242)
@@ -0,0 +1,91 @@
+package gr.uoa.di.driver.dao;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.DriverResource;
+import eu.dnetlib.domain.SearchCriteria;
+import gr.uoa.di.driver.enabling.ISLookUp;
+import gr.uoa.di.driver.enabling.ISLookUpException;
+import gr.uoa.di.driver.enabling.ISRegistry;
+import gr.uoa.di.driver.enabling.ISRegistryException;
+
+public class GenericISDao<D extends DriverResource> implements GenericDAO<D> {
+	private static Logger loggger = Logger.getLogger(GenericISDao.class);
+	
+	protected ISLookUp<D> lookUp = null;
+	protected ISRegistry<D> registry = null;
+
+	public void setLookUp(ISLookUp<D> lookUp) {
+		this.lookUp = lookUp;
+	}
+
+	public void setRegistry(ISRegistry<D> registry) {
+		this.registry = registry;
+	}
+
+	public D getById(String id) throws DAOException {
+		try {
+			return lookUp.getById(id);
+		} catch (ISLookUpException ile) {
+			throw new DAOException("Error getting object", ile);
+		}
+	}
+
+	public D save(D entity) throws DAOException {
+		D object = null;
+
+		try {
+			object = registry.save(entity);
+		} catch (ISRegistryException e) {
+			throw new DAOException("Error saving profile", e);
+		}
+
+		return object;
+	}
+
+	public void delete(D entity) throws DAOException {
+		try {
+			this.registry.delete(entity);
+		} catch (ISRegistryException ire) {
+			throw new DAOException("Error deleting object", ire);
+		}
+	}
+
+	public List<D> getAll() throws DAOException {
+		try {
+			return lookUp.fetch( (SearchCriteria) null);
+		} catch (ISLookUpException e) {
+			throw new DAOException(e);
+		}
+	}
+
+	public List<D> search(SearchCriteria criteria) throws DAOException {
+		try {
+			loggger.debug("Performing search");
+			
+			return lookUp.fetch(criteria);
+		} catch (ISLookUpException e) {
+			loggger.error(e);
+			throw new DAOException(e);
+		}
+	}
+
+	public D getUniqueResult(SearchCriteria criteria) throws DAOException {
+		List<D> results = null;
+
+		try {
+			results = lookUp.performQuickSearch(criteria);
+		} catch (ISLookUpException e) {
+			throw new DAOException("Error searching", e);
+		}
+
+		if (results.size() == 0)
+			return null;
+		else if (results.size() == 1)
+			return results.get(0);
+		else
+			throw new DAOException("More than one results in query.");
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlBoolean.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlBoolean.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlBoolean.java	(revision 48242)
@@ -0,0 +1,69 @@
+/**
+ * 
+ */
+package eu.dnetlib.utils.cql;
+
+
+
+/**
+ * @author stoumpos
+ * 
+ */
+public class CqlBoolean extends CqlClause {
+
+	String operator = null;
+	CqlClause left = null;
+	CqlClause right = null;
+
+	public CqlBoolean() {
+		this(null, null, null);
+	}
+
+	public CqlBoolean(CqlClause left, String operator, CqlClause right) {
+		super(CqlClauseType.BOOLEAN);
+		this.operator = operator;
+		this.left = left;
+		this.right = right;
+	}
+
+	public CqlClause getLeft() {
+		return left;
+	}
+
+	public void setLeft(CqlClause left) {
+		this.left = left;
+	}
+
+	public String getOperator() {
+		return operator;
+	}
+
+	public void setOperator(String operator) {
+		this.operator = operator;
+	}
+
+	public CqlClause getRight() {
+		return right;
+	}
+
+	public void setRight(CqlClause right) {
+		this.right = right;
+	}
+	
+	@Override
+	public String toCqlString() {
+		StringBuffer buffer = new StringBuffer();
+		buffer.append("(").append(left).append(") ").append(operator);
+		buffer.append(" (").append(right).append(")");
+		return buffer.toString();
+	}
+
+	@Override
+	public String toNodeString(String prefix) {
+		StringBuffer buffer = new StringBuffer();
+		buffer.append(prefix).append(operator).append("\n");
+		buffer.append(left.toNodeString(prefix + "\t")).append("\n");
+		buffer.append(right.toNodeString(prefix + "\t")).append("\n");
+		return buffer.toString();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/BODYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/BODYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/BODYType.java	(revision 48242)
@@ -0,0 +1,209 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BODYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="BODYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CONFIGURATION" type="{}CONFIGURATIONType"/>
+ *         &lt;element name="STATUS" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="SECURITY_PARAMETERS" type="{}SECURITY_PARAMETERSType"/>
+ *         &lt;element name="INDEX" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
+ *         &lt;element name="ACTIVE" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         &lt;element name="TITLE" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BODYType", propOrder = {
+    "configuration",
+    "status",
+    "securityparameters",
+    "index",
+    "active",
+    "title"
+})
+public class BODYType {
+
+    @XmlElement(name = "CONFIGURATION", required = true)
+    protected CONFIGURATIONType configuration;
+    @XmlElement(name = "STATUS", required = true)
+    protected String status;
+    @XmlElement(name = "SECURITY_PARAMETERS", required = true)
+    protected SECURITYPARAMETERSType securityparameters;
+    @XmlElement(name = "INDEX")
+    protected Integer index;
+    @XmlElement(name = "ACTIVE")
+    protected Boolean active;
+    @XmlElement(name = "TITLE")
+    protected String title;
+
+    /**
+     * Gets the value of the configuration property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public CONFIGURATIONType getCONFIGURATION() {
+        return configuration;
+    }
+
+    /**
+     * Sets the value of the configuration property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CONFIGURATIONType }
+     *     
+     */
+    public void setCONFIGURATION(CONFIGURATIONType value) {
+        this.configuration = value;
+    }
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSTATUS() {
+        return status;
+    }
+
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSTATUS(String value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the securityparameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public SECURITYPARAMETERSType getSECURITYPARAMETERS() {
+        return securityparameters;
+    }
+
+    /**
+     * Sets the value of the securityparameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SECURITYPARAMETERSType }
+     *     
+     */
+    public void setSECURITYPARAMETERS(SECURITYPARAMETERSType value) {
+        this.securityparameters = value;
+    }
+
+    /**
+     * Gets the value of the index property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getINDEX() {
+        return index;
+    }
+
+    /**
+     * Sets the value of the index property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setINDEX(Integer value) {
+        this.index = value;
+    }
+
+    /**
+     * Gets the value of the active property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isACTIVE() {
+        return active;
+    }
+
+    /**
+     * Sets the value of the active property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setACTIVE(Boolean value) {
+        this.active = value;
+    }
+
+    /**
+     * Gets the value of the title property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTITLE() {
+        return title;
+    }
+
+    /**
+     * Sets the value of the title property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTITLE(String value) {
+        this.title = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/CONFIGURATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/CONFIGURATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/CONFIGURATIONType.java	(revision 48242)
@@ -0,0 +1,69 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CONFIGURATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="CONFIGURATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="RSSFEED_INFO" type="{}RSSFEED_INFOType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CONFIGURATIONType", propOrder = {
+    "rssfeedinfo"
+})
+public class CONFIGURATIONType {
+
+    @XmlElement(name = "RSSFEED_INFO", required = true)
+    protected RSSFEEDINFOType rssfeedinfo;
+
+    /**
+     * Gets the value of the rssfeedinfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RSSFEEDINFOType }
+     *     
+     */
+    public RSSFEEDINFOType getRSSFEEDINFO() {
+        return rssfeedinfo;
+    }
+
+    /**
+     * Sets the value of the rssfeedinfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RSSFEEDINFOType }
+     *     
+     */
+    public void setRSSFEEDINFO(RSSFEEDINFOType value) {
+        this.rssfeedinfo = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEIDENTIFIERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEIDENTIFIERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/rssfeed/RESOURCEIDENTIFIERType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.17 at 08:41:53 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.rssfeed;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_IDENTIFIERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_IDENTIFIERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_IDENTIFIERType")
+public class RESOURCEIDENTIFIERType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlTerm.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlTerm.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlTerm.java	(revision 48242)
@@ -0,0 +1,38 @@
+package eu.dnetlib.utils.cql;
+
+
+/**
+ * @author stoumpos
+ * 
+ */
+public class CqlTerm extends CqlClause {
+
+	String term = null;
+
+	public CqlTerm() {
+		this(null);
+	}
+
+	public CqlTerm(String term) {
+		super(CqlClauseType.TERM);
+		this.term = term;
+	}
+
+	public String getTerm() {
+		return term;
+	}
+
+	public void setTerm(String term) {
+		this.term = term;
+	}
+
+	@Override
+	public String toCqlString() {
+		return term;
+	}
+
+	@Override
+	public String toNodeString(String prefix) {
+		return prefix + "term: " + toCqlString();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlException.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlException.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlException.java	(revision 48242)
@@ -0,0 +1,18 @@
+/**
+ * 
+ */
+package eu.dnetlib.utils.cql;
+
+/**
+ * @author stoumpos
+ * 
+ */
+
+@SuppressWarnings("serial")
+public class CqlException extends Exception {
+
+	public CqlException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,156 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.security.xml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _SECURITYPARAMETERS_QNAME = new QName("", "SECURITY_PARAMETERS");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.security.xml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link Obligation }
+     * 
+     */
+    public Obligation createObligation() {
+        return new Obligation();
+    }
+
+    /**
+     * Create an instance of {@link Attribute }
+     * 
+     */
+    public Attribute createAttribute() {
+        return new Attribute();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link TypedString }
+     * 
+     */
+    public TypedString createTypedString() {
+        return new TypedString();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType }
+     * 
+     */
+    public STATUSType createSTATUSType() {
+        return new STATUSType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "", name = "SECURITY_PARAMETERS")
+    public JAXBElement<String> createSECURITYPARAMETERS(String value) {
+        return new JAXBElement<String>(_SECURITYPARAMETERS_QNAME, String.class, null, value);
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/SecurityProfileDao.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/SecurityProfileDao.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/SecurityProfileDao.java	(revision 48242)
@@ -0,0 +1,7 @@
+package gr.uoa.di.driver.dao;
+
+import eu.dnetlib.domain.enabling.SecurityProfile;
+
+public interface SecurityProfileDao extends GenericDAO<SecurityProfile> {
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlRuntimeException.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlRuntimeException.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlRuntimeException.java	(revision 48242)
@@ -0,0 +1,18 @@
+/**
+ * 
+ */
+package eu.dnetlib.utils.cql;
+
+/**
+ * @author stoumpos
+ * 
+ */
+
+@SuppressWarnings("serial")
+public class CqlRuntimeException extends RuntimeException {
+	
+	public CqlRuntimeException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlLexer.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlLexer.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlLexer.java	(revision 48242)
@@ -0,0 +1,1230 @@
+// $ANTLR 3.0.1 Cql.g3 2013-07-19 13:56:26
+
+	package eu.dnetlib.utils.cql;
+
+
+import org.antlr.runtime.*;
+
+public class CqlLexer extends Lexer {
+    public static final int PROX=7;
+    public static final int WHITESPACE=15;
+    public static final int NOT=6;
+    public static final int AND=4;
+    public static final int Tokens=25;
+    public static final int T24=24;
+    public static final int EOF=-1;
+    public static final int T23=23;
+    public static final int T22=22;
+    public static final int T21=21;
+    public static final int T20=20;
+    public static final int QUOTE=14;
+    public static final int ANY=11;
+    public static final int IDENTIFIER=12;
+    public static final int ALL=10;
+    public static final int OR=5;
+    public static final int WITHIN=8;
+    public static final int EXACT=9;
+    public static final int T16=16;
+    public static final int T17=17;
+    public static final int T18=18;
+    public static final int T19=19;
+    public static final int STRING=13;
+
+      @Override
+      public void reportError(RecognitionException e) {
+        throw new CqlRuntimeException("Lexer Error", e);
+      }
+
+    public CqlLexer() {;} 
+    public CqlLexer(CharStream input) {
+        super(input);
+    }
+    public String getGrammarFileName() { return "Cql.g3"; }
+
+    // $ANTLR start T16
+    public final void mT16() throws RecognitionException {
+        try {
+            int _type = T16;
+            // Cql.g3:16:5: ( '>' )
+            // Cql.g3:16:7: '>'
+            {
+            match('>'); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T16
+
+    // $ANTLR start T17
+    public final void mT17() throws RecognitionException {
+        try {
+            int _type = T17;
+            // Cql.g3:17:5: ( '=' )
+            // Cql.g3:17:7: '='
+            {
+            match('='); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T17
+
+    // $ANTLR start T18
+    public final void mT18() throws RecognitionException {
+        try {
+            int _type = T18;
+            // Cql.g3:18:5: ( '/' )
+            // Cql.g3:18:7: '/'
+            {
+            match('/'); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T18
+
+    // $ANTLR start T19
+    public final void mT19() throws RecognitionException {
+        try {
+            int _type = T19;
+            // Cql.g3:19:5: ( '(' )
+            // Cql.g3:19:7: '('
+            {
+            match('('); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T19
+
+    // $ANTLR start T20
+    public final void mT20() throws RecognitionException {
+        try {
+            int _type = T20;
+            // Cql.g3:20:5: ( ')' )
+            // Cql.g3:20:7: ')'
+            {
+            match(')'); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T20
+
+    // $ANTLR start T21
+    public final void mT21() throws RecognitionException {
+        try {
+            int _type = T21;
+            // Cql.g3:21:5: ( '<' )
+            // Cql.g3:21:7: '<'
+            {
+            match('<'); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T21
+
+    // $ANTLR start T22
+    public final void mT22() throws RecognitionException {
+        try {
+            int _type = T22;
+            // Cql.g3:22:5: ( '>=' )
+            // Cql.g3:22:7: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T22
+
+    // $ANTLR start T23
+    public final void mT23() throws RecognitionException {
+        try {
+            int _type = T23;
+            // Cql.g3:23:5: ( '<=' )
+            // Cql.g3:23:7: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T23
+
+    // $ANTLR start T24
+    public final void mT24() throws RecognitionException {
+        try {
+            int _type = T24;
+            // Cql.g3:24:5: ( '<>' )
+            // Cql.g3:24:7: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end T24
+
+    // $ANTLR start QUOTE
+    public final void mQUOTE() throws RecognitionException {
+        try {
+            int _type = QUOTE;
+            // Cql.g3:118:7: ( '\"' )
+            // Cql.g3:118:9: '\"'
+            {
+            match('\"'); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end QUOTE
+
+    // $ANTLR start WHITESPACE
+    public final void mWHITESPACE() throws RecognitionException {
+        try {
+            int _type = WHITESPACE;
+            // Cql.g3:119:12: ( ( ' ' | '\\t' | '\\r' | '\\n' | '\\f' ) )
+            // Cql.g3:119:14: ( ' ' | '\\t' | '\\r' | '\\n' | '\\f' )
+            {
+            if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||(input.LA(1)>='\f' && input.LA(1)<='\r')||input.LA(1)==' ' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            skip();
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end WHITESPACE
+
+    // $ANTLR start STRING
+    public final void mSTRING() throws RecognitionException {
+        try {
+            int _type = STRING;
+            // Cql.g3:129:8: ( QUOTE ( '\\\\' QUOTE | ~ ( QUOTE ) )* QUOTE )
+            // Cql.g3:130:3: QUOTE ( '\\\\' QUOTE | ~ ( QUOTE ) )* QUOTE
+            {
+            mQUOTE(); 
+            // Cql.g3:130:10: ( '\\\\' QUOTE | ~ ( QUOTE ) )*
+            loop1:
+            do {
+                int alt1=3;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0=='\\') ) {
+                    int LA1_2 = input.LA(2);
+
+                    if ( (LA1_2=='\"') ) {
+                        int LA1_4 = input.LA(3);
+
+                        if ( ((LA1_4>='\u0000' && LA1_4<='\uFFFE')) ) {
+                            alt1=1;
+                        }
+
+                        else {
+                            alt1=2;
+                        }
+
+                    }
+                    else if ( ((LA1_2>='\u0000' && LA1_2<='!')||(LA1_2>='#' && LA1_2<='\uFFFE')) ) {
+                        alt1=2;
+                    }
+
+
+                }
+                else if ( ((LA1_0>='\u0000' && LA1_0<='!')||(LA1_0>='#' && LA1_0<='[')||(LA1_0>=']' && LA1_0<='\uFFFE')) ) {
+                    alt1=2;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // Cql.g3:130:12: '\\\\' QUOTE
+            	    {
+            	    match('\\'); 
+            	    mQUOTE(); 
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // Cql.g3:130:26: ~ ( QUOTE )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFE') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse =
+            	            new MismatchedSetException(null,input);
+            	        recover(mse);    throw mse;
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+            mQUOTE(); 
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end STRING
+
+    // $ANTLR start AND
+    public final void mAND() throws RecognitionException {
+        try {
+            int _type = AND;
+            // Cql.g3:132:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) )
+            // Cql.g3:132:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' )
+            {
+            if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='D'||input.LA(1)=='d' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end AND
+
+    // $ANTLR start OR
+    public final void mOR() throws RecognitionException {
+        try {
+            int _type = OR;
+            // Cql.g3:133:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) )
+            // Cql.g3:133:6: ( 'O' | 'o' ) ( 'R' | 'r' )
+            {
+            if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='R'||input.LA(1)=='r' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end OR
+
+    // $ANTLR start NOT
+    public final void mNOT() throws RecognitionException {
+        try {
+            int _type = NOT;
+            // Cql.g3:134:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) )
+            // Cql.g3:134:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' )
+            {
+            if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='T'||input.LA(1)=='t' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end NOT
+
+    // $ANTLR start PROX
+    public final void mPROX() throws RecognitionException {
+        try {
+            int _type = PROX;
+            // Cql.g3:135:6: ( ( 'P' | 'p' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'X' | 'x' ) )
+            // Cql.g3:135:8: ( 'P' | 'p' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'X' | 'x' )
+            {
+            if ( input.LA(1)=='P'||input.LA(1)=='p' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='R'||input.LA(1)=='r' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='X'||input.LA(1)=='x' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end PROX
+
+    // $ANTLR start WITHIN
+    public final void mWITHIN() throws RecognitionException {
+        try {
+            int _type = WITHIN;
+            // Cql.g3:136:8: ( ( 'W' | 'w' ) ( 'I' | 'i' ) ( 'T' | 't' ) ( 'H' | 'h' ) ( 'I' | 'i' ) ( 'N' | 'n' ) )
+            // Cql.g3:136:10: ( 'W' | 'w' ) ( 'I' | 'i' ) ( 'T' | 't' ) ( 'H' | 'h' ) ( 'I' | 'i' ) ( 'N' | 'n' )
+            {
+            if ( input.LA(1)=='W'||input.LA(1)=='w' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='T'||input.LA(1)=='t' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='H'||input.LA(1)=='h' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end WITHIN
+
+    // $ANTLR start EXACT
+    public final void mEXACT() throws RecognitionException {
+        try {
+            int _type = EXACT;
+            // Cql.g3:138:7: ( ( 'E' | 'e' ) ( 'X' | 'x' ) ( 'A' | 'a' ) ( 'C' | 'c' ) ( 'T' | 't' ) )
+            // Cql.g3:138:9: ( 'E' | 'e' ) ( 'X' | 'x' ) ( 'A' | 'a' ) ( 'C' | 'c' ) ( 'T' | 't' )
+            {
+            if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='X'||input.LA(1)=='x' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='C'||input.LA(1)=='c' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='T'||input.LA(1)=='t' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end EXACT
+
+    // $ANTLR start ALL
+    public final void mALL() throws RecognitionException {
+        try {
+            int _type = ALL;
+            // Cql.g3:139:5: ( ( 'A' | 'a' ) ( 'L' | 'l' ) ( 'L' | 'l' ) )
+            // Cql.g3:139:7: ( 'A' | 'a' ) ( 'L' | 'l' ) ( 'L' | 'l' )
+            {
+            if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end ALL
+
+    // $ANTLR start ANY
+    public final void mANY() throws RecognitionException {
+        try {
+            int _type = ANY;
+            // Cql.g3:140:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' ) )
+            // Cql.g3:140:8: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' )
+            {
+            if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+            if ( input.LA(1)=='Y'||input.LA(1)=='y' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse =
+                    new MismatchedSetException(null,input);
+                recover(mse);    throw mse;
+            }
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end ANY
+
+    // $ANTLR start IDENTIFIER
+    public final void mIDENTIFIER() throws RecognitionException {
+        try {
+            int _type = IDENTIFIER;
+            // Cql.g3:153:12: ( (~ ( ' ' | '\\t' | '\\r' | '\\n' | '\\f' | '(' | ')' | '=' | '<' | '>' | '/' | '\"' ) )+ )
+            // Cql.g3:154:3: (~ ( ' ' | '\\t' | '\\r' | '\\n' | '\\f' | '(' | ')' | '=' | '<' | '>' | '/' | '\"' ) )+
+            {
+            // Cql.g3:154:3: (~ ( ' ' | '\\t' | '\\r' | '\\n' | '\\f' | '(' | ')' | '=' | '<' | '>' | '/' | '\"' ) )+
+            int cnt2=0;
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='\u0000' && LA2_0<='\b')||LA2_0=='\u000B'||(LA2_0>='\u000E' && LA2_0<='\u001F')||LA2_0=='!'||(LA2_0>='#' && LA2_0<='\'')||(LA2_0>='*' && LA2_0<='.')||(LA2_0>='0' && LA2_0<=';')||(LA2_0>='?' && LA2_0<='\uFFFE')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // Cql.g3:154:5: ~ ( ' ' | '\\t' | '\\r' | '\\n' | '\\f' | '(' | ')' | '=' | '<' | '>' | '/' | '\"' )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\b')||input.LA(1)=='\u000B'||(input.LA(1)>='\u000E' && input.LA(1)<='\u001F')||input.LA(1)=='!'||(input.LA(1)>='#' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='.')||(input.LA(1)>='0' && input.LA(1)<=';')||(input.LA(1)>='?' && input.LA(1)<='\uFFFE') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse =
+            	            new MismatchedSetException(null,input);
+            	        recover(mse);    throw mse;
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt2 >= 1 ) break loop2;
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
+                }
+                cnt2++;
+            } while (true);
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end IDENTIFIER
+
+    public void mTokens() throws RecognitionException {
+        // Cql.g3:1:8: ( T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | QUOTE | WHITESPACE | STRING | AND | OR | NOT | PROX | WITHIN | EXACT | ALL | ANY | IDENTIFIER )
+        int alt3=21;
+        int LA3_0 = input.LA(1);
+
+        if ( (LA3_0=='>') ) {
+            int LA3_1 = input.LA(2);
+
+            if ( (LA3_1=='=') ) {
+                alt3=7;
+            }
+            else {
+                alt3=1;}
+        }
+        else if ( (LA3_0=='=') ) {
+            alt3=2;
+        }
+        else if ( (LA3_0=='/') ) {
+            alt3=3;
+        }
+        else if ( (LA3_0=='(') ) {
+            alt3=4;
+        }
+        else if ( (LA3_0==')') ) {
+            alt3=5;
+        }
+        else if ( (LA3_0=='<') ) {
+            switch ( input.LA(2) ) {
+            case '=':
+                {
+                alt3=8;
+                }
+                break;
+            case '>':
+                {
+                alt3=9;
+                }
+                break;
+            default:
+                alt3=6;}
+
+        }
+        else if ( (LA3_0=='\"') ) {
+            int LA3_7 = input.LA(2);
+
+            if ( ((LA3_7>='\u0000' && LA3_7<='\uFFFE')) ) {
+                alt3=12;
+            }
+            else {
+                alt3=10;}
+        }
+        else if ( ((LA3_0>='\t' && LA3_0<='\n')||(LA3_0>='\f' && LA3_0<='\r')||LA3_0==' ') ) {
+            alt3=11;
+        }
+        else if ( (LA3_0=='A'||LA3_0=='a') ) {
+            switch ( input.LA(2) ) {
+            case 'N':
+            case 'n':
+                {
+                switch ( input.LA(3) ) {
+                case 'D':
+                case 'd':
+                    {
+                    int LA3_30 = input.LA(4);
+
+                    if ( ((LA3_30>='\u0000' && LA3_30<='\b')||LA3_30=='\u000B'||(LA3_30>='\u000E' && LA3_30<='\u001F')||LA3_30=='!'||(LA3_30>='#' && LA3_30<='\'')||(LA3_30>='*' && LA3_30<='.')||(LA3_30>='0' && LA3_30<=';')||(LA3_30>='?' && LA3_30<='\uFFFE')) ) {
+                        alt3=21;
+                    }
+                    else {
+                        alt3=13;}
+                    }
+                    break;
+                case 'Y':
+                case 'y':
+                    {
+                    int LA3_31 = input.LA(4);
+
+                    if ( ((LA3_31>='\u0000' && LA3_31<='\b')||LA3_31=='\u000B'||(LA3_31>='\u000E' && LA3_31<='\u001F')||LA3_31=='!'||(LA3_31>='#' && LA3_31<='\'')||(LA3_31>='*' && LA3_31<='.')||(LA3_31>='0' && LA3_31<=';')||(LA3_31>='?' && LA3_31<='\uFFFE')) ) {
+                        alt3=21;
+                    }
+                    else {
+                        alt3=20;}
+                    }
+                    break;
+                default:
+                    alt3=21;}
+
+                }
+                break;
+            case 'L':
+            case 'l':
+                {
+                int LA3_24 = input.LA(3);
+
+                if ( (LA3_24=='L'||LA3_24=='l') ) {
+                    int LA3_32 = input.LA(4);
+
+                    if ( ((LA3_32>='\u0000' && LA3_32<='\b')||LA3_32=='\u000B'||(LA3_32>='\u000E' && LA3_32<='\u001F')||LA3_32=='!'||(LA3_32>='#' && LA3_32<='\'')||(LA3_32>='*' && LA3_32<='.')||(LA3_32>='0' && LA3_32<=';')||(LA3_32>='?' && LA3_32<='\uFFFE')) ) {
+                        alt3=21;
+                    }
+                    else {
+                        alt3=19;}
+                }
+                else {
+                    alt3=21;}
+                }
+                break;
+            default:
+                alt3=21;}
+
+        }
+        else if ( (LA3_0=='O'||LA3_0=='o') ) {
+            int LA3_10 = input.LA(2);
+
+            if ( (LA3_10=='R'||LA3_10=='r') ) {
+                int LA3_25 = input.LA(3);
+
+                if ( ((LA3_25>='\u0000' && LA3_25<='\b')||LA3_25=='\u000B'||(LA3_25>='\u000E' && LA3_25<='\u001F')||LA3_25=='!'||(LA3_25>='#' && LA3_25<='\'')||(LA3_25>='*' && LA3_25<='.')||(LA3_25>='0' && LA3_25<=';')||(LA3_25>='?' && LA3_25<='\uFFFE')) ) {
+                    alt3=21;
+                }
+                else {
+                    alt3=14;}
+            }
+            else {
+                alt3=21;}
+        }
+        else if ( (LA3_0=='N'||LA3_0=='n') ) {
+            int LA3_11 = input.LA(2);
+
+            if ( (LA3_11=='O'||LA3_11=='o') ) {
+                int LA3_26 = input.LA(3);
+
+                if ( (LA3_26=='T'||LA3_26=='t') ) {
+                    int LA3_34 = input.LA(4);
+
+                    if ( ((LA3_34>='\u0000' && LA3_34<='\b')||LA3_34=='\u000B'||(LA3_34>='\u000E' && LA3_34<='\u001F')||LA3_34=='!'||(LA3_34>='#' && LA3_34<='\'')||(LA3_34>='*' && LA3_34<='.')||(LA3_34>='0' && LA3_34<=';')||(LA3_34>='?' && LA3_34<='\uFFFE')) ) {
+                        alt3=21;
+                    }
+                    else {
+                        alt3=15;}
+                }
+                else {
+                    alt3=21;}
+            }
+            else {
+                alt3=21;}
+        }
+        else if ( (LA3_0=='P'||LA3_0=='p') ) {
+            int LA3_12 = input.LA(2);
+
+            if ( (LA3_12=='R'||LA3_12=='r') ) {
+                int LA3_27 = input.LA(3);
+
+                if ( (LA3_27=='O'||LA3_27=='o') ) {
+                    int LA3_35 = input.LA(4);
+
+                    if ( (LA3_35=='X'||LA3_35=='x') ) {
+                        int LA3_42 = input.LA(5);
+
+                        if ( ((LA3_42>='\u0000' && LA3_42<='\b')||LA3_42=='\u000B'||(LA3_42>='\u000E' && LA3_42<='\u001F')||LA3_42=='!'||(LA3_42>='#' && LA3_42<='\'')||(LA3_42>='*' && LA3_42<='.')||(LA3_42>='0' && LA3_42<=';')||(LA3_42>='?' && LA3_42<='\uFFFE')) ) {
+                            alt3=21;
+                        }
+                        else {
+                            alt3=16;}
+                    }
+                    else {
+                        alt3=21;}
+                }
+                else {
+                    alt3=21;}
+            }
+            else {
+                alt3=21;}
+        }
+        else if ( (LA3_0=='W'||LA3_0=='w') ) {
+            int LA3_13 = input.LA(2);
+
+            if ( (LA3_13=='I'||LA3_13=='i') ) {
+                int LA3_28 = input.LA(3);
+
+                if ( (LA3_28=='T'||LA3_28=='t') ) {
+                    int LA3_36 = input.LA(4);
+
+                    if ( (LA3_36=='H'||LA3_36=='h') ) {
+                        int LA3_43 = input.LA(5);
+
+                        if ( (LA3_43=='I'||LA3_43=='i') ) {
+                            int LA3_46 = input.LA(6);
+
+                            if ( (LA3_46=='N'||LA3_46=='n') ) {
+                                int LA3_48 = input.LA(7);
+
+                                if ( ((LA3_48>='\u0000' && LA3_48<='\b')||LA3_48=='\u000B'||(LA3_48>='\u000E' && LA3_48<='\u001F')||LA3_48=='!'||(LA3_48>='#' && LA3_48<='\'')||(LA3_48>='*' && LA3_48<='.')||(LA3_48>='0' && LA3_48<=';')||(LA3_48>='?' && LA3_48<='\uFFFE')) ) {
+                                    alt3=21;
+                                }
+                                else {
+                                    alt3=17;}
+                            }
+                            else {
+                                alt3=21;}
+                        }
+                        else {
+                            alt3=21;}
+                    }
+                    else {
+                        alt3=21;}
+                }
+                else {
+                    alt3=21;}
+            }
+            else {
+                alt3=21;}
+        }
+        else if ( (LA3_0=='E'||LA3_0=='e') ) {
+            int LA3_14 = input.LA(2);
+
+            if ( (LA3_14=='X'||LA3_14=='x') ) {
+                int LA3_29 = input.LA(3);
+
+                if ( (LA3_29=='A'||LA3_29=='a') ) {
+                    int LA3_37 = input.LA(4);
+
+                    if ( (LA3_37=='C'||LA3_37=='c') ) {
+                        int LA3_44 = input.LA(5);
+
+                        if ( (LA3_44=='T'||LA3_44=='t') ) {
+                            int LA3_47 = input.LA(6);
+
+                            if ( ((LA3_47>='\u0000' && LA3_47<='\b')||LA3_47=='\u000B'||(LA3_47>='\u000E' && LA3_47<='\u001F')||LA3_47=='!'||(LA3_47>='#' && LA3_47<='\'')||(LA3_47>='*' && LA3_47<='.')||(LA3_47>='0' && LA3_47<=';')||(LA3_47>='?' && LA3_47<='\uFFFE')) ) {
+                                alt3=21;
+                            }
+                            else {
+                                alt3=18;}
+                        }
+                        else {
+                            alt3=21;}
+                    }
+                    else {
+                        alt3=21;}
+                }
+                else {
+                    alt3=21;}
+            }
+            else {
+                alt3=21;}
+        }
+        else if ( ((LA3_0>='\u0000' && LA3_0<='\b')||LA3_0=='\u000B'||(LA3_0>='\u000E' && LA3_0<='\u001F')||LA3_0=='!'||(LA3_0>='#' && LA3_0<='\'')||(LA3_0>='*' && LA3_0<='.')||(LA3_0>='0' && LA3_0<=';')||(LA3_0>='?' && LA3_0<='@')||(LA3_0>='B' && LA3_0<='D')||(LA3_0>='F' && LA3_0<='M')||(LA3_0>='Q' && LA3_0<='V')||(LA3_0>='X' && LA3_0<='`')||(LA3_0>='b' && LA3_0<='d')||(LA3_0>='f' && LA3_0<='m')||(LA3_0>='q' && LA3_0<='v')||(LA3_0>='x' && LA3_0<='\uFFFE')) ) {
+            alt3=21;
+        }
+        else {
+            NoViableAltException nvae =
+                new NoViableAltException("1:1: Tokens : ( T16 | T17 | T18 | T19 | T20 | T21 | T22 | T23 | T24 | QUOTE | WHITESPACE | STRING | AND | OR | NOT | PROX | WITHIN | EXACT | ALL | ANY | IDENTIFIER );", 3, 0, input);
+
+            throw nvae;
+        }
+        switch (alt3) {
+            case 1 :
+                // Cql.g3:1:10: T16
+                {
+                mT16(); 
+
+                }
+                break;
+            case 2 :
+                // Cql.g3:1:14: T17
+                {
+                mT17(); 
+
+                }
+                break;
+            case 3 :
+                // Cql.g3:1:18: T18
+                {
+                mT18(); 
+
+                }
+                break;
+            case 4 :
+                // Cql.g3:1:22: T19
+                {
+                mT19(); 
+
+                }
+                break;
+            case 5 :
+                // Cql.g3:1:26: T20
+                {
+                mT20(); 
+
+                }
+                break;
+            case 6 :
+                // Cql.g3:1:30: T21
+                {
+                mT21(); 
+
+                }
+                break;
+            case 7 :
+                // Cql.g3:1:34: T22
+                {
+                mT22(); 
+
+                }
+                break;
+            case 8 :
+                // Cql.g3:1:38: T23
+                {
+                mT23(); 
+
+                }
+                break;
+            case 9 :
+                // Cql.g3:1:42: T24
+                {
+                mT24(); 
+
+                }
+                break;
+            case 10 :
+                // Cql.g3:1:46: QUOTE
+                {
+                mQUOTE(); 
+
+                }
+                break;
+            case 11 :
+                // Cql.g3:1:52: WHITESPACE
+                {
+                mWHITESPACE(); 
+
+                }
+                break;
+            case 12 :
+                // Cql.g3:1:63: STRING
+                {
+                mSTRING(); 
+
+                }
+                break;
+            case 13 :
+                // Cql.g3:1:70: AND
+                {
+                mAND(); 
+
+                }
+                break;
+            case 14 :
+                // Cql.g3:1:74: OR
+                {
+                mOR(); 
+
+                }
+                break;
+            case 15 :
+                // Cql.g3:1:77: NOT
+                {
+                mNOT(); 
+
+                }
+                break;
+            case 16 :
+                // Cql.g3:1:81: PROX
+                {
+                mPROX(); 
+
+                }
+                break;
+            case 17 :
+                // Cql.g3:1:86: WITHIN
+                {
+                mWITHIN(); 
+
+                }
+                break;
+            case 18 :
+                // Cql.g3:1:93: EXACT
+                {
+                mEXACT(); 
+
+                }
+                break;
+            case 19 :
+                // Cql.g3:1:99: ALL
+                {
+                mALL(); 
+
+                }
+                break;
+            case 20 :
+                // Cql.g3:1:103: ANY
+                {
+                mANY(); 
+
+                }
+                break;
+            case 21 :
+                // Cql.g3:1:107: IDENTIFIER
+                {
+                mIDENTIFIER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+ 
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlClause.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlClause.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlClause.java	(revision 48242)
@@ -0,0 +1,27 @@
+package eu.dnetlib.utils.cql;
+
+/**
+ * @author stoumpos
+ * 
+ */
+public abstract class CqlClause
+{
+	public static enum CqlClauseType { BOOLEAN, RELATION, TERM };
+	
+	public final CqlClauseType type;
+	
+	CqlClause(CqlClauseType type) {
+		super();
+		this.type = type;
+	}
+	
+	@Override
+	public String toString()
+	{
+		return toCqlString();
+	}
+	
+	public abstract String toCqlString();
+
+	public abstract String toNodeString(String prefix);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactoryException.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactoryException.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactoryException.java	(revision 48242)
@@ -0,0 +1,22 @@
+package eu.dnetlib.utils.sql;
+
+/**
+ * This exception is thrown by a connection factory on any error.
+ * @author thanos@di.uoa.gr
+ *
+ */
+public class ConnectionFactoryException extends Exception {
+	/**
+	 * Used for serialization / deserialization.
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Create a new connection factory exception.
+	 * @param message a message describing the error
+	 * @param cause the nested exception that originally caused the error
+	 */
+	public ConnectionFactoryException(String message, Throwable cause) {
+		super(message, cause);
+	}
+}

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactoryException.java
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/TransportConfiguration.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/TransportConfiguration.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/TransportConfiguration.java	(revision 48242)
@@ -0,0 +1,15 @@
+package eu.dnetlib.utils.resolver;
+
+import eu.dnetlib.api.DriverService;
+
+public interface TransportConfiguration {
+
+	public <T extends DriverService> Class<?> getEndpointClass(
+			Class<T> serviceClass);
+
+	public <T extends DriverService> Class<T> getServiceClientClass(
+			Class<T> serviceClass);
+
+	public <T extends DriverService> Class<T> getServiceClass(
+			Class<?> endpointClass);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/RFC3339DateFormat.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/RFC3339DateFormat.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/RFC3339DateFormat.java	(revision 48242)
@@ -0,0 +1,140 @@
+package eu.dnetlib.utils;
+
+import java.math.RoundingMode;
+import java.text.DateFormat;
+import java.text.FieldPosition;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * This class implements a date format conforming to RFC-3339.
+ * @author thanos@di.uoa.gr
+ *
+ */
+public class RFC3339DateFormat extends DateFormat {
+	private static final long serialVersionUID = 1L;
+	
+	private final NumberFormat twoDigits;
+	private final NumberFormat threeDigits;
+	private final NumberFormat fourDigits;
+	private final Pattern pattern;
+
+	/**
+	 * Construct a new RFC-3339 date format.
+	 */
+	public RFC3339DateFormat() {
+		calendar = Calendar.getInstance();
+		twoDigits = NumberFormat.getIntegerInstance();
+		twoDigits.setGroupingUsed(false);
+		twoDigits.setRoundingMode(RoundingMode.UNNECESSARY);
+		twoDigits.setMaximumIntegerDigits(2);
+		twoDigits.setMinimumIntegerDigits(2);
+		threeDigits = NumberFormat.getIntegerInstance();
+		threeDigits.setGroupingUsed(false);
+		threeDigits.setRoundingMode(RoundingMode.UNNECESSARY);
+		threeDigits.setMaximumIntegerDigits(3);
+		threeDigits.setMinimumIntegerDigits(3);
+		fourDigits = NumberFormat.getIntegerInstance();
+		fourDigits.setGroupingUsed(false);
+		fourDigits.setRoundingMode(RoundingMode.UNNECESSARY);
+		fourDigits.setMaximumIntegerDigits(4);
+		fourDigits.setMinimumIntegerDigits(4);
+		pattern = Pattern.compile("^(\\d{4})\\-(\\d{2})\\-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d{3})(Z|\\+(\\d{2}):(\\d{2})|\\-(\\d{2}):(\\d{2}))$");
+	}
+
+	@Override
+	public StringBuffer format(final Date date, final StringBuffer toAppendTo, final FieldPosition fieldPosition) {
+		calendar.setTime(date);
+		final int beginIndex = toAppendTo.length();
+		toAppendTo.append(fourDigits.format(calendar.get(Calendar.YEAR)));
+		toAppendTo.append("-");
+		toAppendTo.append(twoDigits.format(calendar.get(Calendar.MONTH) + 1));
+		toAppendTo.append("-");
+		toAppendTo.append(twoDigits.format(calendar.get(Calendar.DAY_OF_MONTH)));
+		toAppendTo.append("T");
+		toAppendTo.append(twoDigits.format(calendar.get(Calendar.HOUR_OF_DAY)));
+		toAppendTo.append(":");
+		toAppendTo.append(twoDigits.format(calendar.get(Calendar.MINUTE)));
+		toAppendTo.append(":");
+		toAppendTo.append(twoDigits.format(calendar.get(Calendar.SECOND)));
+		toAppendTo.append(".");
+		toAppendTo.append(threeDigits.format(calendar.get(Calendar.MILLISECOND)));
+		final int offset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
+		if (offset == 0)
+			toAppendTo.append("Z");
+		else {
+			toAppendTo.append((offset > 0) ? "+" : "-");
+			toAppendTo.append(twoDigits.format(offset / 3600000)); // convert milliseconds to hours
+			toAppendTo.append(":");
+			toAppendTo.append(twoDigits.format((offset % 3600000) / 60000)); // convert remaining milliseconds to minutes
+		}
+		switch (fieldPosition.getField()) {
+		case DateFormat.YEAR_FIELD:
+			fieldPosition.setBeginIndex(beginIndex);
+			fieldPosition.setEndIndex(beginIndex + 4);
+			break;
+		case DateFormat.MONTH_FIELD:
+			fieldPosition.setBeginIndex(beginIndex + 5);
+			fieldPosition.setEndIndex(beginIndex + 7);
+			break;
+		case DateFormat.DATE_FIELD:
+			fieldPosition.setBeginIndex(beginIndex + 8);
+			fieldPosition.setEndIndex(beginIndex + 10);
+			break;
+		case DateFormat.HOUR_OF_DAY0_FIELD:
+			fieldPosition.setBeginIndex(beginIndex + 11);
+			fieldPosition.setEndIndex(beginIndex + 13);
+			break;
+		case DateFormat.MINUTE_FIELD:
+			fieldPosition.setBeginIndex(beginIndex + 14);
+			fieldPosition.setEndIndex(beginIndex + 16);
+			break;
+		case DateFormat.SECOND_FIELD:
+			fieldPosition.setBeginIndex(beginIndex + 17);
+			fieldPosition.setEndIndex(beginIndex + 19);
+			break;
+		case DateFormat.MILLISECOND_FIELD:
+			fieldPosition.setBeginIndex(beginIndex + 20);
+			fieldPosition.setEndIndex(beginIndex + 23);
+		case DateFormat.TIMEZONE_FIELD:
+			fieldPosition.setBeginIndex(beginIndex + 23);
+			fieldPosition.setEndIndex(toAppendTo.length());
+		}
+		return toAppendTo;
+	}
+
+	@Override
+	public Date parse(final String source, final ParsePosition parsePosition) {
+		Matcher matcher = pattern.matcher(source.substring(parsePosition.getIndex()));
+		if (!matcher.matches()) {
+			parsePosition.setErrorIndex(parsePosition.getIndex());
+			return null;
+		}
+		try {
+			calendar.set(Calendar.YEAR, fourDigits.parse(matcher.group(1)).intValue());
+			calendar.set(Calendar.MONTH, twoDigits.parse(matcher.group(2)).intValue() - 1);
+			calendar.set(Calendar.DAY_OF_MONTH, twoDigits.parse(matcher.group(3)).intValue());
+			calendar.set(Calendar.HOUR_OF_DAY, twoDigits.parse(matcher.group(4)).intValue());
+			calendar.set(Calendar.MINUTE, twoDigits.parse(matcher.group(5)).intValue());
+			calendar.set(Calendar.SECOND, twoDigits.parse(matcher.group(6)).intValue());
+			calendar.set(Calendar.MILLISECOND, threeDigits.parse(matcher.group(7)).intValue());
+			if (matcher.group(8).equals("Z"))
+				calendar.set(Calendar.ZONE_OFFSET, 0);
+			else if (matcher.group(8).startsWith("+"))
+				calendar.set(Calendar.ZONE_OFFSET, (twoDigits.parse(matcher.group(9)).intValue() * 60 + twoDigits.parse(matcher.group(10)).intValue()) * 60000);
+			else if (matcher.group(8).startsWith("-"))
+				calendar.set(Calendar.ZONE_OFFSET, -((twoDigits.parse(matcher.group(11)).intValue() * 60 + twoDigits.parse(matcher.group(12)).intValue()) * 60000));
+			calendar.set(Calendar.DST_OFFSET, 0);
+			parsePosition.setIndex(parsePosition.getIndex() + matcher.group(0).length());
+			return new Date(calendar.getTimeInMillis());
+		} catch (ParseException e) {
+			parsePosition.setErrorIndex(parsePosition.getIndex() + e.getErrorOffset());
+			return null;
+		}
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/QUERYType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/QUERYType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/QUERYType.java	(revision 48242)
@@ -0,0 +1,403 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for QUERYType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="QUERYType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="CQL">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="REFINE" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="COMMUNITYID" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="communityId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="COLLECTIONID" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="collectionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QUERYType", propOrder = {
+    "cql",
+    "refine",
+    "communityid",
+    "collectionid"
+})
+public class QUERYType {
+
+    @XmlElement(name = "CQL", required = true)
+    protected QUERYType.CQL cql;
+    @XmlElement(name = "REFINE")
+    protected QUERYType.REFINE refine;
+    @XmlElement(name = "COMMUNITYID")
+    protected List<QUERYType.COMMUNITYID> communityid;
+    @XmlElement(name = "COLLECTIONID")
+    protected List<QUERYType.COLLECTIONID> collectionid;
+
+    /**
+     * Gets the value of the cql property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link QUERYType.CQL }
+     *     
+     */
+    public QUERYType.CQL getCQL() {
+        return cql;
+    }
+
+    /**
+     * Sets the value of the cql property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link QUERYType.CQL }
+     *     
+     */
+    public void setCQL(QUERYType.CQL value) {
+        this.cql = value;
+    }
+
+    /**
+     * Gets the value of the refine property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link QUERYType.REFINE }
+     *     
+     */
+    public QUERYType.REFINE getREFINE() {
+        return refine;
+    }
+
+    /**
+     * Sets the value of the refine property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link QUERYType.REFINE }
+     *     
+     */
+    public void setREFINE(QUERYType.REFINE value) {
+        this.refine = value;
+    }
+
+    /**
+     * Gets the value of the communityid property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the communityid property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getCOMMUNITYID().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link QUERYType.COMMUNITYID }
+     * 
+     * 
+     */
+    public List<QUERYType.COMMUNITYID> getCOMMUNITYID() {
+        if (communityid == null) {
+            communityid = new ArrayList<QUERYType.COMMUNITYID>();
+        }
+        return this.communityid;
+    }
+
+    /**
+     * Gets the value of the collectionid property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the collectionid property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getCOLLECTIONID().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link QUERYType.COLLECTIONID }
+     * 
+     * 
+     */
+    public List<QUERYType.COLLECTIONID> getCOLLECTIONID() {
+        if (collectionid == null) {
+            collectionid = new ArrayList<QUERYType.COLLECTIONID>();
+        }
+        return this.collectionid;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="collectionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class COLLECTIONID {
+
+        @XmlAttribute
+        protected String collectionId;
+
+        /**
+         * Gets the value of the collectionId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getCollectionId() {
+            return collectionId;
+        }
+
+        /**
+         * Sets the value of the collectionId property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setCollectionId(String value) {
+            this.collectionId = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="communityId" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class COMMUNITYID {
+
+        @XmlAttribute
+        protected String communityId;
+
+        /**
+         * Gets the value of the communityId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getCommunityId() {
+            return communityId;
+        }
+
+        /**
+         * Sets the value of the communityId property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setCommunityId(String value) {
+            this.communityId = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class CQL {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class REFINE {
+
+        @XmlAttribute
+        protected String value;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlParser.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlParser.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlParser.java	(revision 48242)
@@ -0,0 +1,2278 @@
+// $ANTLR 3.0.1 Cql.g3 2013-07-19 13:56:26
+
+	package eu.dnetlib.utils.cql;
+
+
+import org.antlr.runtime.*;
+
+
+import org.antlr.runtime.tree.*;
+
+public class CqlParser extends Parser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "AND", "OR", "NOT", "PROX", "WITHIN", "EXACT", "ALL", "ANY", "IDENTIFIER", "STRING", "QUOTE", "WHITESPACE", "'>'", "'='", "'/'", "'('", "')'", "'<'", "'>='", "'<='", "'<>'"
+    };
+    public static final int QUOTE=14;
+    public static final int ANY=11;
+    public static final int IDENTIFIER=12;
+    public static final int ALL=10;
+    public static final int OR=5;
+    public static final int WITHIN=8;
+    public static final int PROX=7;
+    public static final int WHITESPACE=15;
+    public static final int EXACT=9;
+    public static final int NOT=6;
+    public static final int AND=4;
+    public static final int EOF=-1;
+    public static final int STRING=13;
+
+        public CqlParser(TokenStream input) {
+            super(input);
+        }
+        
+    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
+
+    public void setTreeAdaptor(TreeAdaptor adaptor) {
+        this.adaptor = adaptor;
+    }
+    public TreeAdaptor getTreeAdaptor() {
+        return adaptor;
+    }
+
+    public String[] getTokenNames() { return tokenNames; }
+    public String getGrammarFileName() { return "Cql.g3"; }
+
+
+      @Override
+      public void reportError(RecognitionException e) {
+        throw new CqlRuntimeException("Parser Error", e);
+      }
+
+
+    public static class cql_return extends ParserRuleReturnScope {
+        public CqlQuery query;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start cql
+    // Cql.g3:33:1: cql returns [CqlQuery query] : q= cqlquery ;
+    public final cql_return cql() throws RecognitionException {
+        cql_return retval = new cql_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        cqlquery_return q = null;
+
+
+
+        try {
+            // Cql.g3:33:30: (q= cqlquery )
+            // Cql.g3:33:32: q= cqlquery
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_cqlquery_in_cql78);
+            q=cqlquery();
+            _fsp--;
+
+            adaptor.addChild(root_0, q.getTree());
+
+            						//System.out.println("query tree: " +
+            						//		((CommonTree)q.tree).toStringTree() );
+            						retval.query = q.query;
+            					
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end cql
+
+    public static class cqlquery_return extends ParserRuleReturnScope {
+        public CqlQuery query;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start cqlquery
+    // Cql.g3:41:1: cqlquery returns [CqlQuery query] : ( qscope q= cqlquery | c= scopedClause );
+    public final cqlquery_return cqlquery() throws RecognitionException {
+        cqlquery_return retval = new cqlquery_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        cqlquery_return q = null;
+
+        scopedClause_return c = null;
+
+        qscope_return qscope1 = null;
+
+
+
+        try {
+            // Cql.g3:42:5: ( qscope q= cqlquery | c= scopedClause )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==16) ) {
+                alt1=1;
+            }
+            else if ( ((LA1_0>=AND && LA1_0<=PROX)||(LA1_0>=IDENTIFIER && LA1_0<=STRING)||LA1_0==19) ) {
+                alt1=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("41:1: cqlquery returns [CqlQuery query] : ( qscope q= cqlquery | c= scopedClause );", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // Cql.g3:42:7: qscope q= cqlquery
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_qscope_in_cqlquery104);
+                    qscope1=qscope();
+                    _fsp--;
+
+                    pushFollow(FOLLOW_cqlquery_in_cqlquery109);
+                    q=cqlquery();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, q.getTree());
+                     retval.query = q.query; 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:43:7: c= scopedClause
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_scopedClause_in_cqlquery121);
+                    c=scopedClause();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, c.getTree());
+                     retval.query = new CqlQuery(c.clause); 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end cqlquery
+
+    public static class qscope_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start qscope
+    // Cql.g3:45:1: qscope : ( '>' prefix '=' uri | '>' uri );
+    public final qscope_return qscope() throws RecognitionException {
+        qscope_return retval = new qscope_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token char_literal2=null;
+        Token char_literal4=null;
+        Token char_literal6=null;
+        prefix_return prefix3 = null;
+
+        uri_return uri5 = null;
+
+        uri_return uri7 = null;
+
+
+        CommonTree char_literal2_tree=null;
+        CommonTree char_literal4_tree=null;
+        CommonTree char_literal6_tree=null;
+
+        try {
+            // Cql.g3:47:9: ( '>' prefix '=' uri | '>' uri )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==16) ) {
+                switch ( input.LA(2) ) {
+                case IDENTIFIER:
+                    {
+                    int LA2_2 = input.LA(3);
+
+                    if ( ((LA2_2>=AND && LA2_2<=PROX)||(LA2_2>=IDENTIFIER && LA2_2<=STRING)||LA2_2==16||LA2_2==19) ) {
+                        alt2=2;
+                    }
+                    else if ( (LA2_2==17) ) {
+                        alt2=1;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 2, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case STRING:
+                    {
+                    int LA2_3 = input.LA(3);
+
+                    if ( ((LA2_3>=AND && LA2_3<=PROX)||(LA2_3>=IDENTIFIER && LA2_3<=STRING)||LA2_3==16||LA2_3==19) ) {
+                        alt2=2;
+                    }
+                    else if ( (LA2_3==17) ) {
+                        alt2=1;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 3, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case AND:
+                    {
+                    int LA2_4 = input.LA(3);
+
+                    if ( (LA2_4==17) ) {
+                        alt2=1;
+                    }
+                    else if ( ((LA2_4>=AND && LA2_4<=PROX)||(LA2_4>=IDENTIFIER && LA2_4<=STRING)||LA2_4==16||LA2_4==19) ) {
+                        alt2=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 4, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case OR:
+                    {
+                    int LA2_5 = input.LA(3);
+
+                    if ( (LA2_5==17) ) {
+                        alt2=1;
+                    }
+                    else if ( ((LA2_5>=AND && LA2_5<=PROX)||(LA2_5>=IDENTIFIER && LA2_5<=STRING)||LA2_5==16||LA2_5==19) ) {
+                        alt2=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 5, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case NOT:
+                    {
+                    int LA2_6 = input.LA(3);
+
+                    if ( (LA2_6==17) ) {
+                        alt2=1;
+                    }
+                    else if ( ((LA2_6>=AND && LA2_6<=PROX)||(LA2_6>=IDENTIFIER && LA2_6<=STRING)||LA2_6==16||LA2_6==19) ) {
+                        alt2=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 6, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case PROX:
+                    {
+                    int LA2_7 = input.LA(3);
+
+                    if ( (LA2_7==17) ) {
+                        alt2=1;
+                    }
+                    else if ( ((LA2_7>=AND && LA2_7<=PROX)||(LA2_7>=IDENTIFIER && LA2_7<=STRING)||LA2_7==16||LA2_7==19) ) {
+                        alt2=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 7, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                default:
+                    NoViableAltException nvae =
+                        new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 1, input);
+
+                    throw nvae;
+                }
+
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("45:1: qscope : ( '>' prefix '=' uri | '>' uri );", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // Cql.g3:47:11: '>' prefix '=' uri
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal2=(Token)input.LT(1);
+                    match(input,16,FOLLOW_16_in_qscope137); 
+                    char_literal2_tree = (CommonTree)adaptor.create(char_literal2);
+                    adaptor.addChild(root_0, char_literal2_tree);
+
+                    pushFollow(FOLLOW_prefix_in_qscope139);
+                    prefix3=prefix();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, prefix3.getTree());
+                    char_literal4=(Token)input.LT(1);
+                    match(input,17,FOLLOW_17_in_qscope141); 
+                    char_literal4_tree = (CommonTree)adaptor.create(char_literal4);
+                    adaptor.addChild(root_0, char_literal4_tree);
+
+                    pushFollow(FOLLOW_uri_in_qscope143);
+                    uri5=uri();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, uri5.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:47:32: '>' uri
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal6=(Token)input.LT(1);
+                    match(input,16,FOLLOW_16_in_qscope147); 
+                    char_literal6_tree = (CommonTree)adaptor.create(char_literal6);
+                    adaptor.addChild(root_0, char_literal6_tree);
+
+                    pushFollow(FOLLOW_uri_in_qscope149);
+                    uri7=uri();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, uri7.getTree());
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end qscope
+
+    public static class prefix_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start prefix
+    // Cql.g3:48:1: prefix : term ;
+    public final prefix_return prefix() throws RecognitionException {
+        prefix_return retval = new prefix_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        term_return term8 = null;
+
+
+
+        try {
+            // Cql.g3:48:9: ( term )
+            // Cql.g3:48:11: term
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_term_in_prefix158);
+            term8=term();
+            _fsp--;
+
+            adaptor.addChild(root_0, term8.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end prefix
+
+    public static class uri_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start uri
+    // Cql.g3:49:1: uri : term ;
+    public final uri_return uri() throws RecognitionException {
+        uri_return retval = new uri_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        term_return term9 = null;
+
+
+
+        try {
+            // Cql.g3:49:7: ( term )
+            // Cql.g3:49:9: term
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_term_in_uri168);
+            term9=term();
+            _fsp--;
+
+            adaptor.addChild(root_0, term9.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end uri
+
+    public static class scopedClause_return extends ParserRuleReturnScope {
+        public CqlClause clause;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start scopedClause
+    // Cql.g3:50:1: scopedClause returns [CqlClause clause] : left= searchClause (op= booleanGroup right= searchClause )* ;
+    public final scopedClause_return scopedClause() throws RecognitionException {
+        scopedClause_return retval = new scopedClause_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        searchClause_return left = null;
+
+        booleanGroup_return op = null;
+
+        searchClause_return right = null;
+
+
+
+        try {
+            // Cql.g3:53:41: (left= searchClause (op= booleanGroup right= searchClause )* )
+            // Cql.g3:54:3: left= searchClause (op= booleanGroup right= searchClause )*
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_searchClause_in_scopedClause188);
+            left=searchClause();
+            _fsp--;
+
+            adaptor.addChild(root_0, left.getTree());
+             retval.clause = left.clause; 
+            // Cql.g3:55:3: (op= booleanGroup right= searchClause )*
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>=AND && LA3_0<=PROX)) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // Cql.g3:55:4: op= booleanGroup right= searchClause
+            	    {
+            	    pushFollow(FOLLOW_booleanGroup_in_scopedClause197);
+            	    op=booleanGroup();
+            	    _fsp--;
+
+            	    root_0 = (CommonTree)adaptor.becomeRoot(op.getTree(), root_0);
+            	    pushFollow(FOLLOW_searchClause_in_scopedClause202);
+            	    right=searchClause();
+            	    _fsp--;
+
+            	    adaptor.addChild(root_0, right.getTree());
+            	     retval.clause = new CqlBoolean(retval.clause, op.value, right.clause); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end scopedClause
+
+    public static class booleanGroup_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start booleanGroup
+    // Cql.g3:60:1: booleanGroup returns [String value] : b= bool ( modifierList )? ;
+    public final booleanGroup_return booleanGroup() throws RecognitionException {
+        booleanGroup_return retval = new booleanGroup_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        bool_return b = null;
+
+        modifierList_return modifierList10 = null;
+
+
+
+        try {
+            // Cql.g3:60:37: (b= bool ( modifierList )? )
+            // Cql.g3:61:2: b= bool ( modifierList )?
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_bool_in_booleanGroup230);
+            b=bool();
+            _fsp--;
+
+            adaptor.addChild(root_0, b.getTree());
+            // Cql.g3:61:9: ( modifierList )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==18) ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // Cql.g3:61:10: modifierList
+                    {
+                    pushFollow(FOLLOW_modifierList_in_booleanGroup233);
+                    modifierList10=modifierList();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, modifierList10.getTree());
+
+                    }
+                    break;
+
+            }
+
+             retval.value = b.value; 
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end booleanGroup
+
+    public static class bool_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start bool
+    // Cql.g3:62:1: bool returns [String value] : ( AND | OR | NOT | PROX );
+    public final bool_return bool() throws RecognitionException {
+        bool_return retval = new bool_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token AND11=null;
+        Token OR12=null;
+        Token NOT13=null;
+        Token PROX14=null;
+
+        CommonTree AND11_tree=null;
+        CommonTree OR12_tree=null;
+        CommonTree NOT13_tree=null;
+        CommonTree PROX14_tree=null;
+
+        try {
+            // Cql.g3:63:2: ( AND | OR | NOT | PROX )
+            int alt5=4;
+            switch ( input.LA(1) ) {
+            case AND:
+                {
+                alt5=1;
+                }
+                break;
+            case OR:
+                {
+                alt5=2;
+                }
+                break;
+            case NOT:
+                {
+                alt5=3;
+                }
+                break;
+            case PROX:
+                {
+                alt5=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("62:1: bool returns [String value] : ( AND | OR | NOT | PROX );", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // Cql.g3:63:4: AND
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    AND11=(Token)input.LT(1);
+                    match(input,AND,FOLLOW_AND_in_bool250); 
+                    AND11_tree = (CommonTree)adaptor.create(AND11);
+                    adaptor.addChild(root_0, AND11_tree);
+
+                     retval.value = "and"; 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:64:4: OR
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    OR12=(Token)input.LT(1);
+                    match(input,OR,FOLLOW_OR_in_bool257); 
+                    OR12_tree = (CommonTree)adaptor.create(OR12);
+                    adaptor.addChild(root_0, OR12_tree);
+
+                     retval.value = "or"; 
+
+                    }
+                    break;
+                case 3 :
+                    // Cql.g3:65:4: NOT
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    NOT13=(Token)input.LT(1);
+                    match(input,NOT,FOLLOW_NOT_in_bool264); 
+                    NOT13_tree = (CommonTree)adaptor.create(NOT13);
+                    adaptor.addChild(root_0, NOT13_tree);
+
+                     retval.value = "not"; 
+
+                    }
+                    break;
+                case 4 :
+                    // Cql.g3:66:4: PROX
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    PROX14=(Token)input.LT(1);
+                    match(input,PROX,FOLLOW_PROX_in_bool271); 
+                    PROX14_tree = (CommonTree)adaptor.create(PROX14);
+                    adaptor.addChild(root_0, PROX14_tree);
+
+                     retval.value = "prox"; 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end bool
+
+    public static class modifierList_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start modifierList
+    // Cql.g3:68:1: modifierList : ( modifier )+ ;
+    public final modifierList_return modifierList() throws RecognitionException {
+        modifierList_return retval = new modifierList_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        modifier_return modifier15 = null;
+
+
+
+        try {
+            // Cql.g3:70:14: ( ( modifier )+ )
+            // Cql.g3:70:16: ( modifier )+
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            // Cql.g3:70:16: ( modifier )+
+            int cnt6=0;
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==18) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // Cql.g3:70:17: modifier
+            	    {
+            	    pushFollow(FOLLOW_modifier_in_modifierList287);
+            	    modifier15=modifier();
+            	    _fsp--;
+
+            	    adaptor.addChild(root_0, modifier15.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt6 >= 1 ) break loop6;
+                        EarlyExitException eee =
+                            new EarlyExitException(6, input);
+                        throw eee;
+                }
+                cnt6++;
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end modifierList
+
+    public static class modifier_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start modifier
+    // Cql.g3:71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );
+    public final modifier_return modifier() throws RecognitionException {
+        modifier_return retval = new modifier_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token char_literal16=null;
+        Token char_literal20=null;
+        modifierName_return modifierName17 = null;
+
+        comparitorSymbol_return comparitorSymbol18 = null;
+
+        modifierValue_return modifierValue19 = null;
+
+        modifierName_return modifierName21 = null;
+
+
+        CommonTree char_literal16_tree=null;
+        CommonTree char_literal20_tree=null;
+
+        try {
+            // Cql.g3:71:11: ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName )
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==18) ) {
+                switch ( input.LA(2) ) {
+                case IDENTIFIER:
+                    {
+                    int LA7_2 = input.LA(3);
+
+                    if ( ((LA7_2>=AND && LA7_2<=PROX)||(LA7_2>=IDENTIFIER && LA7_2<=STRING)||(LA7_2>=18 && LA7_2<=19)) ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_2>=16 && LA7_2<=17)||(LA7_2>=21 && LA7_2<=24)) ) {
+                        alt7=1;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 2, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case STRING:
+                    {
+                    int LA7_3 = input.LA(3);
+
+                    if ( ((LA7_3>=AND && LA7_3<=PROX)||(LA7_3>=IDENTIFIER && LA7_3<=STRING)||(LA7_3>=18 && LA7_3<=19)) ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_3>=16 && LA7_3<=17)||(LA7_3>=21 && LA7_3<=24)) ) {
+                        alt7=1;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 3, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case AND:
+                    {
+                    int LA7_4 = input.LA(3);
+
+                    if ( ((LA7_4>=16 && LA7_4<=17)||(LA7_4>=21 && LA7_4<=24)) ) {
+                        alt7=1;
+                    }
+                    else if ( ((LA7_4>=AND && LA7_4<=PROX)||(LA7_4>=IDENTIFIER && LA7_4<=STRING)||(LA7_4>=18 && LA7_4<=19)) ) {
+                        alt7=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 4, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case OR:
+                    {
+                    int LA7_5 = input.LA(3);
+
+                    if ( ((LA7_5>=16 && LA7_5<=17)||(LA7_5>=21 && LA7_5<=24)) ) {
+                        alt7=1;
+                    }
+                    else if ( ((LA7_5>=AND && LA7_5<=PROX)||(LA7_5>=IDENTIFIER && LA7_5<=STRING)||(LA7_5>=18 && LA7_5<=19)) ) {
+                        alt7=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 5, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case NOT:
+                    {
+                    int LA7_6 = input.LA(3);
+
+                    if ( ((LA7_6>=16 && LA7_6<=17)||(LA7_6>=21 && LA7_6<=24)) ) {
+                        alt7=1;
+                    }
+                    else if ( ((LA7_6>=AND && LA7_6<=PROX)||(LA7_6>=IDENTIFIER && LA7_6<=STRING)||(LA7_6>=18 && LA7_6<=19)) ) {
+                        alt7=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 6, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case PROX:
+                    {
+                    int LA7_7 = input.LA(3);
+
+                    if ( ((LA7_7>=16 && LA7_7<=17)||(LA7_7>=21 && LA7_7<=24)) ) {
+                        alt7=1;
+                    }
+                    else if ( ((LA7_7>=AND && LA7_7<=PROX)||(LA7_7>=IDENTIFIER && LA7_7<=STRING)||(LA7_7>=18 && LA7_7<=19)) ) {
+                        alt7=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 7, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                default:
+                    NoViableAltException nvae =
+                        new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 1, input);
+
+                    throw nvae;
+                }
+
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("71:1: modifier : ( '/' modifierName comparitorSymbol modifierValue | '/' modifierName );", 7, 0, input);
+
+                throw nvae;
+            }
+            switch (alt7) {
+                case 1 :
+                    // Cql.g3:71:13: '/' modifierName comparitorSymbol modifierValue
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal16=(Token)input.LT(1);
+                    match(input,18,FOLLOW_18_in_modifier298); 
+                    char_literal16_tree = (CommonTree)adaptor.create(char_literal16);
+                    adaptor.addChild(root_0, char_literal16_tree);
+
+                    pushFollow(FOLLOW_modifierName_in_modifier300);
+                    modifierName17=modifierName();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, modifierName17.getTree());
+                    pushFollow(FOLLOW_comparitorSymbol_in_modifier302);
+                    comparitorSymbol18=comparitorSymbol();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, comparitorSymbol18.getTree());
+                    pushFollow(FOLLOW_modifierValue_in_modifier304);
+                    modifierValue19=modifierValue();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, modifierValue19.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:72:9: '/' modifierName
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal20=(Token)input.LT(1);
+                    match(input,18,FOLLOW_18_in_modifier314); 
+                    char_literal20_tree = (CommonTree)adaptor.create(char_literal20);
+                    adaptor.addChild(root_0, char_literal20_tree);
+
+                    pushFollow(FOLLOW_modifierName_in_modifier316);
+                    modifierName21=modifierName();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, modifierName21.getTree());
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end modifier
+
+    public static class modifierName_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start modifierName
+    // Cql.g3:73:1: modifierName : term ;
+    public final modifierName_return modifierName() throws RecognitionException {
+        modifierName_return retval = new modifierName_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        term_return term22 = null;
+
+
+
+        try {
+            // Cql.g3:73:14: ( term )
+            // Cql.g3:73:16: term
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_term_in_modifierName324);
+            term22=term();
+            _fsp--;
+
+            adaptor.addChild(root_0, term22.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end modifierName
+
+    public static class modifierValue_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start modifierValue
+    // Cql.g3:74:1: modifierValue : term ;
+    public final modifierValue_return modifierValue() throws RecognitionException {
+        modifierValue_return retval = new modifierValue_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        term_return term23 = null;
+
+
+
+        try {
+            // Cql.g3:74:15: ( term )
+            // Cql.g3:74:17: term
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_term_in_modifierValue332);
+            term23=term();
+            _fsp--;
+
+            adaptor.addChild(root_0, term23.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end modifierValue
+
+    public static class searchClause_return extends ParserRuleReturnScope {
+        public CqlClause clause;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start searchClause
+    // Cql.g3:75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );
+    public final searchClause_return searchClause() throws RecognitionException {
+        searchClause_return retval = new searchClause_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token char_literal24=null;
+        Token char_literal25=null;
+        cqlquery_return q = null;
+
+        index_return i = null;
+
+        relation_return r = null;
+
+        searchTerm_return v = null;
+
+        searchTerm_return t = null;
+
+
+        CommonTree char_literal24_tree=null;
+        CommonTree char_literal25_tree=null;
+
+        try {
+            // Cql.g3:79:6: ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm )
+            int alt8=3;
+            switch ( input.LA(1) ) {
+            case 19:
+                {
+                alt8=1;
+                }
+                break;
+            case IDENTIFIER:
+                {
+                int LA8_2 = input.LA(2);
+
+                if ( ((LA8_2>=WITHIN && LA8_2<=ANY)||(LA8_2>=16 && LA8_2<=17)||(LA8_2>=21 && LA8_2<=24)) ) {
+                    alt8=2;
+                }
+                else if ( (LA8_2==EOF||(LA8_2>=AND && LA8_2<=PROX)||LA8_2==20) ) {
+                    alt8=3;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );", 8, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case STRING:
+                {
+                int LA8_3 = input.LA(2);
+
+                if ( ((LA8_3>=WITHIN && LA8_3<=ANY)||(LA8_3>=16 && LA8_3<=17)||(LA8_3>=21 && LA8_3<=24)) ) {
+                    alt8=2;
+                }
+                else if ( (LA8_3==EOF||(LA8_3>=AND && LA8_3<=PROX)||LA8_3==20) ) {
+                    alt8=3;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );", 8, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case AND:
+                {
+                int LA8_4 = input.LA(2);
+
+                if ( (LA8_4==EOF||(LA8_4>=AND && LA8_4<=PROX)||LA8_4==20) ) {
+                    alt8=3;
+                }
+                else if ( ((LA8_4>=WITHIN && LA8_4<=ANY)||(LA8_4>=16 && LA8_4<=17)||(LA8_4>=21 && LA8_4<=24)) ) {
+                    alt8=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );", 8, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case OR:
+                {
+                int LA8_5 = input.LA(2);
+
+                if ( (LA8_5==EOF||(LA8_5>=AND && LA8_5<=PROX)||LA8_5==20) ) {
+                    alt8=3;
+                }
+                else if ( ((LA8_5>=WITHIN && LA8_5<=ANY)||(LA8_5>=16 && LA8_5<=17)||(LA8_5>=21 && LA8_5<=24)) ) {
+                    alt8=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );", 8, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case NOT:
+                {
+                int LA8_6 = input.LA(2);
+
+                if ( (LA8_6==EOF||(LA8_6>=AND && LA8_6<=PROX)||LA8_6==20) ) {
+                    alt8=3;
+                }
+                else if ( ((LA8_6>=WITHIN && LA8_6<=ANY)||(LA8_6>=16 && LA8_6<=17)||(LA8_6>=21 && LA8_6<=24)) ) {
+                    alt8=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );", 8, 6, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case PROX:
+                {
+                int LA8_7 = input.LA(2);
+
+                if ( (LA8_7==EOF||(LA8_7>=AND && LA8_7<=PROX)||LA8_7==20) ) {
+                    alt8=3;
+                }
+                else if ( ((LA8_7>=WITHIN && LA8_7<=ANY)||(LA8_7>=16 && LA8_7<=17)||(LA8_7>=21 && LA8_7<=24)) ) {
+                    alt8=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );", 8, 7, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("75:1: searchClause returns [CqlClause clause] : ( '(' q= cqlquery ')' | i= index r= relation v= searchTerm | t= searchTerm );", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // Cql.g3:79:8: '(' q= cqlquery ')'
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal24=(Token)input.LT(1);
+                    match(input,19,FOLLOW_19_in_searchClause353); 
+                    pushFollow(FOLLOW_cqlquery_in_searchClause358);
+                    q=cqlquery();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, q.getTree());
+                    char_literal25=(Token)input.LT(1);
+                    match(input,20,FOLLOW_20_in_searchClause360); 
+                     retval.clause = q.query.root; 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:80:8: i= index r= relation v= searchTerm
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_index_in_searchClause374);
+                    i=index();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, i.getTree());
+                    pushFollow(FOLLOW_relation_in_searchClause378);
+                    r=relation();
+                    _fsp--;
+
+                    root_0 = (CommonTree)adaptor.becomeRoot(r.getTree(), root_0);
+                    pushFollow(FOLLOW_searchTerm_in_searchClause383);
+                    v=searchTerm();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, v.getTree());
+                     retval.clause = new CqlRelation(i.value, r.value, v.value); 
+
+                    }
+                    break;
+                case 3 :
+                    // Cql.g3:82:8: t= searchTerm
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_searchTerm_in_searchClause402);
+                    t=searchTerm();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, t.getTree());
+                     retval.clause = new CqlTerm(t.value); 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end searchClause
+
+    public static class index_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start index
+    // Cql.g3:84:1: index returns [String value] : t= term ;
+    public final index_return index() throws RecognitionException {
+        index_return retval = new index_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        term_return t = null;
+
+
+
+        try {
+            // Cql.g3:84:31: (t= term )
+            // Cql.g3:84:33: t= term
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_term_in_index420);
+            t=term();
+            _fsp--;
+
+            adaptor.addChild(root_0, t.getTree());
+             retval.value = t.value; 
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end index
+
+    public static class relation_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start relation
+    // Cql.g3:86:1: relation returns [String value] : c= comparitor ( modifierList )? ;
+    public final relation_return relation() throws RecognitionException {
+        relation_return retval = new relation_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        comparitor_return c = null;
+
+        modifierList_return modifierList26 = null;
+
+
+
+        try {
+            // Cql.g3:86:33: (c= comparitor ( modifierList )? )
+            // Cql.g3:87:7: c= comparitor ( modifierList )?
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_comparitor_in_relation444);
+            c=comparitor();
+            _fsp--;
+
+            adaptor.addChild(root_0, c.getTree());
+             retval.value = c.value; 
+            // Cql.g3:87:42: ( modifierList )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==18) ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // Cql.g3:87:43: modifierList
+                    {
+                    pushFollow(FOLLOW_modifierList_in_relation449);
+                    modifierList26=modifierList();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, modifierList26.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end relation
+
+    public static class comparitor_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start comparitor
+    // Cql.g3:88:1: comparitor returns [String value] : (s= comparitorSymbol | n= namedComparitor );
+    public final comparitor_return comparitor() throws RecognitionException {
+        comparitor_return retval = new comparitor_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        comparitorSymbol_return s = null;
+
+        namedComparitor_return n = null;
+
+
+
+        try {
+            // Cql.g3:89:5: (s= comparitorSymbol | n= namedComparitor )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( ((LA10_0>=16 && LA10_0<=17)||(LA10_0>=21 && LA10_0<=24)) ) {
+                alt10=1;
+            }
+            else if ( ((LA10_0>=WITHIN && LA10_0<=ANY)) ) {
+                alt10=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("88:1: comparitor returns [String value] : (s= comparitorSymbol | n= namedComparitor );", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // Cql.g3:89:7: s= comparitorSymbol
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_comparitorSymbol_in_comparitor469);
+                    s=comparitorSymbol();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, s.getTree());
+                     retval.value = s.value; 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:90:7: n= namedComparitor
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_namedComparitor_in_comparitor481);
+                    n=namedComparitor();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, n.getTree());
+                     retval.value = n.value; 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end comparitor
+
+    public static class comparitorSymbol_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start comparitorSymbol
+    // Cql.g3:91:1: comparitorSymbol returns [String value] : ( '=' | '>' | '<' | '>=' | '<=' | '<>' );
+    public final comparitorSymbol_return comparitorSymbol() throws RecognitionException {
+        comparitorSymbol_return retval = new comparitorSymbol_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token char_literal27=null;
+        Token char_literal28=null;
+        Token char_literal29=null;
+        Token string_literal30=null;
+        Token string_literal31=null;
+        Token string_literal32=null;
+
+        CommonTree char_literal27_tree=null;
+        CommonTree char_literal28_tree=null;
+        CommonTree char_literal29_tree=null;
+        CommonTree string_literal30_tree=null;
+        CommonTree string_literal31_tree=null;
+        CommonTree string_literal32_tree=null;
+
+        try {
+            // Cql.g3:92:7: ( '=' | '>' | '<' | '>=' | '<=' | '<>' )
+            int alt11=6;
+            switch ( input.LA(1) ) {
+            case 17:
+                {
+                alt11=1;
+                }
+                break;
+            case 16:
+                {
+                alt11=2;
+                }
+                break;
+            case 21:
+                {
+                alt11=3;
+                }
+                break;
+            case 22:
+                {
+                alt11=4;
+                }
+                break;
+            case 23:
+                {
+                alt11=5;
+                }
+                break;
+            case 24:
+                {
+                alt11=6;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("91:1: comparitorSymbol returns [String value] : ( '=' | '>' | '<' | '>=' | '<=' | '<>' );", 11, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt11) {
+                case 1 :
+                    // Cql.g3:92:9: '='
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal27=(Token)input.LT(1);
+                    match(input,17,FOLLOW_17_in_comparitorSymbol501); 
+                    char_literal27_tree = (CommonTree)adaptor.create(char_literal27);
+                    adaptor.addChild(root_0, char_literal27_tree);
+
+                     retval.value = "="; 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:93:9: '>'
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal28=(Token)input.LT(1);
+                    match(input,16,FOLLOW_16_in_comparitorSymbol513); 
+                    char_literal28_tree = (CommonTree)adaptor.create(char_literal28);
+                    adaptor.addChild(root_0, char_literal28_tree);
+
+                     retval.value = ">"; 
+
+                    }
+                    break;
+                case 3 :
+                    // Cql.g3:94:9: '<'
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal29=(Token)input.LT(1);
+                    match(input,21,FOLLOW_21_in_comparitorSymbol525); 
+                    char_literal29_tree = (CommonTree)adaptor.create(char_literal29);
+                    adaptor.addChild(root_0, char_literal29_tree);
+
+                     retval.value = "<"; 
+
+                    }
+                    break;
+                case 4 :
+                    // Cql.g3:95:9: '>='
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    string_literal30=(Token)input.LT(1);
+                    match(input,22,FOLLOW_22_in_comparitorSymbol537); 
+                    string_literal30_tree = (CommonTree)adaptor.create(string_literal30);
+                    adaptor.addChild(root_0, string_literal30_tree);
+
+                     retval.value = ">="; 
+
+                    }
+                    break;
+                case 5 :
+                    // Cql.g3:96:9: '<='
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    string_literal31=(Token)input.LT(1);
+                    match(input,23,FOLLOW_23_in_comparitorSymbol549); 
+                    string_literal31_tree = (CommonTree)adaptor.create(string_literal31);
+                    adaptor.addChild(root_0, string_literal31_tree);
+
+                     retval.value = "<="; 
+
+                    }
+                    break;
+                case 6 :
+                    // Cql.g3:97:9: '<>'
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    string_literal32=(Token)input.LT(1);
+                    match(input,24,FOLLOW_24_in_comparitorSymbol561); 
+                    string_literal32_tree = (CommonTree)adaptor.create(string_literal32);
+                    adaptor.addChild(root_0, string_literal32_tree);
+
+                     retval.value = "<>"; 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end comparitorSymbol
+
+    public static class namedComparitor_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start namedComparitor
+    // Cql.g3:99:1: namedComparitor returns [String value] : ( WITHIN | EXACT | ALL | ANY );
+    public final namedComparitor_return namedComparitor() throws RecognitionException {
+        namedComparitor_return retval = new namedComparitor_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token WITHIN33=null;
+        Token EXACT34=null;
+        Token ALL35=null;
+        Token ANY36=null;
+
+        CommonTree WITHIN33_tree=null;
+        CommonTree EXACT34_tree=null;
+        CommonTree ALL35_tree=null;
+        CommonTree ANY36_tree=null;
+
+        try {
+            // Cql.g3:100:5: ( WITHIN | EXACT | ALL | ANY )
+            int alt12=4;
+            switch ( input.LA(1) ) {
+            case WITHIN:
+                {
+                alt12=1;
+                }
+                break;
+            case EXACT:
+                {
+                alt12=2;
+                }
+                break;
+            case ALL:
+                {
+                alt12=3;
+                }
+                break;
+            case ANY:
+                {
+                alt12=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("99:1: namedComparitor returns [String value] : ( WITHIN | EXACT | ALL | ANY );", 12, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt12) {
+                case 1 :
+                    // Cql.g3:100:7: WITHIN
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    WITHIN33=(Token)input.LT(1);
+                    match(input,WITHIN,FOLLOW_WITHIN_in_namedComparitor582); 
+                    WITHIN33_tree = (CommonTree)adaptor.create(WITHIN33);
+                    adaptor.addChild(root_0, WITHIN33_tree);
+
+                     retval.value = "within"; 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:101:7: EXACT
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    EXACT34=(Token)input.LT(1);
+                    match(input,EXACT,FOLLOW_EXACT_in_namedComparitor593); 
+                    EXACT34_tree = (CommonTree)adaptor.create(EXACT34);
+                    adaptor.addChild(root_0, EXACT34_tree);
+
+                     retval.value = "exact"; 
+
+                    }
+                    break;
+                case 3 :
+                    // Cql.g3:102:7: ALL
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    ALL35=(Token)input.LT(1);
+                    match(input,ALL,FOLLOW_ALL_in_namedComparitor604); 
+                    ALL35_tree = (CommonTree)adaptor.create(ALL35);
+                    adaptor.addChild(root_0, ALL35_tree);
+
+                     retval.value = "all"; 
+
+                    }
+                    break;
+                case 4 :
+                    // Cql.g3:103:7: ANY
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    ANY36=(Token)input.LT(1);
+                    match(input,ANY,FOLLOW_ANY_in_namedComparitor614); 
+                    ANY36_tree = (CommonTree)adaptor.create(ANY36);
+                    adaptor.addChild(root_0, ANY36_tree);
+
+                     retval.value = "any"; 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end namedComparitor
+
+    public static class searchTerm_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start searchTerm
+    // Cql.g3:106:1: searchTerm returns [String value] : t= term ;
+    public final searchTerm_return searchTerm() throws RecognitionException {
+        searchTerm_return retval = new searchTerm_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        term_return t = null;
+
+
+
+        try {
+            // Cql.g3:106:36: (t= term )
+            // Cql.g3:106:38: t= term
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_term_in_searchTerm633);
+            t=term();
+            _fsp--;
+
+            adaptor.addChild(root_0, t.getTree());
+             retval.value = t.value; 
+
+            }
+
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end searchTerm
+
+    public static class term_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start term
+    // Cql.g3:108:1: term returns [String value] : (i= identifier | AND | OR | NOT | PROX );
+    public final term_return term() throws RecognitionException {
+        term_return retval = new term_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token AND37=null;
+        Token OR38=null;
+        Token NOT39=null;
+        Token PROX40=null;
+        identifier_return i = null;
+
+
+        CommonTree AND37_tree=null;
+        CommonTree OR38_tree=null;
+        CommonTree NOT39_tree=null;
+        CommonTree PROX40_tree=null;
+
+        try {
+            // Cql.g3:108:30: (i= identifier | AND | OR | NOT | PROX )
+            int alt13=5;
+            switch ( input.LA(1) ) {
+            case IDENTIFIER:
+            case STRING:
+                {
+                alt13=1;
+                }
+                break;
+            case AND:
+                {
+                alt13=2;
+                }
+                break;
+            case OR:
+                {
+                alt13=3;
+                }
+                break;
+            case NOT:
+                {
+                alt13=4;
+                }
+                break;
+            case PROX:
+                {
+                alt13=5;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("108:1: term returns [String value] : (i= identifier | AND | OR | NOT | PROX );", 13, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt13) {
+                case 1 :
+                    // Cql.g3:109:5: i= identifier
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_identifier_in_term655);
+                    i=identifier();
+                    _fsp--;
+
+                    adaptor.addChild(root_0, i.getTree());
+                     retval.value = i.value; 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:110:7: AND
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    AND37=(Token)input.LT(1);
+                    match(input,AND,FOLLOW_AND_in_term665); 
+                    AND37_tree = (CommonTree)adaptor.create(AND37);
+                    adaptor.addChild(root_0, AND37_tree);
+
+                     retval.value = "and"; 
+
+                    }
+                    break;
+                case 3 :
+                    // Cql.g3:111:7: OR
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    OR38=(Token)input.LT(1);
+                    match(input,OR,FOLLOW_OR_in_term675); 
+                    OR38_tree = (CommonTree)adaptor.create(OR38);
+                    adaptor.addChild(root_0, OR38_tree);
+
+                     retval.value = "or"; 
+
+                    }
+                    break;
+                case 4 :
+                    // Cql.g3:112:7: NOT
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    NOT39=(Token)input.LT(1);
+                    match(input,NOT,FOLLOW_NOT_in_term685); 
+                    NOT39_tree = (CommonTree)adaptor.create(NOT39);
+                    adaptor.addChild(root_0, NOT39_tree);
+
+                     retval.value = "not"; 
+
+                    }
+                    break;
+                case 5 :
+                    // Cql.g3:113:7: PROX
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    PROX40=(Token)input.LT(1);
+                    match(input,PROX,FOLLOW_PROX_in_term695); 
+                    PROX40_tree = (CommonTree)adaptor.create(PROX40);
+                    adaptor.addChild(root_0, PROX40_tree);
+
+                     retval.value = "prox"; 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end term
+
+    public static class identifier_return extends ParserRuleReturnScope {
+        public String value;
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start identifier
+    // Cql.g3:114:1: identifier returns [String value] : ( IDENTIFIER | STRING );
+    public final identifier_return identifier() throws RecognitionException {
+        identifier_return retval = new identifier_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token IDENTIFIER41=null;
+        Token STRING42=null;
+
+        CommonTree IDENTIFIER41_tree=null;
+        CommonTree STRING42_tree=null;
+
+        try {
+            // Cql.g3:114:35: ( IDENTIFIER | STRING )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==IDENTIFIER) ) {
+                alt14=1;
+            }
+            else if ( (LA14_0==STRING) ) {
+                alt14=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("114:1: identifier returns [String value] : ( IDENTIFIER | STRING );", 14, 0, input);
+
+                throw nvae;
+            }
+            switch (alt14) {
+                case 1 :
+                    // Cql.g3:115:5: IDENTIFIER
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    IDENTIFIER41=(Token)input.LT(1);
+                    match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_identifier713); 
+                    IDENTIFIER41_tree = (CommonTree)adaptor.create(IDENTIFIER41);
+                    adaptor.addChild(root_0, IDENTIFIER41_tree);
+
+                     retval.value = IDENTIFIER41.getText(); 
+
+                    }
+                    break;
+                case 2 :
+                    // Cql.g3:116:7: STRING
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    STRING42=(Token)input.LT(1);
+                    match(input,STRING,FOLLOW_STRING_in_identifier723); 
+                    STRING42_tree = (CommonTree)adaptor.create(STRING42);
+                    adaptor.addChild(root_0, STRING42_tree);
+
+                     retval.value = STRING42.getText(); 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end identifier
+
+
+ 
+
+    public static final BitSet FOLLOW_cqlquery_in_cql78 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_qscope_in_cqlquery104 = new BitSet(new long[]{0x00000000000930F0L});
+    public static final BitSet FOLLOW_cqlquery_in_cqlquery109 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_scopedClause_in_cqlquery121 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_16_in_qscope137 = new BitSet(new long[]{0x00000000000030F0L});
+    public static final BitSet FOLLOW_prefix_in_qscope139 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_17_in_qscope141 = new BitSet(new long[]{0x00000000000030F0L});
+    public static final BitSet FOLLOW_uri_in_qscope143 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_16_in_qscope147 = new BitSet(new long[]{0x00000000000030F0L});
+    public static final BitSet FOLLOW_uri_in_qscope149 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_term_in_prefix158 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_term_in_uri168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_searchClause_in_scopedClause188 = new BitSet(new long[]{0x00000000000000F2L});
+    public static final BitSet FOLLOW_booleanGroup_in_scopedClause197 = new BitSet(new long[]{0x00000000000830F0L});
+    public static final BitSet FOLLOW_searchClause_in_scopedClause202 = new BitSet(new long[]{0x00000000000000F2L});
+    public static final BitSet FOLLOW_bool_in_booleanGroup230 = new BitSet(new long[]{0x0000000000040002L});
+    public static final BitSet FOLLOW_modifierList_in_booleanGroup233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AND_in_bool250 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OR_in_bool257 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_bool264 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_PROX_in_bool271 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_modifier_in_modifierList287 = new BitSet(new long[]{0x0000000000040002L});
+    public static final BitSet FOLLOW_18_in_modifier298 = new BitSet(new long[]{0x00000000000030F0L});
+    public static final BitSet FOLLOW_modifierName_in_modifier300 = new BitSet(new long[]{0x0000000001E30000L});
+    public static final BitSet FOLLOW_comparitorSymbol_in_modifier302 = new BitSet(new long[]{0x00000000000030F0L});
+    public static final BitSet FOLLOW_modifierValue_in_modifier304 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_18_in_modifier314 = new BitSet(new long[]{0x00000000000030F0L});
+    public static final BitSet FOLLOW_modifierName_in_modifier316 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_term_in_modifierName324 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_term_in_modifierValue332 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_19_in_searchClause353 = new BitSet(new long[]{0x00000000000930F0L});
+    public static final BitSet FOLLOW_cqlquery_in_searchClause358 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_20_in_searchClause360 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_index_in_searchClause374 = new BitSet(new long[]{0x0000000001E30F00L});
+    public static final BitSet FOLLOW_relation_in_searchClause378 = new BitSet(new long[]{0x00000000000030F0L});
+    public static final BitSet FOLLOW_searchTerm_in_searchClause383 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_searchTerm_in_searchClause402 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_term_in_index420 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_comparitor_in_relation444 = new BitSet(new long[]{0x0000000000040002L});
+    public static final BitSet FOLLOW_modifierList_in_relation449 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_comparitorSymbol_in_comparitor469 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_namedComparitor_in_comparitor481 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_comparitorSymbol501 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_16_in_comparitorSymbol513 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_21_in_comparitorSymbol525 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_22_in_comparitorSymbol537 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_comparitorSymbol549 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_24_in_comparitorSymbol561 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WITHIN_in_namedComparitor582 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EXACT_in_namedComparitor593 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ALL_in_namedComparitor604 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ANY_in_namedComparitor614 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_term_in_searchTerm633 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_term655 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AND_in_term665 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OR_in_term675 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_term685 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_PROX_in_term695 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IDENTIFIER_in_identifier713 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_identifier723 = new BitSet(new long[]{0x0000000000000002L});
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/EndpointResolver.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/EndpointResolver.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/EndpointResolver.java	(revision 48242)
@@ -0,0 +1,18 @@
+package eu.dnetlib.utils.resolver;
+
+import eu.dnetlib.api.DriverService;
+import eu.dnetlib.domain.EPR;
+
+
+/**
+ * This class is used to resolve EPRs.
+ * 
+ * @author <a href="mailto:antleb@di.uoa.gr">Antonis Lempesis</a>
+ *
+ */
+public interface EndpointResolver {
+
+	public abstract <T extends DriverService> T getService(Class<T> clazz,
+			EPR epr);
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/ServiceIdentityFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/ServiceIdentityFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/ServiceIdentityFactory.java	(revision 48242)
@@ -0,0 +1,67 @@
+package eu.dnetlib.utils;
+
+import java.io.IOException;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.ServiceIdentity;
+
+public class ServiceIdentityFactory {
+	private static Logger logger = Logger.getLogger(ServiceIdentityFactory.class);
+
+	/**
+	 * Reads a properties file with the name <serviceName>.properties from the
+	 * classpath and returns a ServiceIdentity object that describes a service's
+	 * version.
+	 * @param serviceName the serviceName
+	 * @return the service version.
+	 */
+	public static ServiceIdentity createIdentity(String serviceName) {
+		try {
+			Properties properties = new Properties();
+
+			properties.load(ServiceIdentityFactory.class.getClassLoader()
+					.getResourceAsStream(serviceName + ".properties"));
+
+			String name = properties.getProperty("name");
+			String label = properties.getProperty("label");
+			String version[] = properties.getProperty("version").split("\\.");
+			String major = version.length > 0?version[0]:null;
+			String minor = version.length > 1?version[1]:null;
+			String micro = version.length > 2?version[2]:null;
+			
+			return new ServiceIdentity(name, major, minor, micro, label);
+		} catch (IOException e) {
+			logger.error("Error creating service identity", e);
+			
+			return null;
+		}
+	}
+	
+	/**
+	 * Parse a service version. Version syntax:
+	 * ${NAME}-${MAJOR}.${MINOR}.${MICRO}[-${LABEL}]
+	 * @param identity The string representation
+	 * @return the ServiceIdentity object
+	 */
+	public static ServiceIdentity parseIdentity(String identity) {
+		Pattern p = Pattern.compile("(.+)-(\\d)\\.(\\d)\\.(\\d)(-(.*))?");	
+		Matcher m = p.matcher(identity);
+		
+		if (m.find()) {
+			String name = m.group(1);
+			String major = m.group(2);
+			String minor = m.group(3);
+			String micro = m.group(4);
+			String label = m.group(6);
+			
+			return new ServiceIdentity(name, major, minor, micro, label);
+		} else {
+			return null;
+		}
+	}
+	
+}

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/ServiceIdentityFactory.java
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/EPRUtils.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/EPRUtils.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/EPRUtils.java	(revision 48242)
@@ -0,0 +1,220 @@
+package eu.dnetlib.utils;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+
+import eu.dnetlib.domain.EPR;
+import eu.dnetlib.soap.EndpointReferenceBuilder;
+
+public class EPRUtils {
+	private static final String REFERENCE_PARAMETER_NS = "http://www.driver.org";
+	
+	private static XPathExpression ADDRESS_EXPR = null;
+	private static XPathExpression REFERENCE_PARAMETER_EXPR = null;
+	
+	static {
+		XPathFactory factory = XPathFactory.newInstance();
+		XPath xpath = factory.newXPath();
+		xpath.setNamespaceContext(new RSClientNSContext());
+
+		try {
+			REFERENCE_PARAMETER_EXPR = xpath.compile("//wsa:ReferenceParameters");
+			ADDRESS_EXPR = xpath.compile("//wsa:Address");
+	
+		} catch (XPathExpressionException e) {
+			throw new RuntimeException("Failed to build xpath expression.", e);
+		}
+	}
+	
+	private static Logger logger = Logger.getLogger(EPRUtils.class);
+	
+	public static EPR createEPR(W3CEndpointReference w3cEpr) {
+		
+		try {
+			StringWriter writer = new StringWriter();
+			w3cEpr.writeTo(new StreamResult(writer));
+			EPR epr = new EPR();
+			Node node = null;
+			String address = null;
+			
+			synchronized (EPRUtils.class) {
+				node = (Node) REFERENCE_PARAMETER_EXPR.evaluate(new InputSource(new StringReader(writer.toString())), XPathConstants.NODE);
+				address = (String) ADDRESS_EXPR.evaluate(new InputSource(new StringReader(writer.toString())));	
+			}
+			
+			if (node != null && node.getChildNodes() != null) {
+				for (int i = 0; i < node.getChildNodes().getLength(); i++) {
+					Node child = node.getChildNodes().item(i);
+					
+					if (child.getNamespaceURI() != null && 
+							child.getNamespaceURI().equals(REFERENCE_PARAMETER_NS)) {
+						String name = child.getLocalName();
+						String value = child.getTextContent();
+						
+						if (logger.isDebugEnabled())
+							logger.debug("Found parameter " + name + ": " + value);
+						
+						epr.setParameter(name, value);
+					}
+				}
+			}
+			
+			epr.setAddress(address);
+			epr.setEpr(writer.toString());
+			
+			return epr;
+		} catch (XPathExpressionException e) {
+			logger.error("Error parsing epr", e);
+			e.printStackTrace();
+		}
+		
+		return null;
+	}
+	
+	public static W3CEndpointReference createW3CEPR(EPR epr) {
+		W3CEndpointReference w3cEpr = null;
+		
+		if (epr.getEpr() != null) {
+			StringReader reader = new StringReader(epr.getEpr());
+			
+			w3cEpr = new W3CEndpointReference(new StreamSource(reader));
+		} else {
+			StringWriter writer = new StringWriter();
+
+			w3cEpr = buildW3CEpr(epr);
+			w3cEpr.writeTo(new StreamResult(writer));
+			
+			epr.setEpr(writer.toString());
+		}
+		
+		return w3cEpr;
+	}
+	
+	public static W3CEndpointReference createW3CEPR(EndpointReferenceBuilder<Endpoint> builder, Endpoint endpoint) {
+		W3CEndpointReference w3cepr = builder.getEndpointReference(endpoint);
+		
+		return w3cepr;
+	}
+	
+	public static EPR createEPR(EndpointReferenceBuilder<Endpoint> builder,
+			Endpoint endpoint) {
+		EPR epr = null;
+		
+		if (logger.isDebugEnabled()) {
+			logger.debug("Creating epr for " + endpoint.getImplementor().getClass());
+		}
+		
+		epr = createEPR(createW3CEPR(builder, endpoint));
+		
+		if (logger.isDebugEnabled()) {
+			logger.debug("Created epr: " + epr);
+		}
+
+		return epr;
+	}
+	
+	public static String eprToXml(final EPR epr) {
+		/************************************************************************************************
+		 * WARNING: Avoid using cached XML string because it can not be parsed again safely. If the		*
+		 * W3C EPR generated by parsing the cached XML string is serialized again back to XML, the		*
+		 * builder keeps adding namespaces (basically the same namespace URI with just different		*
+		 * namespace prefix). As a consequence															*
+		 * 																							 	*
+		 * EPRUtils.eprToXml(epr).equals(EPRUtils.eprToXml(EPRUtils.xmlToEpr(EPRUtils.eprToXml(epr))))	*
+		 * 																								*
+		 * would always be false for any given EPR epr.													*
+		 * **********************************************************************************************/
+		epr.setEpr(null);
+		
+		final StringWriter xml = new StringWriter();
+		createW3CEPR(epr).writeTo(new StreamResult(xml));
+		return xml.toString();
+	}
+	
+	public static EPR xmlToEpr(final String xml) {
+		return createEPR((W3CEndpointReference) W3CEndpointReference.readFrom(new StreamSource(new StringReader(xml))));
+	}
+	
+	private static W3CEndpointReference buildW3CEpr(EPR epr) {
+		try {
+			W3CEndpointReferenceBuilder builder = new W3CEndpointReferenceBuilder();
+			Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			
+			builder.address(epr.getAddress());
+			builder.serviceName(new QName(REFERENCE_PARAMETER_NS, "serviceName"));
+			
+			for (String name:epr.getParameterNames()) {
+				Element element = doc.createElementNS(REFERENCE_PARAMETER_NS, name);
+				element.setTextContent(epr.getParameter(name));
+				
+				builder.referenceParameter(element);
+			}
+			
+			return builder.build();
+		} catch (ParserConfigurationException e) {
+			e.printStackTrace();
+		}
+
+		return null;
+	}
+}
+
+class RSClientNSContext implements NamespaceContext {
+	
+	HashMap<String, String> prefixes = null;
+
+	public String getNamespaceURI(String prefix) {
+		if (prefixes == null) {
+			prefixes = new HashMap<String, String>();
+			
+			prefixes.put("wsa", "http://www.w3.org/2005/08/addressing");
+			prefixes.put("driver", "http://www.driver.org");
+			prefixes.put("wsaw", "http://www.w3.org/2006/05/addressing/wsdl");
+			prefixes.put("wsdli", "http://www.w3.org/2005/08/wsdl-instance");
+		}
+
+		if (prefix == null) {
+			throw new NullPointerException("Null prefix");
+		} else {
+			prefix = prefixes.get(prefix);
+			
+			if (prefix == null) {
+				return XMLConstants.DEFAULT_NS_PREFIX;
+			} else {
+				return prefix;
+			}
+		}
+	}
+
+	public String getPrefix(String namespaceURI) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Iterator<String> getPrefixes(String namespaceURI) {
+		throw new UnsupportedOperationException();
+	}
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/COMMUNITIESType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/COMMUNITIESType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/COMMUNITIESType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for COMMUNITIESType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="COMMUNITIESType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="COMMUNITY_REGISTRATION" type="{}COMMUNITY_REGISTRATIONType" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "COMMUNITIESType", propOrder = {
+    "communityregistration"
+})
+public class COMMUNITIESType {
+
+    @XmlElement(name = "COMMUNITY_REGISTRATION")
+    protected List<COMMUNITYREGISTRATIONType> communityregistration;
+
+    /**
+     * Gets the value of the communityregistration property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the communityregistration property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getCOMMUNITYREGISTRATION().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link COMMUNITYREGISTRATIONType }
+     * 
+     * 
+     */
+    public List<COMMUNITYREGISTRATIONType> getCOMMUNITYREGISTRATION() {
+        if (communityregistration == null) {
+            communityregistration = new ArrayList<COMMUNITYREGISTRATIONType>();
+        }
+        return this.communityregistration;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RECOMMENDATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RECOMMENDATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RECOMMENDATIONType.java	(revision 48242)
@@ -0,0 +1,151 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RECOMMENDATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RECOMMENDATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="RECOMMENDATIONS" type="{}RECOMMENDATIONSType"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="SEND_EMAIL" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="PERIOD" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="LAST_NOTIFICATION" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RECOMMENDATIONType", propOrder = {
+    "recommendations"
+})
+public class RECOMMENDATIONType {
+
+    @XmlElement(name = "RECOMMENDATIONS", required = true)
+    protected RECOMMENDATIONSType recommendations;
+    @XmlAttribute(name = "SEND_EMAIL")
+    protected Boolean sendemail;
+    @XmlAttribute(name = "PERIOD")
+    protected Integer period;
+    @XmlAttribute(name = "LAST_NOTIFICATION")
+    protected String lastnotification;
+
+    /**
+     * Gets the value of the recommendations property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RECOMMENDATIONSType }
+     *     
+     */
+    public RECOMMENDATIONSType getRECOMMENDATIONS() {
+        return recommendations;
+    }
+
+    /**
+     * Sets the value of the recommendations property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RECOMMENDATIONSType }
+     *     
+     */
+    public void setRECOMMENDATIONS(RECOMMENDATIONSType value) {
+        this.recommendations = value;
+    }
+
+    /**
+     * Gets the value of the sendemail property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isSENDEMAIL() {
+        return sendemail;
+    }
+
+    /**
+     * Sets the value of the sendemail property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setSENDEMAIL(Boolean value) {
+        this.sendemail = value;
+    }
+
+    /**
+     * Gets the value of the period property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getPERIOD() {
+        return period;
+    }
+
+    /**
+     * Sets the value of the period property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setPERIOD(Integer value) {
+        this.period = value;
+    }
+
+    /**
+     * Gets the value of the lastnotification property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLASTNOTIFICATION() {
+        return lastnotification;
+    }
+
+    /**
+     * Sets the value of the lastnotification property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLASTNOTIFICATION(String value) {
+        this.lastnotification = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiCacheImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiCacheImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiCacheImpl.java	(revision 48242)
@@ -0,0 +1,584 @@
+package eu.dnetlib.repos;
+
+import eu.dnetlib.api.data.DatasourceManagerServiceException;
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+import eu.dnetlib.repos.ehcacher.CacheProvider;
+import net.sf.ehcache.Element;
+import org.apache.log4j.Logger;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.scheduling.annotation.Async;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.io.*;
+import java.sql.SQLException;
+import java.util.*;
+
+@DependsOn("datasourceManagerServiceLocator")
+public class RepoApiCacheImpl implements RepoApi {
+    private static Logger logger = Logger.getLogger(RepoApiCacheImpl.class);
+    private final String[] cacheKeys = {"opendoar", "re3data", "jour_aggr"};
+    protected RepoApi coreRepoApi;
+    private CacheProvider cacheProvider;
+
+    @PostConstruct
+    public void initCaches() {
+        Thread initializingCachesThread = new Thread() {
+            public void run() {
+                logger.info("initializing caches");
+                boolean initialized = false;
+                while (!initialized) {
+                    for (String cacheKey : cacheKeys) {
+                        try {
+                            if (!cacheProvider.getCache().isKeyInCache(cacheKey)) {
+                                File cacheBackup = new File("/tmp/cache-" + cacheKey + ".bak");
+                                if (cacheBackup.exists()) {
+                                    logger.info("initializing key: " + cacheKey + " from disk");
+                                    FileInputStream fis = new FileInputStream("/tmp/cache-" + cacheKey + ".bak");
+
+                                    ObjectInputStream ois = new ObjectInputStream(fis);
+                                    Map<String, Repository> repositories = (Map<String, Repository>) ois.readObject();
+                                    ois.close();
+                                    cacheProvider.getCache().put(new Element(cacheKey, (Map<String, Repository>) repositories));
+                                } else {
+                                    logger.info("initializing key: " + cacheKey + " from dms");
+                                    cacheProvider.getCache().get(cacheKey).getObjectValue();
+                                }
+                            }
+                        } catch (Exception e) {
+                            logger.error("Error while initializing cache for key: " + cacheKey, e);
+                            logger.info("initializing key: " + cacheKey + " from dms");
+                            cacheProvider.getCache().get(cacheKey).getObjectValue();
+                        }
+                    }
+                    logger.info("caches initialized successfully");
+                    initialized = true;
+                }
+            }
+        };
+        initializingCachesThread.setDaemon(true);
+        initializingCachesThread.start();
+    }
+
+    @PreDestroy
+    public void persistCaches() {
+        logger.info("persisting caches");
+        try {
+            for (String cacheKey : cacheKeys) {
+                FileOutputStream fos = new FileOutputStream("/tmp/cache-" + cacheKey + ".bak");
+                ObjectOutputStream oos = new ObjectOutputStream(fos);
+                if (cacheProvider.getCache().isKeyInCache(cacheKey)) {
+                    logger.info("persisting cache: " + cacheKey);
+                    oos.writeObject((Map<String, Repository>) cacheProvider.getCache().get(cacheKey).getObjectValue());
+                    oos.close();
+                }
+            }
+            logger.info("caches stored in disk");
+        } catch (Exception e) {
+            logger.error("Error while persisting caches", e);
+            for (String cacheKey : cacheKeys) {
+                File cacheBackup = new File("/tmp/cache-" + cacheKey + ".bak");
+                if (cacheBackup.exists())
+                    cacheBackup.delete();
+            }
+        }
+    }
+
+    @Override
+    public Repository getRepository(String id) throws Exception {
+        return this.getRepository(null, id);
+    }
+
+    @Override
+    public Repository getRepository(String officialName, String id) throws Exception {
+        logger.info("getting repository with name " + officialName + " and id: " + id + " from cache");
+        Repository retRepo = null;
+        try {
+            for (String cacheKey : cacheKeys) {
+                if (((Map<String, Repository>) cacheProvider.getCache().get(cacheKey).getObjectValue()).containsKey(id))
+                    return ((Map<String, Repository>) cacheProvider.getCache().get(cacheKey).getObjectValue()).get(id);
+            }
+            retRepo = coreRepoApi.getRepository(id);
+        } catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting repository with name " + officialName + " and id: " + id + " from cache", e);
+        }
+        return retRepo;
+    }
+
+    @Override
+    public void getRepositoryStats(Repository repo) throws Exception {
+        logger.info("getting repository stats for : " + repo.getOfficialName() + " from cache");
+        this.coreRepoApi.getRepositoryStats(repo);
+    }
+
+    @Override
+    public String getListLatestUpdate(String mode) throws Exception {
+        return this.coreRepoApi.getListLatestUpdate(mode);
+    }
+
+    @Override
+    public String getNextScheduledExecution(String mode) throws Exception {
+        return this.coreRepoApi.getRepository("openaire____::" + mode).getInterfaces().get(0).getExtraFields().get("last_collection_date");
+    }
+
+    @Override
+    public String storeRepository(Repository repo, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+        String retMessage = null;
+        logger.info("Storing " + datatype + " repository with id: " + repo.getId());
+        try {
+            retMessage = this.coreRepoApi.storeRepository(repo, datatype, interfacesToRegister);
+            forceUpdateCache(datatype, repo.getId());
+        } catch (Exception e) {
+            logger.error("Error storing repo " + repo.getOfficialName() + " in dms", e);
+            throw e;
+        }
+        return retMessage;
+    }
+
+    public List<Repository> getRepositories(String collectedFrom) throws Exception {
+        List<Repository> repoList = new ArrayList<Repository>();
+        try {
+            logger.info("getting repos from cache with collected from value: " + collectedFrom);
+
+            Map<String, Repository> repoMap = (Map<String, Repository>) cacheProvider.getCache().get(collectedFrom).getObjectValue();
+            repoList = new ArrayList<Repository>(repoMap.values());
+
+        } catch (Exception e) {
+            logger.error("Error getting repos from cache with collected from value: " + collectedFrom, e);
+            throw e;
+        }
+        return repoList;
+    }
+
+    public Map<String, Repository> getRepositoriesAsMap(String collectedFrom) throws Exception {
+        List<Repository> repoList = new ArrayList<Repository>();
+        Map<String, Repository> repoMap = new HashMap<String, Repository>();
+        try {
+            logger.info("getting repos from cache with collected from value: " + collectedFrom);
+            repoMap = (Map<String, Repository>) cacheProvider.getCache().get(collectedFrom).getObjectValue();
+
+        } catch (Exception e) {
+            logger.error("Error getting repos from cache with collected from value: " + collectedFrom, e);
+            throw e;
+        }
+        return repoMap;
+    }
+
+    @Override
+    public List<Map<String, String>> getRegisteredReposByOthers(String user_mail) {
+        List<Map<String, String>> res = new ArrayList<Map<String, String>>();
+
+        try {
+            logger.info("getting repos by others for user : " + user_mail);
+
+            res = this.getRepositoriesOfUserAsMap(user_mail, true);
+        } catch (Exception e) {
+            logger.error("Error getting repos by others for user : " + user_mail, e);
+
+        }
+        return res;
+    }
+
+    @Override
+    public List<Map<String, String>> getRepositoriesOfUser(String user_mail) throws Exception {
+        logger.info("getting repos for user : " + user_mail);
+        return this.getRepositoriesOfUserAsMap(user_mail);
+    }
+
+    public List<Map<String, String>> getRepositoriesOfUserAsMap(String user_mail) throws Exception {
+        logger.info("getting repos for user : " + user_mail);
+        return this.getRepositoriesOfUserAsMap(user_mail, false);
+    }
+
+    private List<Map<String, String>> getRepositoriesOfUserAsMap(String user_mail, Boolean isAdmin) throws Exception {
+
+        logger.info("getting repos as map for user: " + user_mail);
+        List<Map<String, String>> res = new ArrayList<Map<String, String>>();
+        try {
+            for (Repository repo : this.getRepositoriesOfUser(user_mail, isAdmin)) {
+                res.add(RepoTools.convertRepoToMap(repo));
+            }
+        } catch (Exception e) {
+            logger.error("getting repos as map for user: " + user_mail, e);
+        }
+        return res;
+    }
+
+    @SuppressWarnings("unchecked")
+    public TreeMap<String, List<Map<String, String>>> getRepositoriesByCountry(String collectedFrom) throws Exception {
+        List<Repository> repoList = new ArrayList<Repository>();
+        TreeMap<String, List<Map<String, String>>> res = new TreeMap<String, List<Map<String, String>>>();
+
+        try {
+            logger.info("getting repos by country from cache with key: " + collectedFrom);
+            Map<String, Repository> repoMap = (Map<String, Repository>) cacheProvider.getCache().get(collectedFrom).getObjectValue();
+            repoList = new ArrayList<Repository>(repoMap.values());
+            res = RepoTools.splitReposByCountry(repoList);
+
+        } catch (Exception e) {
+            logger.error("Error getting repositories from cache with key: " + collectedFrom, e);
+            throw e;
+        }
+        return res;
+    }
+
+    @Override
+    public Map<String, List<Repository>> getRepositoriesPerCountry(String collectedFrom) throws Exception {
+        List<Repository> repoList;
+        Map<String, List<Repository>> res = new TreeMap<String, List<Repository>>();
+
+        try {
+            logger.info("getting repos by country from cache with key: " + collectedFrom);
+            Map<String, Repository> repoMap = (Map<String, Repository>) cacheProvider.getCache().get(collectedFrom).getObjectValue();
+            repoList = new ArrayList<Repository>(repoMap.values());
+            res = RepoTools.splitReposPerCountry(repoList);
+
+        } catch (Exception e) {
+            logger.error("Error getting repositories from cache with key: " + collectedFrom, e);
+            throw e;
+        }
+        return res;
+    }
+
+    @Override
+    public List<Repository> getRepositoriesOfCountry(String collectedFrom, String country) throws Exception {
+        try {
+            logger.info("getting repos for country " + country + " from cache with key: " + collectedFrom);
+            return this.getRepositoriesPerCountry(collectedFrom).get(country);
+        } catch (Exception e) {
+            logger.error("Error getting repos for country " + country + " from cache with key: " + collectedFrom, e);
+            throw e;
+        }
+    }
+
+    @Override
+    public Map<String, String> getRepoCompatibility(String officialName, String datasourceId) throws Exception {
+        Map<String, String> compMap = null;
+
+        try {
+            logger.debug("getting repository " + officialName + " compatibility from cache");
+
+            compMap = this.getRepoCompatibility(officialName, datasourceId);
+        } catch (Exception e) {
+            logger.error("Error getting repo " + officialName + " compatibility from cache", e);
+            throw e;
+        }
+
+        return compMap;
+    }
+
+    @Override
+    public List<Repository> getReposByIds(List<String> datasourceIds) throws Exception {
+        List<Repository> retRepos = new ArrayList<Repository>();
+        try {
+            logger.info("getting repos by ids from cache");
+            for (String cacheKey : cacheKeys) {
+                Map<String, Repository> repoMap = (Map<String, Repository>) cacheProvider.getCache().get(cacheKey).getObjectValue();
+                List<Repository> repoList = new ArrayList<Repository>(repoMap.values());
+                for (Repository rep : repoList) {
+                    if (datasourceIds.contains(rep.getId())) {
+                        retRepos.add(rep);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("error getting repos by ids from cache", e);
+        }
+        return retRepos;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public List<Repository> getRepositoriesOfUser(String user_mail, Boolean repoAdmin) throws SQLException {
+        List<Repository> retRepos = new ArrayList<Repository>();
+        try {
+            if (!repoAdmin) {
+                logger.info("getting repositories registered by user: " + user_mail + " from cache");
+                for (String cacheKey : cacheKeys) {
+                    Map<String, Repository> repoMap = (Map<String, Repository>) cacheProvider.getCache().get(cacheKey).getObjectValue();
+                    List<Repository> repoList = new ArrayList<Repository>(repoMap.values());
+                    for (Repository rep : repoList) {
+                        if (rep.getRegisteredBy().equalsIgnoreCase(user_mail) || rep.getContactEmail().equalsIgnoreCase(user_mail)) {
+                            retRepos.add(rep);
+                        }
+                    }
+                }
+            } else {
+                logger.debug("getting journal /agreg  registered by others  from cache");
+                Map<String, Repository> repoMap = (Map<String, Repository>) cacheProvider.getCache().get("jour_aggr").getObjectValue();
+                List<Repository> repoList = new ArrayList<Repository>(repoMap.values());
+                for (Repository rep : repoList) {
+                    if (!rep.getRegisteredBy().equalsIgnoreCase(user_mail) && !rep.getContactEmail().equalsIgnoreCase(user_mail)) {
+                        retRepos.add(rep);
+                    }
+                }
+            }
+
+        } catch (Exception e) {
+            logger.error("error getting repositories registered by user: " + user_mail + " from cache", e);
+        }
+        return retRepos;
+    }
+
+    @Override
+    public boolean updateRepositoryInterfaceCompliance(String officialName,
+                                                       String datasourceId, String interfaceId, String desiredCompliance, String set, String baseUrl, String oldId)
+            throws Exception {
+        boolean ret;
+        try {
+            ret = this.coreRepoApi.updateRepositoryInterfaceCompliance(officialName, datasourceId, interfaceId, desiredCompliance, set, baseUrl, oldId);
+            forceUpdateCache(null, datasourceId);
+        } catch (Exception e) {
+            logger.error("error connecting to dms to set a repo interface as openaire compliant " + officialName, e);
+            throw e;
+        }
+        return ret;
+    }
+
+    @Override
+    public boolean insertPubFileInterface(String dsId, RepositoryInterface iFace)
+            throws Exception {
+        boolean ret = false;
+        try {
+            logger.info("storing pdf interface for repository: " + dsId);
+            ret = this.coreRepoApi.insertPubFileInterface(dsId, iFace);
+            forceUpdateCache(null, dsId);
+        } catch (Exception e) {
+            logger.error("error storing pdf interface for repository: " + dsId, e);
+            throw e;
+        }
+        return ret;
+    }
+
+    @Override
+    public boolean updatePubFileInterface(String dsId, RepositoryInterface iFace)
+            throws Exception {
+        boolean ret;
+        try {
+            logger.info("updating pdf interface for repository: " + dsId);
+            ret = this.coreRepoApi.updatePubFileInterface(dsId, iFace);
+            forceUpdateCache(null, dsId);
+        } catch (Exception e) {
+            logger.error("error updating pdf interface for repository: " + dsId, e);
+            throw e;
+        }
+        return ret;
+    }
+
+    @Override
+    public List<String> getUrlsOfRepos(String user_mail, Boolean repoAdmin) throws Exception {
+        List<String> urls = new ArrayList<String>();
+        try {
+            logger.info("getting url from repositories registered by user: " + user_mail + " from cache");
+            for (Repository repo : this.getRepositoriesOfUser(user_mail, repoAdmin)) {
+                for (RepositoryInterface iFace : repo.getInterfaces()) {
+                    if (iFace.getContentDescription().equalsIgnoreCase("metadata")) {
+                        if (iFace.getBaseUrl() != null && !iFace.getBaseUrl().isEmpty() && !urls.contains(iFace.getBaseUrl()) && iFace.getAccessProtocol().equalsIgnoreCase("oai"))
+                            urls.add(iFace.getBaseUrl());
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("error getting url from repositories registered by user: " + user_mail + " from cache", e);
+            throw e;
+        }
+        return urls;
+    }
+
+    @Override
+    public String editRepository(Repository repo, String officialNameOld,
+                                 String idOld, String datatype) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean repoIsCompliant(String officialName) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String updateRepositoryInformation(Repository repo) throws Exception {
+        String retMessage = "";
+        try {
+            logger.info("updating repository information");
+            this.coreRepoApi.updateRepositoryInformation(repo);
+            forceUpdateCache(repo.getDatasourceType(), repo.getId());
+        } catch (Exception e) {
+            logger.error("error updating repository information", e);
+            throw e;
+        }
+        return retMessage;
+    }
+
+    @Override
+    public String deleteRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces) throws Exception {
+        String retMessage = "";
+        try {
+            logger.info("deleting repository interfaces");
+            retMessage = this.coreRepoApi.deleteRepositoryInterfaces(dsId, interfaces);
+        } catch (Exception e) {
+            logger.error("error deleting repository interfaces", e);
+            throw e;
+        }
+        return retMessage;
+    }
+
+    @Override
+    public void deleteRepositoryInterfacesWithoutChecks(String dsId, List<RepositoryInterface> interfaces, String datatype) throws Exception {
+        try {
+            logger.info("deleting repository interfaces without checks");
+            this.coreRepoApi.deleteRepositoryInterfacesWithoutChecks(dsId, interfaces, datatype);
+            forceUpdateCache(datatype, dsId);
+        } catch (Exception e) {
+            logger.error("error deleting repository interfaces", e);
+            throw e;
+        }
+    }
+
+    @Override
+    public String updateRepositoryInterfaces(String dsId,
+                                             List<RepositoryInterface> interfaces,
+                                             List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+        String importResult = "";
+        try {
+            logger.info("updating repository interfaces for datasource: " + dsId);
+            importResult = coreRepoApi.updateRepositoryInterfaces(dsId, interfaces, interfacesOld, datatype, interfacesToRegister);
+            forceUpdateCache(datatype, dsId);
+            logger.debug("import result final: " + importResult);
+        } catch (Exception e) {
+            logger.error("error updating repository interfaces for datasource: " + dsId, e);
+            throw e;
+        }
+        return importResult;
+
+    }
+
+    @Override
+    public RepositoryInterface updateRepositoryInterfaceWithoutChecks(String dsId, RepositoryInterface iFace, String datatype) throws Exception {
+        RepositoryInterface retIface;
+        try {
+            logger.info("updating repository interface for datasource: " + dsId);
+            retIface = this.coreRepoApi.updateRepositoryInterfaceWithoutChecks(dsId, iFace, datatype);
+            forceUpdateCache(datatype, dsId);
+        } catch (Exception e) {
+            logger.error("error updating repository interface for datasource: " + dsId, e);
+            throw e;
+        }
+        return retIface;
+    }
+
+    @Override
+    public String insertRepositoryInterfaces(String dsId,
+                                             List<RepositoryInterface> interfaces, List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister)
+            throws Exception {
+        String importResult = "";
+        try {
+            logger.info("inserting repository interfaces for datasource: " + dsId);
+            importResult = this.coreRepoApi.insertRepositoryInterfaces(dsId, interfaces, interfacesOld, datatype, interfacesToRegister);
+            forceUpdateCache(datatype, dsId);
+        } catch (Exception e) {
+            logger.error("error inserting repository interfaces for datasource: " + dsId, e);
+            throw e;
+        }
+        return importResult;
+    }
+
+    @Override
+    public RepositoryInterface insertRepositoryInterfaceWithoutChecks(String dsId,
+                                                                      RepositoryInterface iFace, String datatype)
+            throws Exception {
+        RepositoryInterface retIface;
+        try {
+            retIface = this.coreRepoApi.updateRepositoryInterfaceWithoutChecks(dsId, iFace, datatype);
+            forceUpdateCache(datatype, dsId);
+        } catch (Exception e) {
+            logger.error("error inserting repository interface for datasource: " + dsId, e);
+            throw e;
+        }
+        return retIface;
+    }
+
+    @Override
+    public boolean unregisterRepository(Repository repo) throws Exception {
+        logger.info("unregistering repository " + repo.getOfficialName());
+        boolean ret;
+        try {
+            ret = this.unregisterRepository(repo);
+            this.forceUpdateCache(repo.getDatasourceType(), repo.getId());
+        } catch (Exception e) {
+            logger.error("Error unregistering repository " + repo.getOfficialName(), e);
+            return false;
+        }
+        return ret;
+
+    }
+
+    private void printInterface(RepositoryInterface iFace) {
+        logger.debug("baseUrl: " + iFace.getBaseUrl());
+        logger.debug("format: " + iFace.getAccessFormat());
+        logger.debug("typology: " + iFace.getTypology());
+        logger.debug("set: " + iFace.getAccessSet());
+        logger.debug("des_comp_level: " + iFace.getDesiredCompatibilityLevel());
+        logger.debug("cur_comp_level: " + iFace.getCompliance());
+        logger.debug("protocol: " + iFace.getAccessProtocol());
+        logger.debug("api_id: " + iFace.getId());
+        logger.debug("removable: " + iFace.isRemovable());
+        logger.debug("deleteApi: " + iFace.isDeleteApi());
+    }
+
+    private void forceUpdateCache(final String datatype, final String repoId) {
+        Thread updatingThread = new Thread() {
+            public void run() {
+                logger.info("Updating cache for key: " + datatype + " after adding/editing repository");
+                try {
+                    String key = "";
+                    if (datatype == null) {
+                        for (String cacheKey : cacheKeys) {
+                            if (((Map<String, Repository>) cacheProvider.getCache().get(cacheKey).getObjectValue()).containsKey(repoId)) {
+                                key = cacheKey;
+                                break;
+                            }
+                        }
+                    } else {
+                        key = datatype;
+                        if (datatype.equalsIgnoreCase("journal") || datatype.equalsIgnoreCase("aggregator")) {
+                            key = "jour_aggr";
+                        }
+                    }
+
+                    Map<String, Repository> oldMap = (Map<String, Repository>) cacheProvider.getCache().get(key).getObjectValue();
+                    oldMap.put(repoId, coreRepoApi.getRepository(repoId));
+                    cacheProvider.getCache().replace(new Element(key, (Map<String, Repository>) oldMap), new Element(key, (Map<String, Repository>) oldMap));
+                    logger.info("cache updated");
+                    //((SelfPopulatingCache) cacheProvider.getCache()).refresh(key);
+                } catch (Exception e) {
+                    logger.error("Error while updating cache. Retry in 250000min", e);
+                    try {
+                        Thread.sleep(250000);
+                    } catch (Exception e1) {
+                        logger.error("Error while updating cache", e1);
+                    }
+                }
+            }
+        };
+        updatingThread.setDaemon(true);
+        updatingThread.start();
+    }
+
+    public CacheProvider getCacheProvider() {
+        return cacheProvider;
+    }
+
+    public void setCacheProvider(CacheProvider cacheProvider) {
+        this.cacheProvider = cacheProvider;
+    }
+
+    public RepoApi getCoreRepoApi() {
+        return coreRepoApi;
+    }
+
+    public void setCoreRepoApi(RepoApi coreRepoApi) {
+        this.coreRepoApi = coreRepoApi;
+    }
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/COMMUNITYREGISTRATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/COMMUNITYREGISTRATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/COMMUNITYREGISTRATIONType.java	(revision 48242)
@@ -0,0 +1,119 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for COMMUNITY_REGISTRATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="COMMUNITY_REGISTRATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="communityId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="alertOnChange" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="insertInQueries" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "COMMUNITY_REGISTRATIONType")
+public class COMMUNITYREGISTRATIONType {
+
+    @XmlAttribute
+    protected String communityId;
+    @XmlAttribute
+    protected Boolean alertOnChange;
+    @XmlAttribute
+    protected Boolean insertInQueries;
+
+    /**
+     * Gets the value of the communityId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCommunityId() {
+        return communityId;
+    }
+
+    /**
+     * Sets the value of the communityId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCommunityId(String value) {
+        this.communityId = value;
+    }
+
+    /**
+     * Gets the value of the alertOnChange property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isAlertOnChange() {
+        return alertOnChange;
+    }
+
+    /**
+     * Sets the value of the alertOnChange property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setAlertOnChange(Boolean value) {
+        this.alertOnChange = value;
+    }
+
+    /**
+     * Gets the value of the insertInQueries property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isInsertInQueries() {
+        return insertInQueries;
+    }
+
+    /**
+     * Sets the value of the insertInQueries property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setInsertInQueries(Boolean value) {
+        this.insertInQueries = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="UserDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/MailLibrary.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/MailLibrary.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/MailLibrary.java	(revision 48242)
@@ -0,0 +1,159 @@
+package eu.dnetlib.utils;
+
+import java.util.Properties;
+
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+public class MailLibrary {
+	private String mailhost = null;
+	private String from = null;
+	private String replyTo = null;
+	private int smtpPort = 25;
+	private String username = null;
+	private String password = null;
+	private boolean authenticate = false;
+	private String mode = "plain";
+	boolean debug = false;
+
+	private Properties props = null;
+
+	public void init() {
+		props = new Properties();
+
+		if (mode.equals("plain")) {
+			props.put("mail.transport.protocol", "smtp");
+
+			props.put("mail.smtp.host", mailhost);
+			props.put("mail.smtp.port", smtpPort);
+		} else if (mode.equals("ssl")) {
+			props.put("mail.transport.protocol", "smtps");
+
+			props.put("mail.smtps.host", mailhost);
+			props.put("mail.smtps.port", smtpPort);
+			props.put("mail.smtps.auth", "true");
+			props.put("mail.smtps.user", username);
+			props.put("mail.smtps.password", password);
+		} else {
+			throw new IllegalArgumentException("Unkown mode '" + mode + "'");
+		}
+
+		props.setProperty("mail.debug", this.debug + "");
+	}
+
+	public void sendEmail(String email, String subject, String text) throws AddressException, MessagingException {
+		sendEmail(new String[] { email }, subject, text);
+	}
+
+	public void sendEmail(String[] recipients, String subject, String text) throws AddressException, MessagingException {
+		Session session = Session.getInstance(props,
+				(this.authenticate ? new SMTPAuthenticator() : null));
+
+		session.setDebug(debug);
+
+		MimeMessage msg = new MimeMessage(session);
+
+		msg.setFrom(new InternetAddress(this.from));
+		msg.setReplyTo(new InternetAddress[] { new InternetAddress(replyTo) });
+		msg.setSubject(subject, "UTF8");
+		msg.setContent(text, "text/plain; charset=UTF-8");
+
+		for (String recipient : recipients)
+			msg.addRecipient(javax.mail.Message.RecipientType.TO,
+					new InternetAddress(recipient));
+
+		Transport tr = session.getTransport();
+
+		if (authenticate) {
+			tr.connect(mailhost, smtpPort, username, password);
+		} else {
+			tr.connect();
+		}
+
+		tr.sendMessage(msg, msg.getAllRecipients());
+		tr.close();
+	}
+
+	private class SMTPAuthenticator extends javax.mail.Authenticator {
+		public PasswordAuthentication getPasswordAuthentication() {
+			return new PasswordAuthentication(username, password);
+		}
+	}
+
+	public String getMailhost() {
+		return mailhost;
+	}
+
+	public void setMailhost(String mailhost) {
+		this.mailhost = mailhost;
+	}
+
+	public String getFrom() {
+		return from;
+	}
+
+	public void setFrom(String from) {
+		this.from = from;
+	}
+
+	public String getReplyTo() {
+		return replyTo;
+	}
+
+	public void setReplyTo(String replyTo) {
+		this.replyTo = replyTo;
+	}
+
+	public int getSmtpPort() {
+		return smtpPort;
+	}
+
+	public void setSmtpPort(int smtpPort) {
+		this.smtpPort = smtpPort;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public boolean isAuthenticate() {
+		return authenticate;
+	}
+
+	public void setAuthenticate(boolean authenticate) {
+		this.authenticate = authenticate;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public boolean isDebug() {
+		return debug;
+	}
+
+	public void setDebug(boolean debug) {
+		this.debug = debug;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApi.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApi.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApi.java	(revision 48242)
@@ -0,0 +1,95 @@
+package eu.dnetlib.repos;
+
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+
+public interface RepoApi {
+
+    Repository getRepository(String id) throws Exception;
+
+    Repository getRepository(String officialName, String id)
+            throws Exception;
+
+    String storeRepository(Repository repo, String datatype, List<RepositoryInterface> interfacesToRegister)
+            throws Exception;
+
+    String editRepository(Repository repo, String officialNameOld,
+                          String idOld, String datatype) throws Exception;
+
+    TreeMap<String, List<Map<String, String>>> getRepositoriesByCountry(
+            String collectedFrom) throws Exception;
+
+    Map<String, List<Repository>> getRepositoriesPerCountry(
+            String collectedFrom) throws Exception;
+
+    List<Repository> getRepositoriesOfCountry(
+            String collectedFrom, String country) throws Exception;
+
+    boolean updateRepositoryInterfaceCompliance(String officialName,
+                                                String datasourceId, String interfaceId, String desiredCompliance,
+                                                String set, String baseUrl, String oldId) throws Exception;
+
+    List<Repository> getRepositoriesOfUser(String user_mail, Boolean repoAdmin) throws Exception;
+
+    boolean repoIsCompliant(String officialName) throws Exception;
+
+    Map<String, String> getRepoCompatibility(String officialName,
+                                             String datasourceId) throws Exception;
+
+    List<String> getUrlsOfRepos(String user_mail, Boolean repoAdmin) throws Exception;
+
+    //EXTENDED
+
+    boolean insertPubFileInterface(String dsId, RepositoryInterface iFace)
+            throws Exception;
+
+    boolean updatePubFileInterface(String dsId, RepositoryInterface iFace)
+            throws Exception;
+
+    Map<String, Repository> getRepositoriesAsMap(String collectedFrom) throws Exception;
+
+    List<Repository> getRepositories(String collectedFrom)
+            throws Exception;
+
+    String getNextScheduledExecution(String mode) throws Exception;
+
+    String getListLatestUpdate(String mode) throws Exception;
+
+    List<Repository> getReposByIds(List<String> datasourceIds) throws Exception;
+
+    void getRepositoryStats(Repository repo) throws Exception;
+
+    String updateRepositoryInformation(Repository repo) throws Exception;
+
+    String deleteRepositoryInterfaces(String dsId,
+                                      List<RepositoryInterface> interfaces) throws Exception;
+
+    void deleteRepositoryInterfacesWithoutChecks(String dsId, List<RepositoryInterface> interfaces, String datatype) throws Exception;
+
+    String updateRepositoryInterfaces(String dsId,
+                                      List<RepositoryInterface> interfaces,
+                                      List<RepositoryInterface> interfacesOld, String datatype,
+                                      List<RepositoryInterface> interfacesToRegister) throws Exception;
+
+    RepositoryInterface updateRepositoryInterfaceWithoutChecks(String dsId, RepositoryInterface iFace, String datatype) throws Exception;
+
+    String insertRepositoryInterfaces(String dsId,
+                                      List<RepositoryInterface> interfaces,
+                                      List<RepositoryInterface> interfacesOld, String datatype,
+                                      List<RepositoryInterface> interfacesToRegister) throws Exception;
+
+    RepositoryInterface insertRepositoryInterfaceWithoutChecks(String dsId,
+                                                               RepositoryInterface iFace, String datatype)
+            throws Exception;
+
+    boolean unregisterRepository(Repository repo) throws Exception;
+
+    List<Map<String, String>> getRegisteredReposByOthers(String string);
+
+    List<Map<String, String>> getRepositoriesOfUser(String user_mail)
+            throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheWrapper.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheWrapper.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheWrapper.java	(revision 48242)
@@ -0,0 +1,7 @@
+package eu.dnetlib.repos.ehcacher;
+
+public interface CacheWrapper<K, V> {
+	void put(K key, V value);
+
+	V get(K key);
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/STOREType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/STOREType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/userprofile/STOREType.java	(revision 48242)
@@ -0,0 +1,97 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.09.10 at 04:44:33 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.userprofile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for STOREType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="STOREType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="serviceURL" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="storeID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "STOREType", propOrder = {
+    "serviceURL",
+    "storeID"
+})
+public class STOREType {
+
+    @XmlElement(required = true)
+    protected String serviceURL;
+    @XmlElement(required = true)
+    protected String storeID;
+
+    /**
+     * Gets the value of the serviceURL property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getServiceURL() {
+        return serviceURL;
+    }
+
+    /**
+     * Sets the value of the serviceURL property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setServiceURL(String value) {
+        this.serviceURL = value;
+    }
+
+    /**
+     * Gets the value of the storeID property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getStoreID() {
+        return storeID;
+    }
+
+    /**
+     * Sets the value of the storeID property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStoreID(String value) {
+        this.storeID = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/DATEOFCREATIONType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/DATEOFCREATIONType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/DATEOFCREATIONType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DATE_OF_CREATIONType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="DATE_OF_CREATIONType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DATE_OF_CREATIONType")
+public class DATEOFCREATIONType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/queryResultsHashResource/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.10.19 at 09:05:29 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.queryResultsHashResource;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="QueryHashDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/COMMUNITIESType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/COMMUNITIESType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/COMMUNITIESType.java	(revision 48242)
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for COMMUNITIESType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="COMMUNITIESType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="COMMUNITY_ID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "COMMUNITIESType", propOrder = {
+    "communityid"
+})
+public class COMMUNITIESType {
+
+    @XmlElement(name = "COMMUNITY_ID")
+    protected List<String> communityid;
+
+    /**
+     * Gets the value of the communityid property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the communityid property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getCOMMUNITYID().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getCOMMUNITYID() {
+        if (communityid == null) {
+            communityid = new ArrayList<String>();
+        }
+        return this.communityid;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEPROFILE.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEPROFILE.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/RESOURCEPROFILE.java	(revision 48242)
@@ -0,0 +1,99 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="HEADER" type="{}HEADERType"/>
+ *         &lt;element name="BODY" type="{}BODYType"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "header",
+    "body"
+})
+@XmlRootElement(name = "RESOURCE_PROFILE")
+public class RESOURCEPROFILE {
+
+    @XmlElement(name = "HEADER", required = true)
+    protected HEADERType header;
+    @XmlElement(name = "BODY", required = true)
+    protected BODYType body;
+
+    /**
+     * Gets the value of the header property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link HEADERType }
+     *     
+     */
+    public HEADERType getHEADER() {
+        return header;
+    }
+
+    /**
+     * Sets the value of the header property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link HEADERType }
+     *     
+     */
+    public void setHEADER(HEADERType value) {
+        this.header = value;
+    }
+
+    /**
+     * Gets the value of the body property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BODYType }
+     *     
+     */
+    public BODYType getBODY() {
+        return body;
+    }
+
+    /**
+     * Sets the value of the body property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BODYType }
+     *     
+     */
+    public void setBODY(BODYType value) {
+        this.body = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/EhcacheWrapper.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/EhcacheWrapper.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/EhcacheWrapper.java	(revision 48242)
@@ -0,0 +1,41 @@
+package eu.dnetlib.repos.ehcacher;
+
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.Ehcache;
+import net.sf.ehcache.Element;
+
+import org.apache.log4j.Logger;
+
+public class EhcacheWrapper<K, V> implements CacheWrapper<K, V> {
+	private final String cacheName;
+	private final CacheManager cacheManager;
+	private Logger logger = Logger.getLogger(EhcacheWrapper.class);
+	
+	public EhcacheWrapper(String cacheName, CacheManager cacheManager) {
+		this.cacheName = cacheName;
+		this.cacheManager = cacheManager;
+		logger.debug("ehcacheWrapper created with name: " + cacheName + "and cachemanager: " + cacheManager);
+//		logger.debug("configuration: " + cacheManager.getActiveConfigurationText());
+	}
+
+	public void put(final K key, final V value) {
+		getCache().put(new Element(key, value));
+	}
+
+	@SuppressWarnings("unchecked")
+	public V get(final K key) {
+		Element element = getCache().get(key);
+		if (element != null) {
+			return (V) element.getObjectValue();
+		}
+		return null;
+	}
+
+	public Ehcache getCache() {
+		return cacheManager.getEhcache(cacheName);
+	}
+
+	public int size() {
+		return getCache().getSize();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/HEADERType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/HEADERType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/HEADERType.java	(revision 48242)
@@ -0,0 +1,177 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HEADERType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="HEADERType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;all>
+ *         &lt;element name="RESOURCE_IDENTIFIER" type="{}RESOURCE_IDENTIFIERType"/>
+ *         &lt;element name="RESOURCE_TYPE" type="{}RESOURCE_TYPEType"/>
+ *         &lt;element name="RESOURCE_KIND" type="{}RESOURCE_KINDType"/>
+ *         &lt;element name="RESOURCE_URI" type="{}RESOURCE_URIType"/>
+ *         &lt;element name="DATE_OF_CREATION" type="{}DATE_OF_CREATIONType"/>
+ *       &lt;/all>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HEADERType", propOrder = {
+
+})
+public class HEADERType {
+
+    @XmlElement(name = "RESOURCE_IDENTIFIER", required = true)
+    protected RESOURCEIDENTIFIERType resourceidentifier;
+    @XmlElement(name = "RESOURCE_TYPE", required = true)
+    protected RESOURCETYPEType resourcetype;
+    @XmlElement(name = "RESOURCE_KIND", required = true)
+    protected RESOURCEKINDType resourcekind;
+    @XmlElement(name = "RESOURCE_URI", required = true)
+    protected RESOURCEURIType resourceuri;
+    @XmlElement(name = "DATE_OF_CREATION", required = true)
+    protected DATEOFCREATIONType dateofcreation;
+
+    /**
+     * Gets the value of the resourceidentifier property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public RESOURCEIDENTIFIERType getRESOURCEIDENTIFIER() {
+        return resourceidentifier;
+    }
+
+    /**
+     * Sets the value of the resourceidentifier property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEIDENTIFIERType }
+     *     
+     */
+    public void setRESOURCEIDENTIFIER(RESOURCEIDENTIFIERType value) {
+        this.resourceidentifier = value;
+    }
+
+    /**
+     * Gets the value of the resourcetype property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public RESOURCETYPEType getRESOURCETYPE() {
+        return resourcetype;
+    }
+
+    /**
+     * Sets the value of the resourcetype property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCETYPEType }
+     *     
+     */
+    public void setRESOURCETYPE(RESOURCETYPEType value) {
+        this.resourcetype = value;
+    }
+
+    /**
+     * Gets the value of the resourcekind property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public RESOURCEKINDType getRESOURCEKIND() {
+        return resourcekind;
+    }
+
+    /**
+     * Sets the value of the resourcekind property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEKINDType }
+     *     
+     */
+    public void setRESOURCEKIND(RESOURCEKINDType value) {
+        this.resourcekind = value;
+    }
+
+    /**
+     * Gets the value of the resourceuri property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public RESOURCEURIType getRESOURCEURI() {
+        return resourceuri;
+    }
+
+    /**
+     * Sets the value of the resourceuri property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link RESOURCEURIType }
+     *     
+     */
+    public void setRESOURCEURI(RESOURCEURIType value) {
+        this.resourceuri = value;
+    }
+
+    /**
+     * Gets the value of the dateofcreation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public DATEOFCREATIONType getDATEOFCREATION() {
+        return dateofcreation;
+    }
+
+    /**
+     * Sets the value of the dateofcreation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DATEOFCREATIONType }
+     *     
+     */
+    public void setDATEOFCREATION(DATEOFCREATIONType value) {
+        this.dateofcreation = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiSimpleImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiSimpleImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiSimpleImpl.java	(revision 48242)
@@ -0,0 +1,180 @@
+package eu.dnetlib.repos;
+
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+
+public class RepoApiSimpleImpl implements RepoApi {
+    private static Logger logger = Logger.getLogger(RepoApiSimpleImpl.class);
+
+    @Override
+    public Repository getRepository(String id) throws Exception {
+        return this.getRepository(null, id);
+    }
+
+    @Override
+    public Repository getRepository(String officialName, String id)
+            throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String storeRepository(Repository repo, String datatype,
+                                  List<RepositoryInterface> interfacesToRegister) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String editRepository(Repository repo, String officialNameOld,
+                                 String idOld, String datatype) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public TreeMap<String, List<Map<String, String>>> getRepositoriesByCountry(
+            String collectedFrom) throws Exception {
+
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Map<String, List<Repository>> getRepositoriesPerCountry(String collectedFrom) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<Repository> getRepositoriesOfCountry(String collectedFrom, String country) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean updateRepositoryInterfaceCompliance(String officialName,
+                                                       String datasourceId, String interfaceId, String desiredCompliance,
+                                                       String set, String baseUrl, String oldId) throws Exception {
+
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<Repository> getRepositoriesOfUser(String user_mail, Boolean repoAdmin)
+            throws Exception {
+
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean repoIsCompliant(String officialName) throws Exception {
+
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Map<String, String> getRepoCompatibility(String officialName,
+                                                    String datasourceId) throws Exception {
+
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<String> getUrlsOfRepos(String user_mail, Boolean repoAdmin)
+            throws Exception {
+
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean insertPubFileInterface(String dsId, RepositoryInterface iFace) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean updatePubFileInterface(String dsId, RepositoryInterface iFace) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Map<String, Repository> getRepositoriesAsMap(String collectedFrom) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<Repository> getRepositories(String collectedFrom) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getNextScheduledExecution(String mode) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getListLatestUpdate(String mode) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<Repository> getReposByIds(List<String> datasourceIds) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void getRepositoryStats(Repository repo) throws Exception {
+
+    }
+
+    @Override
+    public String updateRepositoryInformation(Repository repo) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String deleteRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void deleteRepositoryInterfacesWithoutChecks(String dsId, List<RepositoryInterface> interfaces, String datatype) throws Exception {
+
+    }
+
+    @Override
+    public String updateRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces, List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public RepositoryInterface updateRepositoryInterfaceWithoutChecks(String dsId, RepositoryInterface iFace, String datatype) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String insertRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces, List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public RepositoryInterface insertRepositoryInterfaceWithoutChecks(String dsId, RepositoryInterface iFace, String datatype) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean unregisterRepository(Repository repo) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<Map<String, String>> getRegisteredReposByOthers(String string) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<Map<String, String>> getRepositoriesOfUser(String user_mail) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/UtilityFunctions.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/UtilityFunctions.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/UtilityFunctions.java	(revision 48242)
@@ -0,0 +1,39 @@
+package eu.dnetlib.util;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+public class UtilityFunctions {
+
+	public static boolean isEmpty(String str) {
+		return str == null || str.trim().length() == 0;
+	}
+
+	/**
+	 * Filters a string. Returns the string of "" if the string is null
+	 * 
+	 * @param str
+	 *            the string to be filter
+	 * @return the actual string or "" if str is null
+	 */
+	public static String filterNull(String str) {
+		return str == null ? "" : str;
+	}
+
+	public static boolean nonEmpty(String str) {
+		return !isEmpty(str);
+	}
+
+	public static boolean isValidURL(String str) {
+		if (isEmpty(str))
+			return false;
+
+		boolean valid = true;
+		try {
+			new URL(str.trim());
+		} catch (MalformedURLException e) {
+			valid = false;
+		}
+		return valid;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/recommendation/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,151 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.04.03 at 05:52:57 PM EEST 
+//
+
+
+package gr.uoa.di.driver.xml.recommendation;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.recommendation.xml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.recommendation.xml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link RECOMMENDATIONINFOType }
+     * 
+     */
+    public RECOMMENDATIONINFOType createRECOMMENDATIONINFOType() {
+        return new RECOMMENDATIONINFOType();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link RECOMMENDATIONINFOType.DATEOFEXPIRATION }
+     * 
+     */
+    public RECOMMENDATIONINFOType.DATEOFEXPIRATION createRECOMMENDATIONINFOTypeDATEOFEXPIRATION() {
+        return new RECOMMENDATIONINFOType.DATEOFEXPIRATION();
+    }
+
+    /**
+     * Create an instance of {@link COMMUNITIESType }
+     * 
+     */
+    public COMMUNITIESType createCOMMUNITIESType() {
+        return new COMMUNITIESType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+    /**
+     * Create an instance of {@link SECURITYPARAMETERSType }
+     * 
+     */
+    public SECURITYPARAMETERSType createSECURITYPARAMETERSType() {
+        return new SECURITYPARAMETERSType();
+    }
+
+    /**
+     * Create an instance of {@link DATEOFCREATIONType }
+     * 
+     */
+    public DATEOFCREATIONType createDATEOFCREATIONType() {
+        return new DATEOFCREATIONType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link USERSType }
+     * 
+     */
+    public USERSType createUSERSType() {
+        return new USERSType();
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEKINDType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEKINDType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/RESOURCEKINDType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_KINDType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_KINDType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="MDFormatDSResources"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_KINDType")
+public class RESOURCEKINDType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/util/springContext-locators.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/util/springContext-locators.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/util/springContext-locators.xml	(revision 48242)
@@ -0,0 +1,195 @@
+<?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:context="http://www.springframework.org/schema/context"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+
+	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
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
+	default-autowire="no">
+
+	<context:annotation-config />
+	
+	<!--<bean id="cnr.lookUpLocator" class="eu.dnetlib.enabling.tools.StaticServiceLocator">-->
+		<!--<property name="service" ref="cnr.lookUpService" />-->
+	<!--</bean>-->
+
+	<!--<alias name="cnr.lookUpLocator" alias="lookupLocator" />-->
+
+	<!--<bean id="cnr.snLocator" class="eu.dnetlib.enabling.tools.StaticServiceLocator">-->
+	<!--<property name="service" ref="cnr.snService" />-->
+	<!--</bean>-->
+
+	<!--<alias name="cnr.snLocator" alias="snLocator" />-->
+
+	<!--<bean id="cnr.registryLocator" class="eu.dnetlib.enabling.tools.StaticServiceLocator">-->
+	<!--<property name="service" ref="cnr.registryService" />-->
+	<!--</bean>-->
+	<!---->
+	<!--<alias name="cnr.registryLocator" alias="registryLocator" />-->
+
+
+	<jaxws:client id="cnr.lookUpService"
+		serviceClass="eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService"
+		address="${ISLookUpService.url}" />
+
+	<jaxws:client id="cnr.registryService"
+		serviceClass="eu.dnetlib.enabling.is.registry.rmi.ISRegistryService"
+		address="${ISRegistryService.url}" />
+
+	<jaxws:client id="cnr.snService"
+		serviceClass="eu.dnetlib.enabling.is.sn.rmi.ISSNService"
+		address="${ISSNService.url}" />
+
+	<!--&lt;!&ndash; The service locators &ndash;&gt;-->
+	<bean id="lookupServiceLocator"
+		class="eu.dnetlib.clients.utils.ws.JaxwsServiceLocator">
+		<property name="url" value="${ISLookUpService.url}" />
+		<property name="eprBuilder" ref="cxfEndpointReferenceBuilder" />
+		<property name="resolver" ref="endpointResolver" />
+		<property name="serviceClass" value="eu.dnetlib.api.enabling.ISLookUpService" />
+	</bean>
+
+
+	<bean id="registryServiceLocator" 
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.enabling.ISRegistryService" />
+		<constructor-arg value="${ISRegistryService.url}" />
+	</bean>
+	<bean id="resultSetServiceLocator" 
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.enabling.ResultSetService" />
+		<constructor-arg value="${ResultSetService.url}" />
+	</bean>
+	<bean id="subscriptionServiceLocator" 
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.enabling.ISSNService" />
+		<constructor-arg value="${ISSNService.url}" />
+	</bean>
+	<bean id="datasourceManagerServiceLocator" 
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.data.DatasourceManagerService" />
+		<constructor-arg value="${DatasourceManagerService.url}" />
+	</bean>
+	<bean id="mdStoreServiceLocator"
+		  factory-bean="serviceLocatorFactory"
+		  factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.data.MDStoreService" />
+		<constructor-arg value="${MDStoreService.url}" />
+	</bean>
+	<bean id="dbServiceLocator" 
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.enabling.DatabaseService" />
+		<constructor-arg value="${DBService.url}" />
+	</bean>
+	<bean id="actionManagerLocator"
+                factory-bean="serviceLocatorFactory"
+                factory-method="newServiceLocator">
+                <constructor-arg value="eu.dnetlib.api.enabling.ActionManagerService" />
+                <constructor-arg value="${ActionManagerService.url}" />
+        </bean>
+	<bean id="a2ServiceLocator" 
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.enabling.A2Service" />
+		<constructor-arg value="${A2Service.url}" />
+	</bean>
+	<bean id="userProfileServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.UserProfileService" />
+		<constructor-arg value="${UserProfileService.url}" />
+	</bean>
+	<bean id="indexServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.data.IndexService" />
+		<constructor-arg value="${IndexService.url}" />
+	</bean>
+	<bean id="searchServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.data.SearchService" />
+		<constructor-arg value="${SearchService.url}" />
+	</bean>
+	<bean id="communityServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.CommunityService" />
+		<constructor-arg value="${CommunityService.url}" />
+	</bean>
+	<bean id="collectionServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.CollectionService" />
+		<constructor-arg value="${CollectionService.url}" />
+	</bean>	
+	<bean id="conversionServiceLocator" 
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.ConversionService" />
+		<constructor-arg value="${services.conversionService.ws.url}" />
+	</bean>
+	<bean id="publisherServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.data.PublisherService" />
+		<constructor-arg value="${PublisherService.url}" />
+	</bean>
+	<bean id="recommendationServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.RecommendationService" />
+		<constructor-arg value="${RecommendationService.url}" />
+	</bean>
+	<bean id="validatorServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.ValidatorService" />
+		<constructor-arg value="${ValidatorService.url}" />
+	</bean>
+	<bean id="forumServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.ForumService" />
+		<constructor-arg value="${ForumService.url}" />
+	</bean>
+	<bean id="ratingServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.RatingService" />
+		<constructor-arg value="${RatingService.url}" />
+	</bean>
+	<bean id="webIntarfaceServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.WebInterfaceService" />
+		<constructor-arg value="${WebInterfaceService.url}" />
+	</bean>
+	<bean id="similarityServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.data.SimilarityService" />
+		<constructor-arg value="${services.similarityService.ws.url}" />
+	</bean>	
+	<bean id="alertServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.AlertService" />
+		<constructor-arg value="${services.alertService.ws.url}" />
+	</bean>	
+		<bean id="notificationServiceLocator"
+		factory-bean="serviceLocatorFactory"
+		factory-method="newServiceLocator">
+		<constructor-arg value="eu.dnetlib.api.functionality.NotificationService" />
+		<constructor-arg value="${services.notificationService.ws.url}" />
+	</bean>	
+</beans>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/TERMType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/TERMType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/TERMType.java	(revision 48242)
@@ -0,0 +1,146 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TERMType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="TERMType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="Prefix" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="NameSpace" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="Schema" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TERMType")
+public class TERMType {
+
+    @XmlAttribute(required = true)
+    protected String name;
+    @XmlAttribute(name = "Prefix", required = true)
+    protected String prefix;
+    @XmlAttribute(name = "NameSpace", required = true)
+    protected String nameSpace;
+    @XmlAttribute(name = "Schema", required = true)
+    protected String schema;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the prefix property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * Sets the value of the prefix property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPrefix(String value) {
+        this.prefix = value;
+    }
+
+    /**
+     * Gets the value of the nameSpace property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNameSpace() {
+        return nameSpace;
+    }
+
+    /**
+     * Sets the value of the nameSpace property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNameSpace(String value) {
+        this.nameSpace = value;
+    }
+
+    /**
+     * Gets the value of the schema property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSchema() {
+        return schema;
+    }
+
+    /**
+     * Sets the value of the schema property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSchema(String value) {
+        this.schema = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/ObjectFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/ObjectFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/mdformat/ObjectFactory.java	(revision 48242)
@@ -0,0 +1,183 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2009.03.06 at 06:58:33 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.mdformat;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the gr.uoa.di.driver.MDFormatDSResourceType.xml package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: gr.uoa.di.driver.MDFormatDSResourceType.xml
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION }
+     * 
+     */
+    public STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION createSTATUSTypeLAYOUTSLAYOUTTRANSFORMATION() {
+        return new STATUSType.LAYOUTS.LAYOUT.TRANSFORMATION();
+    }
+
+    /**
+     * Create an instance of {@link DATEType }
+     * 
+     */
+    public DATEType createDATEType() {
+        return new DATEType();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType }
+     * 
+     */
+    public STATUSType createSTATUSType() {
+        return new STATUSType();
+    }
+
+    /**
+     * Create an instance of {@link TERMType }
+     * 
+     */
+    public TERMType createTERMType() {
+        return new TERMType();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType.LAYOUTS }
+     * 
+     */
+    public STATUSType.LAYOUTS createSTATUSTypeLAYOUTS() {
+        return new STATUSType.LAYOUTS();
+    }
+
+    /**
+     * Create an instance of {@link BODYType }
+     * 
+     */
+    public BODYType createBODYType() {
+        return new BODYType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEURIType }
+     * 
+     */
+    public RESOURCEURIType createRESOURCEURIType() {
+        return new RESOURCEURIType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEPROFILE }
+     * 
+     */
+    public RESOURCEPROFILE createRESOURCEPROFILE() {
+        return new RESOURCEPROFILE();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType.SCHEMA }
+     * 
+     */
+    public CONFIGURATIONType.SCHEMA createCONFIGURATIONTypeSCHEMA() {
+        return new CONFIGURATIONType.SCHEMA();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCETYPEType }
+     * 
+     */
+    public RESOURCETYPEType createRESOURCETYPEType() {
+        return new RESOURCETYPEType();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType.LAYOUTS.LAYOUT.RULES }
+     * 
+     */
+    public STATUSType.LAYOUTS.LAYOUT.RULES createSTATUSTypeLAYOUTSLAYOUTRULES() {
+        return new STATUSType.LAYOUTS.LAYOUT.RULES();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType.LAYOUTS.LAYOUT.FIELDS }
+     * 
+     */
+    public STATUSType.LAYOUTS.LAYOUT.FIELDS createSTATUSTypeLAYOUTSLAYOUTFIELDS() {
+        return new STATUSType.LAYOUTS.LAYOUT.FIELDS();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType.LAYOUTS.LAYOUT }
+     * 
+     */
+    public STATUSType.LAYOUTS.LAYOUT createSTATUSTypeLAYOUTSLAYOUT() {
+        return new STATUSType.LAYOUTS.LAYOUT();
+    }
+
+    /**
+     * Create an instance of {@link STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD }
+     * 
+     */
+    public STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD createSTATUSTypeLAYOUTSLAYOUTFIELDSFIELD() {
+        return new STATUSType.LAYOUTS.LAYOUT.FIELDS.FIELD();
+    }
+
+    /**
+     * Create an instance of {@link HEADERType }
+     * 
+     */
+    public HEADERType createHEADERType() {
+        return new HEADERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEIDENTIFIERType }
+     * 
+     */
+    public RESOURCEIDENTIFIERType createRESOURCEIDENTIFIERType() {
+        return new RESOURCEIDENTIFIERType();
+    }
+
+    /**
+     * Create an instance of {@link RESOURCEKINDType }
+     * 
+     */
+    public RESOURCEKINDType createRESOURCEKINDType() {
+        return new RESOURCEKINDType();
+    }
+
+    /**
+     * Create an instance of {@link CONFIGURATIONType }
+     * 
+     */
+    public CONFIGURATIONType createCONFIGURATIONType() {
+        return new CONFIGURATIONType();
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-registrator.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-registrator.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-registrator.xml	(revision 48242)
@@ -0,0 +1,77 @@
+<?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:t="http://dnetlib.eu/springbeans/t" xmlns:template="http://dnetlib.eu/springbeans/template"
+
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+		default-autowire="no">
+
+
+	<!-- service registrator -->
+	<bean id="serviceRegistrator"
+		class="eu.dnetlib.enabling.tools.registration.ServiceRegistrator"
+		  p:serviceLocator-ref="cnr.uniqueServiceLocator"
+		p:serviceNameResolver-ref="serviceNameResolver"
+		p:eprBuilder-ref="jaxwsEndpointReferenceBuilder" p:hnmLocator-ref="${services.registration.default.hnmlocator}" />
+
+	<bean id="dynamicHNMLocator" class="eu.dnetlib.enabling.tools.DynamicHNMLocator"
+		  p:serviceLocator-ref="cnr.uniqueServiceLocator" />
+
+	<bean id="nullHNMLocator" class="eu.dnetlib.enabling.tools.NullHNMLocator" />
+
+	<template:define name="nkua.serviceRegistrationManager"
+		t:serviceRegistrationManagerClass="gr.uoa.di.driver.app.InitialiazingServiceRegistrationManager"
+		t:serviceRegistrator="serviceRegistrator"
+		t:eprBuilder="jaxwsEndpointReferenceBuilder"
+		t:jobScheduler="jobScheduler">
+
+		<bean t:id="$name$TriggerDetails"
+			class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
+			p:targetObject-ref="$name$" p:targetMethod="tick" />
+
+		<bean t:id="$name$" class="dummy" t:class="$serviceRegistrationManagerClass$"
+			destroy-method="destroy"
+			p:service-ref="$service$"
+			p:endpoint-ref="$endpoint$"
+			p:serviceLocator-ref="cnr.uniqueServiceLocator"
+			p:registrator-ref="$serviceRegistrator$" 
+			p:eprBuilder-ref="$eprBuilder$"
+			p:removeRegistration="\${services.registration.default.removeRegistration}" />
+
+		<bean t:id="$name$Trigger"
+			class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
+			p:startDelay="\${services.registration.delay}" p:repeatInterval="4000"
+			p:jobDetail-ref="$name$TriggerDetails" />
+
+		<bean t:id="$name$Triggers"
+			class="eu.dnetlib.springutils.beans.factory.SingleListFactoryBean"
+			p:value-ref="$name$Trigger" />
+
+		<bean t:id="$name$jobSchedulerAccessor"
+			class="org.springframework.scheduling.quartz.SchedulerAccessorBean"
+			p:scheduler-ref="$jobScheduler$" p:triggers-ref="$name$Triggers">
+		</bean>
+
+	</template:define>
+
+	<bean id="jobScheduler"
+		class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
+		destroy-method="destroy">
+			<property name="jobFactory">
+				<bean id="jobSchedulerFactory"
+					class="org.springframework.scheduling.quartz.SpringBeanJobFactory" />
+			</property>
+	</bean>
+
+	<bean id="serviceNameResolver" class="gr.uoa.di.driver.util.ServiceNameResolverImpl">
+		<property name="override">
+			<map>
+				<entry key="eu.dnetlib.api.enabling.ISRegistryService" value="IS_RegistryService" />
+				<entry key="eu.dnetlib.api.enabling.ISLookUpService" value="IS_LookUpService" />
+				<entry key="eu.dnetlib.api.enabling.ISSNService" value="IS_SNService" />
+			</map>
+		</property>
+	</bean>
+
+</beans>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-commons.properties
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-commons.properties	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-commons.properties	(revision 48242)
@@ -0,0 +1,10 @@
+subscription.manager.threads = 2
+subscription.manager.timeToLive = 3600
+notification.manager.threads = 2
+
+is.registry.creatorId = ${transport.soap.baseAddress}
+
+openaire.db.driverClassName = org.postgresql.Driver
+openaire.db.url = jdbc:postgresql://node1.d.openaire.research-infrastructures.eu:5432/dnet_openaire
+openaire.db.username = dnet
+openaire.db.password = dnetPwd
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/ehcacher/springContext-repos-ehcacher.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/ehcacher/springContext-repos-ehcacher.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/ehcacher/springContext-repos-ehcacher.xml	(revision 48242)
@@ -0,0 +1,37 @@
+<?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:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core" xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template" xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+
+	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
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	
+	<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
+    	<property name="configLocation"  value="/eu/dnetlib/repos/ehcacher/repos-ehcache.xml"/>
+	</bean>
+<!-- 	<bean id="cacheEntryFactory" class="eu.dnetlib.repos.ehcacher.CacheEntryFactoryImpl"> -->
+<!--     	<property name="repoAPI" ref="repoAPI" /> -->
+<!-- 	</bean> -->
+	
+<!-- 	<bean id="cacheProvider" class="eu.dnetlib.repos.ehcacher.CacheProvider" scope="singleton" init-method="start"> -->
+<!--     	<property name="cacheManager" ref="cacheManager" /> -->
+<!--     	<property name="updatingFactory" ref="cacheEntryFactory" /> -->
+<!-- 	</bean> -->
+	
+<!-- 	<bean id="cacheWrapper" class="eu.dnetlib.validator.web.echacher.EhcacheWrapper"> -->
+<!-- 		<constructor-arg index="0" value="doar" /> -->
+<!-- 		<constructor-arg index="1" ref="cacheManager" /> -->
+<!-- 	</bean> -->
+
+</beans>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/Attribute.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/Attribute.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/Attribute.java	(revision 48242)
@@ -0,0 +1,158 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for attribute complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="attribute">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="key" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="type" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="attributes" type="{}attribute" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "attribute", propOrder = {
+    "key",
+    "type",
+    "value",
+    "attributes"
+})
+public class Attribute {
+
+    protected String key;
+    protected String type;
+    protected String value;
+    @XmlElement(nillable = true)
+    protected List<Attribute> attributes;
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setKey(String value) {
+        this.key = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the attributes property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the attributes property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAttributes().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Attribute }
+     * 
+     * 
+     */
+    public List<Attribute> getAttributes() {
+        if (attributes == null) {
+            attributes = new ArrayList<Attribute>();
+        }
+        return this.attributes;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEURIType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEURIType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCEURIType.java	(revision 48242)
@@ -0,0 +1,65 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_URIType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_URIType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_URIType")
+public class RESOURCEURIType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiDirectImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiDirectImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiDirectImpl.java	(revision 48242)
@@ -0,0 +1,1376 @@
+package eu.dnetlib.repos;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.sql.DataSource;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+//import java.io.UnsupportedEncodingException;
+
+
+public class RepoApiDirectImpl implements RepoApi {
+	private static Logger logger = Logger.getLogger(RepoApiDirectImpl.class);
+	private DataSource openAireDataSource = null;
+
+	@Override
+	public Repository getRepository(String id) throws Exception {
+		return this.getRepository(null,id);
+	}
+
+	public Repository getRepository(String officialName, String id) throws SQLException {
+		Connection conn = null;
+		Repository repo = null;
+		
+		try {
+			logger.info("getting repository " + officialName + " from openaire db");
+
+			conn = openAireDataSource.getConnection();
+			PreparedStatement stm = null, stm1 = null;
+			stm = conn.prepareStatement("SELECT * FROM datasources d WHERE d.id = ?");
+			stm.setString(1, id);				
+
+			ResultSet rs = stm.executeQuery();
+
+			if (rs.next()) {
+				repo = new Repository();
+				repo.setId(rs.getString("Id"));
+				repo.setOfficialName(rs.getString("officialname"));
+				repo.setEnglishName(rs.getString("englishname"));
+				repo.setWebsiteUrl(rs.getString("websiteurl"));
+				repo.setLogoUrl(rs.getString("logourl"));
+				repo.setContactEmail(rs.getString("contactemail"));
+				repo.setLatitude(rs.getDouble("latitude"));
+				repo.setLongitude(rs.getDouble("longitude"));
+				repo.setTimezone(rs.getDouble("timezone"));
+				repo.setNamespacePrefix(rs.getString("namespaceprefix"));
+				repo.setDescription(rs.getString("description"));
+				repo.setCollectedFrom(rs.getString("collectedfrom"));
+//				repo.setOptional1(rs.getString("optional1"));
+//				repo.setOptional2(rs.getString("optional2"));
+				repo.setActivationId("activationid");
+				repo.setTypology(rs.getString("typology"));
+				repo.setDatasourceClass(rs.getString("datasourceClass"));
+				repo.setProvenanceActionClass(rs.getString("provenanceactionclass"));
+				repo.setDateOfCollection(rs.getDate("dateofcollection"));
+				repo.setIssn(rs.getString("issn"));
+				repo.setEissn(rs.getString("eissn"));
+				repo.setLissn(rs.getString("lissn"));
+				
+				rs.close();
+				stm.close();
+				
+				stm = conn.prepareStatement("SELECT * FROM api a WHERE a.datasource = ? ORDER BY id");
+				stm.setString(1, repo.getId());
+
+				rs = stm.executeQuery();
+
+				logger.debug("searching api");
+				while (rs.next()) {
+					RepositoryInterface iFace = new RepositoryInterface();
+					if (rs.getBoolean("useedited")) {
+						iFace.setBaseUrl(rs.getString("edited"));
+						iFace.setAccessProtocol(rs.getString("editedprotocolclass"));
+					}
+					else {
+						iFace.setBaseUrl(rs.getString("original"));
+						iFace.setAccessProtocol(rs.getString("originalprotocolclass"));
+					}
+//					repo.setApiTypology(rs.getString("typology"));
+					iFace.setId(rs.getString("id"));
+					String apiId = rs.getString("id");
+					logger.debug("apiId: "+ apiId);
+					
+					stm1 = conn.prepareStatement("SELECT * FROM apicollections ac WHERE ac.api = ?");
+					stm1.setString(1, apiId);
+
+					ResultSet rs1 = stm1.executeQuery();
+					String setEdited = null;
+					iFace.setAccessSet("none");
+					logger.debug("searching apicollections");
+					while (rs1.next()) {				
+					
+						if (rs1.getString("accessparam").equals("SET")) {
+							iFace.setAccessSet(rs1.getString("accessvalue"));
+						} else if (rs1.getString("accessparam").equals("SET_EDITED")) {
+							setEdited = rs1.getString("accessvalue");
+						} else if (rs1.getString("accessparam").equals("FORMAT")) {
+							iFace.setAccessFormat(rs1.getString("accessvalue"));
+						}
+					}
+					if (setEdited != null)
+						iFace.setAccessSet(setEdited);
+					
+					if (iFace.getAccessSet().equalsIgnoreCase("driver")) {
+						iFace.setCompliance("Driver");
+					} else if (iFace.getAccessSet().equalsIgnoreCase("ec_fundedresources")) {
+						iFace.setCompliance("OpenAIRE 2.0");
+					} else if (iFace.getAccessSet().equalsIgnoreCase("openaire")) {
+						iFace.setCompliance("OpenAIRE 3.0");
+					} else if (iFace.getAccessSet().equalsIgnoreCase("openaire_data")) {
+						iFace.setCompliance("OpenAIRE 3.0");
+					} else if (iFace.getAccessSet().equalsIgnoreCase("none")) {
+						iFace.setCompliance("notCompatible");
+					} else {
+						iFace.setCompliance("UNKNOWN");
+					}
+						
+					rs1.close();
+					stm1.close();
+					repo.getInterfaces().add(iFace);
+				}
+				
+				rs.close();
+				stm.close();
+				
+//				stm = conn.prepareStatement("select legal_name from datasources, organizations, datasources_organizations where datasourceid=datasource and organizationid=organization and official_name = ?");
+				stm = conn.prepareStatement("SELECT o.legalname, o.countryclass FROM datasources d, organizations o, datasource_organization dor WHERE dor.datasource=d.id AND o.id=dor.organization AND d.id = ?");
+				stm.setString(1, id);
+				rs = stm.executeQuery();
+
+				if (rs.next()) {
+					repo.setOrganization(rs.getString(1));
+					repo.setCountryCode(rs.getString(2));
+				}
+
+				rs.close();
+				stm.close();
+			}
+		} catch (SQLException e) {
+			logger.error("Error getting repo " + officialName + " from openaire db", e);
+			throw e;
+		}  
+		finally {
+			if (conn != null)
+				try {
+					conn.close();
+				} catch (SQLException e) {
+					logger.error("Error closing connection", e);
+				}
+		}
+
+		return repo;
+	}
+
+	@Override
+	public String storeRepository(Repository repo, String datatype,  List<RepositoryInterface> interfacesToRegister) throws Exception {
+		String retMessage = null;
+		Connection conn = null;
+		try {
+			conn = openAireDataSource.getConnection();
+			PreparedStatement stm = null;
+			ResultSet rs = null;
+			
+			logger.info("storing " + datatype + " repository..");
+			if (datatype.equalsIgnoreCase("opendoar")) {
+				
+				
+				logger.debug("updating datasources values..");
+				
+				stm = conn.prepareStatement("UPDATE datasources SET englishname = ?, logourl = ?, timezone = ?, optional1 = ?, activationid = ?, contactemail = ? WHERE id = ?");
+				stm.setString(1, repo.getEnglishName());
+				stm.setString(2, repo.getLogoUrl());
+				stm.setDouble(3, repo.getTimezone());
+				stm.setString(4, repo.getRegisteredBy());
+				stm.setString(5, repo.getActivationId());
+				stm.setString(6, repo.getContactEmail());
+				stm.setString(7, repo.getId());
+				
+				if (stm.executeUpdate() > 0 ) {
+					logger.debug("finished updating values in datasources..");
+					stm.close();
+					conn.commit();
+				}
+				
+				logger.debug("checking current values in api..");
+				
+				stm = conn.prepareStatement("SELECT COUNT(*) FROM api WHERE datasource = ?");
+				stm.setString(1, repo.getId());
+				rs = stm.executeQuery();
+				int noCurrentInApi = 0;
+				if (rs.next()) {
+					noCurrentInApi = rs.getInt(1);
+				}
+				stm.close();
+				rs.close();
+				
+				
+				for (RepositoryInterface iFace : repo.getInterfaces()) {
+					logger.debug("checking if interface : " + iFace.getId() + " already exists in api..");
+					stm = conn.prepareStatement("SELECT * FROM api WHERE datasource = ? AND id = ?");
+					stm.setString(1, repo.getId());
+					stm.setString(2, iFace.getId());
+					rs = stm.executeQuery();
+					
+					if (!rs.next()) {
+						logger.debug("not exist..");
+						stm.close();
+						rs.close();
+						
+						stm = conn.prepareStatement("INSERT INTO api (id, typology, originalprotocolclass, original, datasource, _dnet_resource_identifier_)  VALUES (?,?,?,?,?,?)");
+						iFace.setId("api_________::" + repo.getId() + "::" + noCurrentInApi);
+						logger.debug("creating new api_id: " + iFace.getId());
+						noCurrentInApi++;
+						
+						String apiTypology = "UNKNOWN";
+						if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire3.0") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0_data") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0")) {
+							apiTypology = "openaire";
+						} else if (iFace.getDesiredCompatibilityLevel().contains("driver")) {
+							apiTypology = "driver";
+						}
+						stm.setString(1, iFace.getId());
+						stm.setString(2, apiTypology);
+						stm.setString(3, iFace.getAccessProtocol());
+						stm.setString(4, iFace.getBaseUrl());
+						stm.setString(5, repo.getId());
+						stm.setString(6, iFace.getId());
+						
+						if (stm.executeUpdate() > 0) {
+							logger.debug(iFace.getId() + " inserted in api..");
+							logger.debug("now inserting in apicollections..");
+							stm.close();
+							rs.close();
+							conn.commit();
+		
+							stm = conn.prepareStatement("INSERT INTO apicollections (accessparam, accessvalue, api, _dnet_resource_identifier_)  VALUES (?,?,?,?)");
+							
+							stm.setString(1,"FORMAT");
+							stm.setString(2, iFace.getAccessFormat());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"FORMAT" + "@@" + iFace.getAccessFormat() + "@@" + iFace.getId());
+							
+							stm.addBatch();
+	
+							stm.setString(1,"SET");
+							stm.setString(2, iFace.getAccessSet());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"SET" + "@@" + iFace.getAccessSet() + "@@" + iFace.getId());
+									
+							stm.addBatch();
+						
+							if (stm.executeBatch()[0] > 0) {
+								logger.debug(iFace.getId() + " inserted in apicollections.");
+							}
+							logger.debug("finished updating set + format values in apicollections.");
+							stm.close();
+							conn.commit();
+						}
+							
+					} else {
+						
+						logger.debug("exists..");
+						boolean edited = false;
+						if( rs.getString("original") == null || rs.getString("originalprotocolclass") == null || !rs.getString("original").equalsIgnoreCase(iFace.getBaseUrl()) || !rs.getString("originalprotocolclass").equalsIgnoreCase(iFace.getAccessProtocol()) ) {
+							edited = true;
+						}
+							logger.debug("updating edited values in api..");
+							stm.close();
+							rs.close();
+							
+							String apiTypology = "UNKNOWN";
+							if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire3.0") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0")) {
+								apiTypology = "openaire";
+							} else if (iFace.getDesiredCompatibilityLevel().contains("driver")) {
+								apiTypology = "driver";
+							}
+								
+							stm = conn.prepareStatement("UPDATE api SET typology = ?, edited = ?, editedprotocolclass = ?, useedited = ?  WHERE datasource = ? AND id = ? ");
+							stm.setString(1, apiTypology);
+							if (edited) {
+								stm.setString(2, iFace.getBaseUrl());
+								stm.setString(3, iFace.getAccessProtocol());
+								stm.setBoolean(4, true);
+							} else {
+								stm.setString(2, null);
+								stm.setString(3, null);
+								stm.setBoolean(4, false);
+							}
+							stm.setString(5, repo.getId());
+							stm.setString(6, iFace.getId());
+							
+							if (stm.executeUpdate() > 0 ) {
+								logger.debug("finished updating values in api..");
+								stm.close();
+								conn.commit();
+							}
+						logger.debug("updating apicollections..");
+						
+						logger.debug("deleting current values from apicollections..");
+						stm = conn.prepareStatement("DELETE FROM apicollections WHERE api = ?");
+						
+						stm.setString(1, iFace.getId());
+						
+						if (stm.executeUpdate() > 0) {
+							logger.debug("values for interface " + iFace.getId() + " deleted from api_collections..");
+							stm.close();
+							rs.close();
+							conn.commit();
+							
+						}
+							logger.debug("now inserting in apicollections..");
+		
+							stm = conn.prepareStatement("INSERT INTO apicollections (accessparam, accessvalue, api, _dnet_resource_identifier_)  VALUES (?,?,?,?)");
+							
+							stm.setString(1,"FORMAT");
+							stm.setString(2, iFace.getAccessFormat());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"FORMAT" + "@@" + iFace.getAccessFormat() + "@@" + iFace.getId());
+							
+							stm.addBatch();
+	
+							stm.setString(1,"SET");
+							stm.setString(2, iFace.getAccessSet());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"SET" + "@@" + iFace.getAccessSet() + "@@" + iFace.getId());
+								
+							stm.addBatch();
+							
+							if (stm.executeBatch()[0] > 0) {
+								logger.debug(iFace.getId() + " inserted in apicollections.");
+							}
+							logger.debug("finished updating set + format values in apicollections.");
+							stm.close();
+							conn.commit();
+					
+					}	
+					logger.debug("interface : " + iFace.getId() + " inserted successfully..");
+				}			
+						
+			} else if (datatype.equalsIgnoreCase("journal")||datatype.equalsIgnoreCase("aggregator")){		
+	
+					logger.debug("looking if " + datatype + " " + repo.getOfficialName() + " is already in datasources");
+					stm = conn.prepareStatement("SELECT * FROM datasources WHERE officialname = ? OR id = ?");
+					stm.setString(1, repo.getOfficialName());
+					stm.setString(2, repo.getId());
+		
+					rs = stm.executeQuery();
+		
+					if (rs.next()) {
+						retMessage = datatype + " " + repo.getOfficialName() + " is already in datasources.";
+						logger.debug(retMessage);
+						
+						stm.close();
+						rs.close();
+					} else {
+						logger.debug(datatype + " " + repo.getOfficialName() + " is not in datasources. Inserting..");
+										
+						stm = conn.prepareStatement("INSERT INTO datasources(id, officialname, englishname, websiteurl, logourl, contactemail, latitude, longitude, timezone, namespaceprefix, collectedfrom, activationid, typology, datasourceclass, provenanceactionclass, _dnet_resource_identifier_, optional1, issn, eissn, lissn, description) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
+						
+						stm.setString(1, repo.getId()); //activation id
+						stm.setString(2, repo.getOfficialName());
+						stm.setString(3, repo.getEnglishName());
+						stm.setString(4, repo.getWebsiteUrl());
+						stm.setString(5, repo.getLogoUrl());
+						stm.setString(6, repo.getContactEmail());
+						stm.setDouble(7, repo.getLatitude());
+						stm.setDouble(8, repo.getLongitude());
+						stm.setString(9, repo.getTimezone() + "");
+						stm.setString(10, repo.getNamespacePrefix());
+						stm.setString(11, repo.getCollectedFrom()); 
+						stm.setString(12, repo.getActivationId()); 
+						stm.setString(13, repo.getTypology()); 
+						stm.setString(14, repo.getDatasourceClass());
+						stm.setString(15, repo.getProvenanceActionClass());
+						stm.setString(16,repo.getId());
+						stm.setString(17, repo.getRegisteredBy());
+						stm.setString(18, repo.getIssn());
+						stm.setString(19, repo.getEissn());
+						stm.setString(20, repo.getLissn());
+						stm.setString(21, repo.getDescription());
+						
+						if (stm.executeUpdate() > 0) {
+							logger.debug(datatype + " " + repo.getOfficialName() + " inserted in datasources.");
+							logger.debug("inserting in api..");
+							
+							stm.close();
+							conn.commit();
+	
+							
+							int noCurrentInApi = 0;						
+							for (RepositoryInterface iFace : repo.getInterfaces()) {
+									
+								stm = conn.prepareStatement("INSERT INTO api (id, typology, originalprotocolclass, original, datasource, _dnet_resource_identifier_)  VALUES (?,?,?,?,?,?)");
+								iFace.setId("api_________::" + repo.getId() + "::" + noCurrentInApi);
+								logger.debug("creating new api_id: " + iFace.getId());
+								noCurrentInApi++;
+								String apiTypology = "UNKNOWN";
+								if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire3.0") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0")) {
+									apiTypology = "openaire";
+								} else if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("driver")) {
+									apiTypology = "driver";
+								}
+								stm.setString(1, iFace.getId());
+								stm.setString(2, apiTypology);
+								stm.setString(3, iFace.getAccessProtocol());
+								stm.setString(4, iFace.getBaseUrl());
+								stm.setString(5, repo.getId());
+								stm.setString(6, iFace.getId());
+								
+								if (stm.executeUpdate() > 0) {
+									logger.debug(iFace.getId() + " inserted in api..");
+									logger.debug("now inserting in apicollections..");
+									stm.close();
+									rs.close();
+									conn.commit();
+				
+									stm = conn.prepareStatement("INSERT INTO apicollections (accessparam, accessvalue, api, _dnet_resource_identifier_)  VALUES (?,?,?,?)");
+									
+									stm.setString(1,"FORMAT");
+									stm.setString(2, iFace.getAccessFormat());
+									stm.setString(3, iFace.getId());
+									stm.setString(4,"FORMAT" + "@@" + iFace.getAccessFormat() + "@@" + iFace.getId());
+									
+									stm.addBatch();
+	
+									stm.setString(1,"SET");
+									stm.setString(2, iFace.getAccessSet());
+									stm.setString(3, iFace.getId());
+									stm.setString(4,"SET" + "@@" + iFace.getAccessSet() + "@@" + iFace.getId());
+										
+									stm.addBatch();
+									
+									if (stm.executeBatch()[0] > 0) {
+										logger.debug(iFace.getId() + " inserted in apicollections.");
+									}
+									logger.debug("finished updating set + format values in apicollections.");
+									stm.close();
+									conn.commit();
+								}
+									
+								
+								logger.debug("interface : " + iFace.getId() + " inserted successfully..");
+							}			
+							
+							logger.debug("inserting in organizations..");
+									
+							stm = conn.prepareStatement("SELECT * FROM organizations WHERE id = ?");
+							stm.setString(1, "openaire____::" + Base64.encode(repo.getOrganization()));
+							
+							ResultSet rs1 = stm.executeQuery();
+							
+							boolean exists = rs1.next();
+							
+							rs1.close();
+							
+							if(!exists) {
+								
+//								String countryCode = "UNKNOWN";
+//								stm = conn.prepareStatement("SELECT code FROM class WHERE name = ?");
+//								stm.setString(1,repo.getCountryName());
+//								
+//								rs1 = stm.executeQuery();
+//								
+//								if ( rs1.next()) {
+//									countryCode = rs1.getString(1);
+//								stm.close();
+//								}
+								if (repo.getCountryCode() == null) {
+									repo.setCountryCode("UNKNOWN");
+								}
+								stm = conn.prepareStatement("INSERT INTO organizations (legalname, countryclass, id, legalshortname, collectedfrom, provenanceactionclass, _dnet_resource_identifier_) VALUES (?,?,?,?,?,?,?)");
+								stm.setString(1, repo.getOrganization());
+								stm.setString(2, repo.getCountryCode());
+								stm.setString(3, "openaire____::" + Base64.encode(repo.getOrganization()));
+								stm.setString(4, repo.getOrganization());
+								stm.setString(5, repo.getCollectedFrom());
+								stm.setString(6, repo.getProvenanceActionClass());
+								stm.setString(7, "openaire____::" + Base64.encode(repo.getOrganization()));
+								stm.executeUpdate();
+								logger.debug("organization" + " openaire____::" + Base64.encode(repo.getOrganization()) + " inserted in organizations.");
+								
+								stm.close();
+								conn.commit();
+							} else {
+								logger.debug("Organization "+repo.getOrganization()+" already exists");
+							}
+							logger.debug("inserting in datasource-organizations..");
+							stm = conn.prepareStatement("INSERT INTO datasource_organization (organization, datasource, _dnet_resource_identifier_) VALUES (?,?,?)");
+							stm.setString(1, "openaire____::" + Base64.encode(repo.getOrganization()));
+							stm.setString(2, repo.getId());
+							stm.setString(3, repo.getId() + "@@" + "openaire____::" + Base64.encode(repo.getOrganization()) );
+	
+							if( stm.executeUpdate()>0) {
+								logger.debug("organization" + "openaire____::" + Base64.encode(repo.getOrganization()) + " inserted in datasource-organizations.");
+								stm.close();
+								conn.commit();
+							}		
+						}
+						logger.debug("Finished storing " + datatype + " repository..");
+					}
+	
+			}
+		
+		} catch (SQLException e) {
+			logger.error("Error storing repo " + repo.getOfficialName() + " in openaire db", e);
+			throw e;
+		} finally {
+			if (conn != null)
+				try {
+					conn.close();
+				} catch (SQLException e) {
+					logger.error("Error closing connection", e);
+				}
+		}
+		return retMessage;
+	}
+
+	public TreeMap<String, List<Map<String, String>>> getRepositoriesByCountry(String collectedFrom) throws SQLException {
+		Connection conn = null;
+		TreeMap<String, List<Map<String, String>>> res = new TreeMap<String, List<Map<String, String>>>();
+
+		try {
+			logger.info("getting repos by country from openaire db");
+			String collFrom = null;
+			if (collectedFrom.equalsIgnoreCase("opendoar")) {
+				logger.debug("populating doar list");
+				collFrom = "openaire____::opendoar";
+			} else if (collectedFrom.equalsIgnoreCase("re3data")) {
+				logger.debug("populating re3data list");
+				collFrom = "openaire____::re3data";
+			}
+			conn = openAireDataSource.getConnection();
+			PreparedStatement ps = conn.prepareStatement("SELECT DISTINCT d.id, d.officialname, c.name, d.websitEurl FROM datasources d, organizations o, datasource_organization dor, class c WHERE dor.datasource=d.id AND o.id=dor.organization AND o.countryclass=c.code AND d.collectedfrom=? ORDER BY c.name, d.officialname");
+//			.prepareStatement("SELECT d.official_name, c.name, d.web_site_url FROM countries c, organizations o, datasources d, datasources_organizations dor WHERE dor.datasource=d.datasourceid AND o.organizationid=dor.organization AND o.country_of_origin = c.countryid order by c.name, d.official_name");
+			ps.setString(1, collFrom);
+			ResultSet rs = ps.executeQuery();
+
+			while (rs.next()) {
+				String country = rs.getString(3);
+				List<Map<String, String>> repos = res.get(country);
+
+				if (repos == null) {
+					repos = new ArrayList<Map<String, String>>();
+					res.put(country, repos);
+				}
+
+				Map<String, String> repo = new HashMap<String, String>();
+				repo.put("name", rs.getString(2));
+				repo.put("url", rs.getString(4));
+				repo.put("id", rs.getString(1));
+				repos.add(repo);
+			}
+		} catch (SQLException e) {
+			logger.error("Error getting repositories from openaire db", e);
+			throw e;
+		} finally {
+			if (conn != null) {
+				try {
+					conn.close();
+				} catch (SQLException e) {
+					logger.error("Error closing connection", e);
+				}
+			}
+		}
+
+		return res;
+
+	}
+
+	@Override
+	public Map<String, List<Repository>> getRepositoriesPerCountry(String collectedFrom) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public List<Repository> getRepositoriesOfCountry(String collectedFrom, String country) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	public DataSource getOpenAireDataSource() {
+		return openAireDataSource;
+	}
+
+	public void setOpenAireDataSource(DataSource openAireDataSource) {
+		this.openAireDataSource = openAireDataSource;
+	}
+
+	@Override
+	public List<Repository> getRepositoriesOfUser(String user_mail, Boolean repoAdmin) throws SQLException {
+			Connection conn = null;
+			Repository repo = null;
+			List<Repository> retRepos = new ArrayList<Repository>();
+			try {
+				logger.info("getting repositories registered by user: " + user_mail + " from openaire db");
+
+				conn = openAireDataSource.getConnection();
+				PreparedStatement stm = conn.prepareStatement("SELECT * FROM datasources d WHERE contactemail = ? OR optional1 = ?");
+				stm.setString(1, user_mail);
+				stm.setString(2, user_mail);
+				ResultSet rs = stm.executeQuery();
+
+				while (rs.next()) {
+					repo = new Repository();
+					repo.setId(rs.getString("id"));
+					repo.setOfficialName(rs.getString("officialname"));
+					retRepos.add(repo);
+				}
+				rs.close();
+				stm.close();
+			} catch (Exception e) {
+				logger.error("error getting repositories registered by user: " + user_mail + " from openaire db", e);
+			} finally {
+				try {
+					if (conn != null)
+						conn.close();
+				} catch (Exception e) {
+					logger.warn("could not close openaire db connection", e);
+				}
+			}
+			return retRepos;
+		
+	}
+
+	@Override
+	public List<String> getUrlsOfRepos(String user_mail, Boolean repoAdmin) throws SQLException {				
+			Connection conn = null;
+			List<String> urls = new ArrayList<String>();
+			try {
+				logger.info("getting url from repositories registered by user: " + user_mail + " from openaire db");
+
+				conn = openAireDataSource.getConnection();
+				PreparedStatement stm = conn.prepareStatement("SELECT a.original, a.edited FROM datasources d, api a WHERE a.datasource=d.id AND ( d.optional1=? OR d.contactemail=?)");
+				stm.setString(1, user_mail);
+				stm.setString(2, user_mail);
+				ResultSet rs = stm.executeQuery();
+
+				while (rs.next()) {
+					if (rs.getString(1) != null && !rs.getString(1).isEmpty() && !urls.contains(rs.getString(1)))
+						urls.add(rs.getString(1));
+					if (rs.getString(2) != null && !rs.getString(2).isEmpty() && !urls.contains(rs.getString(2)))
+						urls.add(rs.getString(2));
+				}
+				rs.close();
+				stm.close();
+			} catch (Exception e) {
+				logger.error("error getting url from repositories registered by user: " + user_mail + " from openaire db", e);
+			} finally {
+				try {
+					if (conn != null)
+						conn.close();
+				} catch (Exception e) {
+					logger.warn("could not close openaire db connection", e);
+				}
+			}
+			return urls;
+		
+	}
+
+	@Override
+	public boolean insertPubFileInterface(String dsId, RepositoryInterface iFace) throws Exception {
+		return false;
+	}
+
+	@Override
+	public boolean updatePubFileInterface(String dsId, RepositoryInterface iFace) throws Exception {
+		return false;
+	}
+
+	@Override
+	public Map<String, Repository> getRepositoriesAsMap(String collectedFrom) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public List<Repository> getRepositories(String collectedFrom) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public String getNextScheduledExecution(String mode) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public String getListLatestUpdate(String mode) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public List<Repository> getReposByIds(List<String> datasourceIds) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public void getRepositoryStats(Repository repo) throws Exception {
+
+	}
+
+	@Override
+	public String updateRepositoryInformation(Repository repo) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public String deleteRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public void deleteRepositoryInterfacesWithoutChecks(String dsId, List<RepositoryInterface> interfaces, String datatype) throws Exception {
+
+	}
+
+	@Override
+	public String updateRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces, List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public RepositoryInterface updateRepositoryInterfaceWithoutChecks(String dsId, RepositoryInterface iFace, String datatype) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public String insertRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces, List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public RepositoryInterface insertRepositoryInterfaceWithoutChecks(String dsId, RepositoryInterface iFace, String datatype) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public boolean unregisterRepository(Repository repo) throws Exception {
+		return false;
+	}
+
+	@Override
+	public List<Map<String, String>> getRegisteredReposByOthers(String string) {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public List<Map<String, String>> getRepositoriesOfUser(String user_mail) throws Exception {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public boolean repoIsCompliant(String officialName) throws SQLException {
+		boolean retCompliant = false;
+		Connection conn = null;
+		try {
+			logger.info("checking if " + officialName + " is openaire compliant");
+			conn = openAireDataSource.getConnection();
+			PreparedStatement stm = conn.prepareStatement("SELECT openairecompatibilityclass FROM datasources WHERE officialname = ?");
+
+			stm.setString(1, officialName);
+			ResultSet rs = stm.executeQuery();
+			if(rs.next()) {
+				if (rs.getString(1).equals("UNKNOWN") || rs.getString(1).equals("notCompatible")) {
+					retCompliant = false;
+				} else {
+					retCompliant = true;
+				}
+			}
+			
+
+			stm.close();
+
+			rs.close();
+			logger.debug(officialName + " is openaire compliant");
+		} catch (Exception e) {
+			logger.error("error connecting to openaire db to get openairecompliant for " + officialName, e);
+			
+		} finally {
+			try {
+				if (conn != null)
+					conn.close();
+			} catch (Exception e) {
+				logger.warn("could not close openaire db connection", e);
+			}
+		}
+		return retCompliant;
+
+	}
+
+	@Override
+	public Map<String, String> getRepoCompatibility(String officialName, String datasourceId) throws Exception {
+		Map<String, String> compMap = null;
+		Connection conn = null;
+		
+		try {
+			logger.info("getting repository " + officialName + " compatibility from openaire db");
+
+			conn = openAireDataSource.getConnection();
+			PreparedStatement stm = null;
+		
+			stm = conn.prepareStatement("SELECT openairecompatibilityclass FROM datasources d WHERE d.id = ?");
+			stm.setString(1, datasourceId);				
+			ResultSet rs = stm.executeQuery();
+
+			compMap = new HashMap<String, String>();
+			if (rs.next()) {
+				String[] comp = rs.getString("openairecompatibilityclass").split("-");
+				for ( String c : comp) {
+					if (c.equalsIgnoreCase("driver"))
+						compMap.put("driver", "driver");
+                    else if (c.equalsIgnoreCase("openaire2.0")) {
+						compMap.put("openaire2.0", "ec_fundedresources");
+                        compMap.put("openaire2.0_data", "openaire_data");
+                    }
+					else if (c.equalsIgnoreCase("openaire3.0"))
+						compMap.put("openaire3.0", "openaire");
+					else if (c.equalsIgnoreCase("notCompatible"))
+						compMap.put("notCompatible", "notCompatible");
+					else if (c.equalsIgnoreCase("UNKNOWN"))
+						compMap.put("UNKNOWN", "UNKNOWN");
+				}
+			}
+
+			rs.close();
+			stm.close();
+			
+		} catch (SQLException e) {
+			logger.error("Error getting repo " + officialName + " compatibility from openaire db", e);
+			throw e;
+		}  
+		finally {
+			if (conn != null)
+				try {
+					conn.close();
+				} catch (SQLException e) {
+					logger.error("Error closing connection", e);
+				}
+		}
+		return compMap;
+	}
+
+
+	@Override
+	public String editRepository(Repository repo, String officialNameOld, String idOld, String datatype) throws Exception {
+	String retMessage = null;
+	Connection conn = openAireDataSource.getConnection();
+	PreparedStatement stm = null;
+	ResultSet rs = null;
+	
+	logger.info("editing " + datatype + " repository..");
+	if (datatype.equalsIgnoreCase("opendoar")) {
+		
+		logger.debug("updating datasources values for id:"+repo.getId()+" + name:" + repo.getOfficialName() );
+
+			
+		stm = conn.prepareStatement("UPDATE datasources SET englishname = ?, logourl = ?, timezone = ? WHERE officialname = ? AND id = ?");
+		stm.setString(1, repo.getEnglishName());
+		stm.setString(2, repo.getLogoUrl());
+		stm.setDouble(3, repo.getTimezone());
+		stm.setString(4, repo.getOfficialName());
+		stm.setString(5, repo.getId());
+		
+		if (stm.executeUpdate() > 0 ) {
+			logger.debug("finished updating values in datasources..");
+			stm.close();
+			conn.commit();
+		}
+		
+		logger.debug("checking current values in api..");
+		
+		stm = conn.prepareStatement("SELECT COUNT(*) FROM api WHERE datasource = ?");
+		stm.setString(1, repo.getId());
+		rs = stm.executeQuery();
+		int noCurrentInApi = 0;
+		if (rs.next()) {
+			noCurrentInApi = rs.getInt(1);
+		}
+		stm.close();
+		rs.close();
+		
+		
+		for (RepositoryInterface iFace : repo.getInterfaces()) {
+			logger.debug("checking if interface : " + iFace.getId() + " already exists in api..");
+			stm = conn.prepareStatement("SELECT * FROM api WHERE datasource = ? AND id = ?");
+			stm.setString(1, repo.getId());
+			stm.setString(2, iFace.getId());
+			rs = stm.executeQuery();
+			
+			if (!rs.next()) {
+				logger.debug("not exist..");
+				stm.close();
+				rs.close();
+				
+				stm = conn.prepareStatement("INSERT INTO api (id, typology, originalprotocolclass, original, datasource, _dnet_resource_identifier_)  VALUES (?,?,?,?,?,?)");
+				iFace.setId("api_________::" + repo.getId() + "::" + noCurrentInApi);
+				logger.debug("creating new api_id: " + iFace.getId());
+				noCurrentInApi++;
+				
+				String apiTypology = "UNKNOWN";
+				if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire3.0") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0")) {
+					apiTypology = "openaire";
+				} else if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("driver")) {
+					apiTypology = "driver";
+				}
+				
+				stm.setString(1, iFace.getId());
+				stm.setString(2, apiTypology);
+				stm.setString(3, iFace.getAccessProtocol());
+				stm.setString(4, iFace.getBaseUrl());
+				stm.setString(5, repo.getId());
+				stm.setString(6, iFace.getId());
+				
+				if (stm.executeUpdate() > 0) {
+					logger.debug(iFace.getId() + " inserted in api..");
+					logger.debug("now inserting in apicollections..");
+					stm.close();
+					rs.close();
+					conn.commit();
+
+					stm = conn.prepareStatement("INSERT INTO apicollections (accessparam, accessvalue, api, _dnet_resource_identifier_)  VALUES (?,?,?,?)");
+					
+					stm.setString(1,"FORMAT");
+					stm.setString(2, iFace.getAccessFormat());
+					stm.setString(3, iFace.getId());
+					stm.setString(4,"FORMAT" + "@@" + iFace.getAccessFormat() + "@@" + iFace.getId());
+					
+					stm.addBatch();
+
+					stm.setString(1,"SET");
+					stm.setString(2, iFace.getAccessSet());
+					stm.setString(3, iFace.getId());
+					stm.setString(4,"SET" + "@@" + iFace.getAccessSet() + "@@" + iFace.getId());
+						
+					stm.addBatch();
+					
+					if (stm.executeBatch()[0] > 0) {
+						logger.debug(iFace.getId() + " inserted in apicollections.");
+					}
+					logger.debug("finished updating set + format values in apicollections.");
+					stm.close();
+					conn.commit();
+				}
+					
+			} else {
+				
+				logger.debug("exists..");
+				boolean edited = false;
+				if( rs.getString("original") == null || rs.getString("originalprotocolclass") == null || !rs.getString("original").equalsIgnoreCase(iFace.getBaseUrl()) || !rs.getString("originalprotocolclass").equalsIgnoreCase(iFace.getAccessProtocol()) ) {
+					edited = true;
+				}
+					logger.debug("updating edited values in api..");
+					stm.close();
+					rs.close();
+					
+					String apiTypology = "UNKNOWN";
+					if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire3.0") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0")) {
+						apiTypology = "openaire";
+					} else if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("driver")) {
+						apiTypology = "driver";
+					}
+					
+						
+					stm = conn.prepareStatement("UPDATE api SET typology = ?, edited = ?, editedprotocolclass = ?, useedited = ?  WHERE datasource = ? AND id = ? ");
+					stm.setString(1, apiTypology);
+					if (edited) {
+						stm.setString(2, iFace.getBaseUrl());
+						stm.setString(3, iFace.getAccessProtocol());
+						stm.setBoolean(4, true);
+					} else {
+						stm.setString(2, null);
+						stm.setString(3, null);
+						stm.setBoolean(4, false);
+					}
+					stm.setString(5, repo.getId());
+					stm.setString(6, iFace.getId());
+					
+					if (stm.executeUpdate() > 0 ) {
+						logger.debug("finished updating values in api..");
+						stm.close();
+						conn.commit();
+					}
+				logger.debug("updating apicollections..");
+				
+				logger.debug("deleting current values from apicollections..");
+				stm = conn.prepareStatement("DELETE FROM apicollections WHERE api = ?");
+				
+				stm.setString(1, iFace.getId());
+				
+				if (stm.executeUpdate() > 0) {
+					logger.debug("values for interface " + iFace.getId() + " deleted from api_collections..");
+					stm.close();
+					rs.close();
+					conn.commit();
+					
+				}
+					logger.debug("now inserting in apicollections..");
+
+					stm = conn.prepareStatement("INSERT INTO apicollections (accessparam, accessvalue, api, _dnet_resource_identifier_)  VALUES (?,?,?,?)");
+					
+					stm.setString(1,"FORMAT");
+					stm.setString(2, iFace.getAccessFormat());
+					stm.setString(3, iFace.getId());
+					stm.setString(4,"FORMAT" + "@@" + iFace.getAccessFormat() + "@@" + iFace.getId());
+					
+					stm.addBatch();
+					
+					stm.setString(1,"SET");
+					stm.setString(2, iFace.getAccessSet());
+					stm.setString(3, iFace.getId());
+					stm.setString(4,"SET" + "@@" + iFace.getAccessSet() + "@@" + iFace.getId());
+						
+					stm.addBatch();
+					
+					if (stm.executeBatch()[0] > 0) {
+						logger.debug(iFace.getId() + " inserted in apicollections.");
+					}
+					logger.debug("finished updating set + format values in apicollections.");
+					stm.close();
+					conn.commit();
+			
+			}	
+			logger.debug("interface : " + iFace.getId() + " inserted successfully..");
+		}			
+			
+	} else if (datatype.equalsIgnoreCase("journal")||datatype.equalsIgnoreCase("aggregator")){		
+
+		try {								
+				stm = conn.prepareStatement("UPDATE datasources SET id = ?, officialname = ?, englishname = ?, websiteurl = ?, logourl = ?, contactemail = ?, latitude = ?, longitude = ?, timezone = ?, namespaceprefix = ?, collectedfrom = ?, typology = ?, datasourceclass = ?, provenanceactionclass = ?, _dnet_resource_identifier_ = ? WHERE officialname = ? AND id = ?");
+				
+				stm.setString(1, repo.getId()); //activation id
+				stm.setString(2, repo.getOfficialName());
+				stm.setString(3, repo.getEnglishName());
+				stm.setString(4, repo.getWebsiteUrl());
+				stm.setString(5, repo.getLogoUrl());
+				stm.setString(6, repo.getContactEmail());
+				stm.setDouble(7, repo.getLatitude());
+				stm.setDouble(8, repo.getLongitude());
+				stm.setString(9, repo.getTimezone() + "");
+				stm.setString(10, repo.getNamespacePrefix());
+				stm.setString(11, repo.getCollectedFrom()); 
+				stm.setString(12, repo.getTypology()); 
+				stm.setString(13, repo.getDatasourceClass());
+				stm.setString(14, repo.getProvenanceActionClass());
+				stm.setString(15,repo.getId());
+				stm.setString(16,officialNameOld);
+				stm.setString(17,idOld);
+	
+				
+				stm.executeUpdate();
+				logger.debug(datatype + " " + repo.getOfficialName() + " inserted in datasources.");
+				stm.close();
+				conn.commit();
+
+				logger.debug("checking current values in api..");
+				
+				stm = conn.prepareStatement("SELECT COUNT(*) FROM api WHERE datasource = ?");
+				stm.setString(1, repo.getId());
+				rs = stm.executeQuery();
+				int noCurrentInApi = 0;
+				if (rs.next()) {
+					noCurrentInApi = rs.getInt(1);
+				}
+				stm.close();
+				rs.close();
+				
+				
+				for (RepositoryInterface iFace : repo.getInterfaces()) {
+					logger.debug("checking if interface : " + iFace.getId() + " already exists in api..");
+					stm = conn.prepareStatement("SELECT * FROM api WHERE datasource = ? AND id = ?");
+					stm.setString(1, repo.getId());
+					stm.setString(2, iFace.getId());
+					rs = stm.executeQuery();
+					
+					if (!rs.next()) {
+						logger.debug("not exist..");
+						stm.close();
+						rs.close();
+						
+						stm = conn.prepareStatement("INSERT INTO api (id, typology, originalprotocolclass, original, datasource, _dnet_resource_identifier_)  VALUES (?,?,?,?,?,?)");
+						iFace.setId("api_________::" + repo.getId() + "::" + noCurrentInApi);
+						logger.debug("creating new api_id: " + iFace.getId());
+						noCurrentInApi++;
+						
+						String apiTypology = "UNKNOWN";
+						if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire3.0") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0")) {
+							apiTypology = "openaire";
+						} else if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("driver")) {
+							apiTypology = "driver";
+						}
+						stm.setString(1, iFace.getId());
+						stm.setString(2, apiTypology);
+						stm.setString(3, iFace.getAccessProtocol());
+						stm.setString(4, iFace.getBaseUrl());
+						stm.setString(5, repo.getId());
+						stm.setString(6, iFace.getId());
+						
+						if (stm.executeUpdate() > 0) {
+							logger.debug(iFace.getId() + " inserted in api..");
+							logger.debug("now inserting in apicollections..");
+							stm.close();
+							rs.close();
+							conn.commit();
+		
+							stm = conn.prepareStatement("INSERT INTO apicollections (accessparam, accessvalue, api, _dnet_resource_identifier_)  VALUES (?,?,?,?)");
+							
+							stm.setString(1,"FORMAT");
+							stm.setString(2, iFace.getAccessFormat());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"FORMAT" + "@@" + iFace.getAccessFormat() + "@@" + iFace.getId());
+							
+							stm.addBatch();
+	
+							stm.setString(1,"SET");
+							stm.setString(2, iFace.getAccessSet());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"SET" + "@@" + iFace.getAccessSet() + "@@" + iFace.getId());
+								
+							stm.addBatch();
+							
+							if (stm.executeBatch()[0] > 0) {
+								logger.debug(iFace.getId() + " inserted in apicollections.");
+							}
+							logger.debug("finished updating set + format values in apicollections.");
+							stm.close();
+							conn.commit();
+						}
+							
+					} else {
+						
+						logger.debug("exists..");
+						boolean edited = false;
+						if( rs.getString("original") == null || rs.getString("originalprotocolclass") == null || !rs.getString("original").equalsIgnoreCase(iFace.getBaseUrl()) || !rs.getString("originalprotocolclass").equalsIgnoreCase(iFace.getAccessProtocol()) ) {
+							edited = true;
+						}
+							logger.debug("updating edited values in api..");
+							stm.close();
+							rs.close();
+							
+							String apiTypology = "UNKNOWN";
+							if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire3.0") || iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0")) {
+								apiTypology = "openaire";
+							} else if (iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("driver")) {
+								apiTypology = "driver";
+							}
+							
+							
+							stm = conn.prepareStatement("UPDATE api SET typology = ?, edited = ?, editedprotocolclass = ?, useedited = ?  WHERE datasource = ? AND id = ? ");
+							stm.setString(1, apiTypology);
+							if (edited) {
+								stm.setString(2, iFace.getBaseUrl());
+								stm.setString(3, iFace.getAccessProtocol());
+								stm.setBoolean(4, true);
+							} else {
+								stm.setString(2, null);
+								stm.setString(3, null);
+								stm.setBoolean(4, false);
+							}
+							stm.setString(5, repo.getId());
+							stm.setString(6, iFace.getId());
+							
+							if (stm.executeUpdate() > 0 ) {
+								logger.debug("finished updating values in api..");
+								stm.close();
+								conn.commit();
+							}
+						logger.debug("updating apicollections..");
+						
+						logger.debug("deleting current values from apicollections..");
+						stm = conn.prepareStatement("DELETE FROM apicollections WHERE api = ?");
+						
+						stm.setString(1, iFace.getId());
+						
+						if (stm.executeUpdate() > 0) {
+							logger.debug("values for interface " + iFace.getId() + " deleted from api_collections..");
+							stm.close();
+							rs.close();
+							conn.commit();
+							
+						}
+							logger.debug("now inserting in apicollections..");
+		
+							stm = conn.prepareStatement("INSERT INTO apicollections (accessparam, accessvalue, api, _dnet_resource_identifier_)  VALUES (?,?,?,?)");
+							
+							stm.setString(1,"FORMAT");
+							stm.setString(2, iFace.getAccessFormat());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"FORMAT" + "@@" + iFace.getAccessFormat() + "@@" + iFace.getId());
+							
+							stm.addBatch();
+	
+							stm.setString(1,"SET");
+							stm.setString(2, iFace.getAccessSet());
+							stm.setString(3, iFace.getId());
+							stm.setString(4,"SET" + "@@" + iFace.getAccessSet() + "@@" + iFace.getId());
+								
+							stm.addBatch();
+							
+							if (stm.executeBatch()[0] > 0) {
+								logger.debug(iFace.getId() + " inserted in apicollections.");
+							}
+							logger.debug("finished updating set + format values in apicollections.");
+							stm.close();
+							conn.commit();
+					
+					}	
+					logger.debug("interface : " + iFace.getId() + " inserted successfully..");
+				}
+
+					logger.debug("inserting in organizations..");
+					stm.close();
+					conn.commit();
+					
+					stm = conn.prepareStatement("SELECT * FROM organizations WHERE id = ?");
+					stm.setString(1, "openaire____::" + Base64.encode(repo.getOrganization()));
+
+					ResultSet rs1 = stm.executeQuery();
+					boolean exists = rs1.next();
+					
+					rs1.close();
+					
+					if(!exists) {
+						
+						stm = conn.prepareStatement("SELECT code FROM class WHERE name = ?");
+						stm.setString(1,repo.getCountryName());
+						
+						rs1 = stm.executeQuery();
+						
+						String countryCode = "UNKNOWN";
+						if ( rs1.next()) {
+							countryCode = rs1.getString(1);
+						stm.close();
+						}
+						stm = conn.prepareStatement("INSERT INTO organizations (legalname, countryclass, id, legalshortname, _dnet_resource_identifier_) VALUES (?,?,?,?,?)");
+						stm.setString(1, repo.getOrganization());
+						stm.setString(2, countryCode);
+						stm.setString(3, "openaire____::" + Base64.encode(repo.getOrganization()));
+						stm.setString(4, repo.getOrganization());
+						stm.setString(5, "openaire____::" + Base64.encode(repo.getOrganization()));
+						stm.executeUpdate();
+						logger.debug("organization" + "openaire____::" + Base64.encode(repo.getOrganization()) + " inserted in organizations.");
+		
+						stm.close();
+						conn.commit();
+					} else {
+						logger.debug("Organization "+repo.getOrganization()+" already exists");
+					}
+					
+						logger.debug("inserting in datasource-organizations..");
+						stm = conn.prepareStatement("UPDATE datasource_organization SET organization = ? , datasource = ? , _dnet_resource_identifier_ = ? WHERE datasource = ? ");
+						stm.setString(1, "openaire____::" + Base64.encode(repo.getOrganization()));
+						stm.setString(2, repo.getId());
+						stm.setString(3, repo.getId() + "@@" + "openaire____::" + Base64.encode(repo.getOrganization()) );
+						stm.setString(4, idOld);
+	
+						if( stm.executeUpdate()>0) {
+							logger.debug("organization" + "openaire____::" + Base64.encode(repo.getOrganization()) + " inserted in datasource-organizations.");
+							stm.close();
+							
+							conn.commit();
+						}		
+
+		logger.debug("Finished updating " + datatype + " repository..");
+		
+		} catch (SQLException e) {
+			logger.error("Error updating repo " + repo.getOfficialName() + " from openaire db", e);
+			throw e;
+		} finally {
+			if (conn != null)
+				try {
+					conn.close();
+				} catch (SQLException e) {
+					logger.error("Error closing connection", e);
+				}
+		}
+	}
+	return retMessage;
+
+	}
+
+	@Override
+	public boolean updateRepositoryInterfaceCompliance(String officialName, String datasourceId,
+			String interfaceId, String compliance, String set, String baseUrl, String oldId) throws Exception {
+		boolean ret = true;
+		Connection conn = null;
+		try {
+			
+			logger.info("updating repository " + officialName + " compliance to : " + compliance);
+			conn = openAireDataSource.getConnection();
+			PreparedStatement stm = conn.prepareStatement("UPDATE datasources SET openairecompatibilityclass=?, dateofvalidation=?, activationid = ? , openairecompatibilityscheme = ? WHERE id = ?");
+
+			java.util.Date utilDate = new java.util.Date();
+			java.sql.Timestamp date = new java.sql.Timestamp(utilDate.getTime());			
+			Map<String, String> compMap = this.getRepoCompatibility(officialName, datasourceId);
+			
+			String newCompliance = ""; 
+			if (compliance.equalsIgnoreCase("openaire2.0")) {
+				if ( compMap.containsValue("driver") && compMap.containsValue("openaire") )
+					newCompliance = "driver-openaire2.0-openaire3.0";
+				else if ( compMap.containsValue("driver") )
+					newCompliance = "driver-openaire2.0";
+				else if ( compMap.containsValue("openaire") )
+					newCompliance = "openaire2.0-openaire3.0";
+				else 
+					newCompliance = "openaire2.0";			
+			} else if (compliance.equalsIgnoreCase("driver")) {
+				if ( compMap.containsValue("ec_fundedresources") && compMap.containsValue("openaire") )
+					newCompliance = "driver-openaire2.0-openaire3.0";
+				else if ( compMap.containsValue("ec_fundedresources") )
+					newCompliance = "driver-openaire2.0";
+				else if ( compMap.containsValue("openaire") )
+					newCompliance = "driver-openaire3.0";
+				else 
+					newCompliance = "driver";	
+			} else if (compliance.equalsIgnoreCase("openaire3.0")) {
+				if ( compMap.containsValue("ec_fundedresources") && compMap.containsValue("driver") )
+					newCompliance = "driver-openaire2.0-openaire3.0";
+				else if ( compMap.containsValue("ec_fundedresources") )
+					newCompliance = "openaire2.0-openaire3.0";
+				else if ( compMap.containsValue("driver") )
+					newCompliance = "driver-openaire3.0";
+				else 
+					newCompliance = "openaire3.0";
+			} else if (compliance.equalsIgnoreCase("openaire2.0_data")) {
+				newCompliance = "openaire2.0";
+			} else if (compliance.equalsIgnoreCase("notCompatible")) {
+				if ( compMap.containsValue("ec_fundedresources") && compMap.containsValue("driver") && compMap.containsValue("openaire"))
+					newCompliance = "driver-openaire2.0-openaire3.0";
+				else if ( compMap.containsValue("ec_fundedresources") && compMap.containsValue("driver") )
+					newCompliance = "driver-openaire2.0";
+				else if ( compMap.containsValue("openaire") )
+					newCompliance = "openaire3.0";
+				else if ( compMap.containsValue("ec_fundedresources") )
+					newCompliance = "openaire2.0";
+				else if ( compMap.containsValue("driver") )
+					newCompliance = "driver";
+				else 
+					newCompliance = "notCompatible";		
+			}
+			
+			stm.setString(1, newCompliance);
+			stm.setTimestamp(2,date);
+			stm.setString(3, null);
+			stm.setString(4, "dnet:compatibilityLevel");
+			stm.setString(5, datasourceId);
+			
+			stm.executeUpdate();
+			stm.close();
+			conn.commit();
+			logger.debug(officialName + " set as openaire compliant: " + compliance);
+		} catch (SQLException e) {
+			 logger.error("error connecting to openaire db to set a repo as openaire compliant " + officialName, e);
+			 	ret = false;
+				throw e;
+			}  
+			finally {
+				if (conn != null)
+					try {
+						conn.close();
+					} catch (SQLException e) {
+						ret = false;
+						logger.error("Error closing connection", e);
+					}
+			}
+		return ret;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/users/UserApi.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/users/UserApi.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/users/UserApi.java	(revision 48242)
@@ -0,0 +1,32 @@
+package eu.dnetlib.users;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public interface UserApi {
+
+	public boolean activateUser(String activationId) throws Exception;
+
+	public boolean isUserActivated(String email) throws Exception;
+
+	public boolean userExists(String email) throws Exception;
+
+	public boolean usernameExists(String username) throws Exception;
+
+	public boolean correctCreds(String email, String password) throws Exception;
+
+	public String prepareResetPassword(String email) throws Exception;
+
+	public void resetPassword(String uuid, String password) throws Exception;
+
+	public boolean isAdmin(String email) throws Exception;
+
+	public void editUser(UserProfile user)
+			throws Exception;
+
+	public String addUser(String username, String email, String password,
+			String firstName, String lastName, String institution) throws Exception;
+
+	public String getEmailFromUsername(String username) throws Exception;
+
+	public UserProfile getUser(String userIdentifier) throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos.properties
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos.properties	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos.properties	(revision 48242)
@@ -0,0 +1,9 @@
+services.repos.openaire.driverClassName = org.postgresql.Driver
+services.repos.openaire.url = jdbc:postgresql://194.177.192.223:5432/dnet_openaireplus
+services.repos.openaire.username = nickonas
+services.repos.openaire.password = 123456
+
+#services.users.joomla.driverClassName = org.postgresql.Driver
+#services.users.joomla.url = jdbc:mysql://mpagasas.di.uoa.gr:3306/joomla
+#services.users.joomla.username = joomla
+#services.users.joomla.password = joomla
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/VocabularyDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/VocabularyDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/VocabularyDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,106 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:annotation>
+    <xs:documentation>Standard part of any Resource Profile</xs:documentation>
+  </xs:annotation>
+  <xs:element name="RESOURCE_PROFILE">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="HEADER" type="HEADERType"/>
+        <xs:element name="BODY" type="BODYType"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="HEADERType">
+    <xs:all>
+      <xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType"/>
+      <xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType"/>
+      <xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType"/>
+      <xs:element name="RESOURCE_URI" type="RESOURCE_URIType"/>
+      <xs:element name="DATE_OF_CREATION" type="DATEType"/>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="BODYType">
+    <xs:sequence>
+      <xs:element name="CONFIGURATION" type="CONFIGURATIONType"/>
+      <xs:element name="STATUS" type="STATUSType"/>
+      <xs:element ref="SECURITY_PARAMETERS"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="RESOURCE_IDENTIFIERType">
+    <xs:attribute name="value" type="xs:string" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="RESOURCE_TYPEType">
+    <xs:attribute name="value" use="required">
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="VocabularyDSResourceType"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="RESOURCE_KINDType">
+    <xs:attribute name="value" use="required">
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="VocabularyDSResources"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="RESOURCE_URIType">
+    <xs:attribute name="value" type="xs:string" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="DATEType">
+    <xs:attribute name="value" type="xs:dateTime" use="required"/>
+  </xs:complexType>
+  <xs:annotation>
+    <xs:documentation>Customisable part of any Resource Profile</xs:documentation>
+  </xs:annotation>
+  <xs:complexType name="CONFIGURATIONType">
+    <xs:sequence>
+      <xs:element ref="VOCABULARY_NAME" />
+      <xs:element ref="VOCABULARY_DESCRIPTION"/>
+      <xs:element name="TERMS" type="VOCABULARYTERMType"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="VOCABULARYTERMType">
+    <xs:sequence>
+      <xs:element name="TERM" type="TERMType" maxOccurs="unbounded" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="TERMType">
+    <xs:sequence>
+      <xs:element name="SYNONYMS">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="SYNONYM" type="SYNONYMType" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+    <xs:attribute name="encoding" type="xs:string" use="required"/>
+    <xs:attribute name="english_name" type="xs:string" use="required"/>
+    <xs:attribute name="native_name" type="xs:string" use="required"/>
+    <xs:attribute name="code" type="xs:string" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="SYNONYMType">
+    <xs:attribute name="encoding" type="xs:string" use="required"/>
+    <xs:attribute name="term" type="xs:string" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="STATUSType">
+    <xs:all>
+      <xs:element name="LAST_UPDATE" type="DATEType"/>
+    </xs:all>
+  </xs:complexType>
+  <xs:element name="VOCABULARY_NAME">
+	<xs:complexType>
+    	<xs:simpleContent>
+      		<xs:extension base="xs:string">
+				<xs:attribute name="code" type="xs:string" use="optional"></xs:attribute>
+   			</xs:extension>
+      	</xs:simpleContent>
+   </xs:complexType>
+  </xs:element>
+  <xs:element name="VOCABULARY_DESCRIPTION" type="xs:string"/>
+  <xs:element name="SECURITY_PARAMETERS" type="xs:string"/>
+</xs:schema>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactory.java	(revision 48242)
@@ -0,0 +1,64 @@
+package eu.dnetlib.utils.sql;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+/**
+ * This factory class is used for retrieving a singleton JDBC connection. 
+ * @author thanos@di.uoa.gr
+ *
+ */
+public class ConnectionFactory {
+	private String driver;
+	private String url;
+	private Connection connection;
+	
+	/**
+	 * Set the driver.
+	 * @param driver the new JDBC driver that this factory will use
+	 */
+	public void setDriver(String driver) {
+		this.driver = driver;
+	}
+	
+	/**
+	 * Set the URL.
+	 * @param url the new URL that this factory will connect to
+	 */
+	public void setUrl(String url) {
+		this.url = url;
+	}
+	
+	/**
+	 * Get the connection.
+	 * @return the JDBC connection created by this connection factory
+	 */
+	public Connection getConnection() {
+		return connection;
+	}
+	
+	/**
+	 * Open JDBC connection to the specified URL using the specified JDBC driver (used for Spring initialization).
+	 * @throws ConnectionFactoryException if any errors occur
+	 */
+	public void init() throws ConnectionFactoryException {
+		try {
+			Class.forName(driver).newInstance();
+			connection = DriverManager.getConnection(url);
+		} catch (Exception e) {
+			throw new ConnectionFactoryException("error connecting to " + url + " using JDBC driver " + driver, e);
+		}
+	}
+	
+	/**
+	 * Close JDBC connection (used for Spring finalization).
+	 * @throws ConnectionFactoryException if any errors occur
+	 */
+	public void destroy() throws ConnectionFactoryException {
+		try {
+			connection.close();
+		} catch (Exception e) {
+			throw new ConnectionFactoryException("error closing connection", e);
+		}
+	}
+}

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/sql/ConnectionFactory.java
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/ServiceClientFactory.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/ServiceClientFactory.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/resolver/ServiceClientFactory.java	(revision 48242)
@@ -0,0 +1,8 @@
+package eu.dnetlib.utils.resolver;
+
+import eu.dnetlib.api.DriverService;
+
+public interface ServiceClientFactory<T extends DriverService> {
+
+	public T newClient(Object endpoint);
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/ContextPathReader.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/ContextPathReader.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/ContextPathReader.java	(revision 48242)
@@ -0,0 +1,40 @@
+package eu.dnetlib.utils;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.apache.log4j.Logger;
+
+/**
+ * A simple context listener that reads the servlet context and sets the context
+ * path as a system property. 
+ * 
+ * @author antleb
+ *
+ */
+public class ContextPathReader implements ServletContextListener {
+	private static Logger logger = Logger.getLogger(ContextPathReader.class);
+
+	public void contextDestroyed(ServletContextEvent arg0) {
+		// doing nothing
+	}
+
+	public void contextInitialized(ServletContextEvent event) {
+		try {
+			String propertyName = event.getServletContext().getInitParameter("applicationContextProperty");
+			String path = event.getServletContext().getContextPath();
+			
+			if (propertyName == null)
+				propertyName = "driver.service.context";
+			
+			logger.debug("Web application path: " + path + " (in property '" + propertyName + "')");
+			
+			if (path.startsWith("/"))
+				path = path.substring(1);
+			
+			System.setProperty("driver.service.context", path);
+		} catch (Exception e) {
+			logger.error("Error reading application context path", e);
+		}
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/UserDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/UserDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/UserDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by pagano (CNR) -->
+<!--W3C Schema generated by XMLSpy v2007 sp1 (http://www.altova.com)-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType" />
+				<xs:element name="BODY" type="BODYType" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<xs:complexType name="HEADERType">
+		<xs:all>
+			<xs:element name="RESOURCE_IDENTIFIER"
+				type="RESOURCE_IDENTIFIERType" />
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType" />
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType" />
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType" />
+			<xs:element name="DATE_OF_CREATION"
+				type="DATE_OF_CREATIONType" />
+		</xs:all>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="UserDSResourceType" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="UserDSResources" />
+					<xs:enumeration value="PendingDSResources" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="DATE_OF_CREATIONType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType" />
+			<xs:element name="STATUS" type="xs:string" />
+			<xs:element name="SECURITY_PARAMETERS"
+				type="SECURITY_PARAMETERSType" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="CONFIGURATIONType">
+		<xs:sequence>
+			<xs:element name="PERSONAL_INFO" type="PERSONAL_INFOType" />
+			<xs:element name="COMMUNITIES" type="COMMUNITIESType" />
+			<xs:element name="SAVED_QUERIES" type="SAVED_QUERYType"
+				minOccurs="0" maxOccurs="unbounded" />
+			<xs:element name="FILTER" type="FILTERType" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="RECOMMENDATION" type="RECOMMENDATIONType" />
+			<xs:element name="DOCUMENTS" type="DOCUMENTSType" minOccurs="0"/>
+			<xs:element name="USER_STORE" type="STOREType"
+				minOccurs="0" />
+			<xs:element name="userImageID" type="xs:string"
+				minOccurs="0" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="SECURITY_PARAMETERSType">
+		<xs:all>
+			<xs:element name="SECURITY_PARAMETER" type="xs:string" />
+		</xs:all>
+	</xs:complexType>
+
+	<xs:complexType name="STOREType">
+		<xs:sequence>
+			<xs:element name="serviceURL" type="xs:string" />
+			<xs:element name="storeID" type="xs:string" />
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="SAVED_QUERYType">
+		<xs:sequence>
+			<xs:element name="query" type="QUERYType" />
+			<xs:element name="hashValue" type="xs:string" minOccurs="0"
+				maxOccurs="unbounded" />
+			<xs:element name="alertOnChange" type="xs:boolean" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="FILTERType">
+		<xs:sequence>
+			<xs:element name="query" type="SAVED_QUERYType"
+				minOccurs="1" maxOccurs="1" />
+		</xs:sequence>
+	</xs:complexType>
+
+
+	<xs:complexType name="QUERYType">
+		<xs:sequence>
+			<xs:element name="CQL">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="REFINE" minOccurs="0">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="COMMUNITYID" minOccurs="0"
+				maxOccurs="unbounded">
+				<xs:complexType>
+					<xs:attribute name="communityId" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="COLLECTIONID" minOccurs="0"
+				maxOccurs="unbounded">
+				<xs:complexType>
+					<xs:attribute name="collectionId" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="PERSONAL_INFOType">
+		<xs:sequence>
+			<xs:element name="FIRST_NAME">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="LAST_NAME">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="INSTITUTION">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="EMAIL">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="ACTIVATION_ID">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string" />
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="ACTIVE">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:boolean" />
+				</xs:complexType>
+			</xs:element>
+
+		</xs:sequence>
+
+	</xs:complexType>
+
+	<xs:complexType name="COMMUNITY_REGISTRATIONType">
+		<xs:attribute name="communityId" type="xs:string" />
+		<xs:attribute name="alertOnChange" type="xs:boolean" />
+		<xs:attribute name="insertInQueries" type="xs:boolean" />
+	</xs:complexType>
+
+	<xs:complexType name="COMMUNITIESType">
+		<xs:sequence>
+			<xs:element name="COMMUNITY_REGISTRATION"
+				type="COMMUNITY_REGISTRATIONType" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="RECOMMENDATIONType">
+		<xs:sequence>
+			<xs:element name="RECOMMENDATIONS"
+				type="RECOMMENDATIONSType" />
+		</xs:sequence>
+		<xs:attribute name="SEND_EMAIL" type="xs:boolean" />
+		<xs:attribute name="PERIOD" type="xs:int" />
+		<xs:attribute name="LAST_NOTIFICATION" type="xs:string" />
+	</xs:complexType>
+
+	<xs:complexType name="RECOMMENDATIONSType">
+		<xs:sequence>
+			<xs:element name="RECOMMENDATION_ID" type="xs:string"
+				minOccurs="0" maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+
+
+	<xs:complexType name="DOCUMENTSType">
+		<xs:sequence>
+			<xs:element name="DOCUMENT_ID" type="xs:string"
+				minOccurs="0" maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
+
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-commons.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-commons.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-commons.xml	(revision 48242)
@@ -0,0 +1,233 @@
+<?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-4.0.xsd"
+       default-autowire="no">
+
+	<!-- the nkua registry wrappers -->
+	<bean id="securityRegistry" class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.SecurityProfileXmlConverter"/>
+		</property>
+		<property name="registryLocator" ref="registryServiceLocator" />
+		<property name="resourceUri" value="${is.registry.creatorId}" />
+	</bean>
+	
+	<bean id="userRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.SecurityAwareRegistryImpl">
+				<property name="registry">
+					<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+						<property name="converter">
+							<bean class="gr.uoa.di.driver.xml.UserProfileXmlConverter" />
+						</property>
+						<property name="registryLocator" ref="registryServiceLocator" />
+						<property name="resourceUri" value="${is.registry.creatorId}" />
+					</bean>
+				</property>
+				<property name="registryServiceLocator" ref="registryServiceLocator" />
+				<property name="securityLookUp" ref="securityLookUp" />
+				<property name="securityRegistry" ref="securityRegistry" />
+			</bean>
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="USERDSRESOURCETYPE" />
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.UserProfileXmlConverter" />
+		</property>
+	</bean>
+	
+	<bean id="repositoryRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+				<property name="converter">
+					<bean class="gr.uoa.di.driver.xml.RepositoryXmlConverter" />
+				</property>
+				<property name="resourceUri" value="${is.registry.creatorId}" />
+				<property name="registryLocator" ref="registryServiceLocator" />
+			</bean>
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="REPOSITORYSERVICERESOURCETYPE" />
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.RepositoryXmlConverter" />
+		</property>
+	</bean>
+	<bean id="collectionRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+				<property name="converter">
+					<bean class="gr.uoa.di.driver.xml.CollectionXmlConverter" />
+				</property>
+				<property name="resourceUri" value="${is.registry.creatorId}" />
+				<property name="registryLocator" ref="registryServiceLocator" />
+			</bean>
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="COLLECTIONDSRESOURCETYPE" />
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.CollectionXmlConverter" />
+		</property>
+	</bean>
+	
+	<bean id="communityRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+				<property name="converter">
+					<bean class="gr.uoa.di.driver.xml.CommunityXmlConverter" />
+				</property>
+				<property name="resourceUri" value="${is.registry.creatorId}" />
+				<property name="registryLocator" ref="registryServiceLocator" />
+			</bean>
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="COMMUNITYDSRESOURCETYPE" />
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.CommunityXmlConverter" />
+		</property>
+	</bean>
+	
+	<bean id="recommendationRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+				<property name="converter">
+					<bean class="gr.uoa.di.driver.xml.RecommendationXmlConverter" />
+				</property>
+				<property name="resourceUri" value="${is.registry.creatorId}" />
+				<property name="registryLocator" ref="registryServiceLocator" />
+			</bean>
+		</property>
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.RecommendationXmlConverter" />
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="RECOMMENDATIONDSRESOURCETYPE" />
+	</bean>
+	
+	<bean id="queryHashRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+				<property name="converter">
+					<bean class="gr.uoa.di.driver.xml.QueryHashXmlConverter" />
+				</property>
+				<property name="resourceUri" value="${is.registry.creatorId}" />
+				<property name="registryLocator" ref="registryServiceLocator" />
+			</bean>
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="QUERYHASHRESOURCETYPE" />
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.QueryHashXmlConverter" />
+		</property>
+	</bean>
+	<bean id="rssFeedRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+				<property name="converter">
+					<bean class="gr.uoa.di.driver.xml.RSSFeedXmlConverter" />
+				</property>
+				<property name="resourceUri" value="${is.registry.creatorId}" />
+				<property name="registryLocator" ref="registryServiceLocator" />
+			</bean>
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="RSSFEEDRESOURCETYPE" />
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.RSSFeedXmlConverter" />
+		</property>
+	</bean>
+	
+	<bean id="webLayoutRegistry" class="gr.uoa.di.driver.enabling.registry.CacheAwareRegistryImpl">
+		<property name="registry">
+			<bean class="gr.uoa.di.driver.enabling.registry.ISRegistryImpl">
+				<property name="converter">
+					<bean class="gr.uoa.di.driver.xml.WebInterfaceLayoutXmlConverter" />
+				</property>
+				<property name="resourceUri" value="${is.registry.creatorId}" />
+				<property name="registryLocator" ref="registryServiceLocator" />
+			</bean>
+		</property>
+		<property name="notificationService" ref="hcmService" />
+		<property name="resourceType" value="WEBLAYOUTRESOURCETYPE" />
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.WebInterfaceLayoutXmlConverter" />
+		</property>
+	</bean>
+	
+	<!-- vocabulary loader bean -->
+	<bean id="vocabularyLoader"
+		class="gr.uoa.di.driver.enabling.vocabulary.ChainVocabularyLoader">
+		<property name="defaultVocabularyLoader" >
+			<bean class="gr.uoa.di.driver.enabling.vocabulary.ISVocabularyLoader">
+				<property name="lookUp" ref="vocabularyLookUp" />
+			</bean>
+		</property>
+		<property name="vocabularyMap">
+			<map>
+				<entry key="Names of Repositories" >
+					<bean class="gr.uoa.di.driver.enabling.vocabulary.RepositoryVocabularyLoader">
+                        <property name="datasourceManagerService" ref="datasourceManagerServiceLocator" />
+					</bean>
+				</entry>
+				<entry key="datasourcesNames" value-ref="sqlVocabularyLoader"/>
+				<entry key="programmeNames" value-ref="sqlVocabularyLoader"/>
+				<entry key="subdivisionNames" value-ref="sqlVocabularyLoader"/>
+			</map>
+		</property>
+	</bean>
+	
+	<bean id="sqlVocabularyLoader" class="gr.uoa.di.driver.enabling.vocabulary.SQLVocabularyLoader">
+		<property name="dataSource" ref="openaire.dataSource" />
+		<property name="queryMap">
+			<map>
+				<entry key="datasourcesNames" value="select datasourceid, official_name from datasources where openairecompliant = true or exists (select 1 from results join instances on resource=resultid where pmhdeleted=false and merged=false and pendingforclaim=false and hostedby=datasourceid)"/>
+				<entry key="programmeNames" value="select specificprogramid, name from specificprograms" />
+				<entry key="subdivisionNames" value="select programid, name from programs" />
+			</map>
+		</property>
+	</bean>
+	
+	<bean id="openaire.dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
+		<property name="driverClassName" value="${openaire.db.driverClassName}" />
+		<property name="url" value="${openaire.db.url}" />
+		<property name="username" value="${openaire.db.username}" />
+		<property name="password" value="${openaire.db.password}" />
+	</bean>
+	
+	<!-- the nkua subscription wrapper -->
+	<bean id="snManager" class="gr.uoa.di.driver.enabling.issn.SNManagerImpl"
+		init-method="init" destroy-method="shutdown">
+		<property name="snLocator" ref="subscriptionServiceLocator" />
+		<property name="threadPoolSize" value="${subscription.manager.threads}" />
+		<property name="timeToLive" value="${subscription.manager.timeToLive}" />
+	</bean>
+
+	<!-- the nkua aas wrapper -->
+	<bean id="aasWrapper" class="gr.uoa.di.driver.enabling.a2.A2WrapperImpl">
+		<property name="locator" ref="a2ServiceLocator" />
+	</bean>
+	
+	<bean id="resultSetFactory" class="gr.uoa.di.driver.enabling.resultset.ResultSetFactoryImpl">
+		<property name="converterMap">
+				<map>
+					<entry key="eu.dnetlib.domain.functionality.Collection"> <bean class="gr.uoa.di.driver.xml.CollectionXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.functionality.Community" > <bean class="gr.uoa.di.driver.xml.CommunityXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.data.MDFormatDataStructure" > <bean class="gr.uoa.di.driver.xml.MDFormatDSXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.functionality.QueryHash" > <bean class="gr.uoa.di.driver.xml.QueryHashXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.functionality.Recommendation" > <bean class="gr.uoa.di.driver.xml.RecommendationXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.data.Repository" > <bean class="gr.uoa.di.driver.xml.RepositoryXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.enabling.SecurityProfile" > <bean class="gr.uoa.di.driver.xml.SecurityProfileXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.functionality.UserProfile" > <bean class="gr.uoa.di.driver.xml.UserProfileXmlConverter" /> </entry>
+					<entry key="eu.dnetlib.domain.enabling.Vocabulary" > <bean class="gr.uoa.di.driver.xml.VocabularyXmlConverter" /> </entry>
+<!--					<entry key="eu.dnetlib.domain.functionality.WebInterfaceLayout" value="gr.uoa.di.driver.xml.WebInterfaceLayoutXmlConverter" />-->
+				</map>
+		</property>
+		<property name="endpointResolver" ref="endpointResolver" />
+		<property name="securityLookUp" ref="securityLookUp" />
+	</bean>
+	
+<!-- <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>       
+    <ehcache:annotation-driven cache-manager="ehCacheManager" create-missing-caches="true"/>  -->
+</beans>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RepositoryServiceResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RepositoryServiceResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RepositoryServiceResourceType.xsd	(revision 48242)
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+	<xs:element name="USED_DISKSPACE" type="xs:integer" />
+	<xs:element name="TYPOLOGY" type="xs:string" />
+	<xs:element name="OFFICIAL_NAME" type="xs:string" />
+	<xs:element name="ENGLISH_NAME" type="xs:string" />
+	<xs:element name="ICON_URI" type="xs:string" />
+	<xs:element name="COUNTRY" type="xs:string" />
+	<xs:element name="REPOSITORY_WEBPAGE" type="xs:string" />
+	<xs:element name="ACCESS_PROTOCOL" type="xs:string" />
+	<xs:element name="BASE_URL" type="xs:string" />
+	<xs:element name="FORMAT" type="xs:string" />
+	<xs:element name="REGISTERED_BY" type="xs:string" />
+		<xs:element name="REPOSITORY_INSTITUTION" type="xs:string" />
+		<xs:element name="ADMIN_INFO" type="xs:string" />
+		<xs:element name="SET" type="xs:string" />
+		<xs:element name="THROUGHPUT" type="xs:double" />
+		<xs:complexType name="LAST_UPDATEType">
+			<xs:attribute name="value" type="xs:dateTime" use="required" />
+		</xs:complexType>
+
+		<xs:element name="LOCATION">
+			<xs:complexType>
+				<xs:all>
+					<xs:element name="LONGITUDE" type="xs:double" />
+					<xs:element name="LATITUDE" type="xs:double" />
+					<xs:element name="TIMEZONE">
+						<xs:simpleType>
+							<xs:restriction base="xs:double">
+								<xs:pattern value="-?[0-9]*(\.[05])?" />
+								<xs:minInclusive value="-12.0" />
+								<xs:maxInclusive value="12.0" />
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+				</xs:all>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="STATUS">
+			<xs:complexType mixed="true">
+				<xs:all>
+					<xs:element ref="HANDLED_DATASTRUCTURE" minOccurs="0" />
+					<xs:element ref="USED_DISKSPACE" minOccurs="0" />
+					<xs:element ref="NUMBER_OF_OBJECTS" />
+					<xs:element name="LAST_UPDATE" type="LAST_UPDATEType"
+						minOccurs="0" />
+				</xs:all>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="ACTION_STATUS">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="DONE" />
+					<xs:enumeration value="ONGOING" />
+					<xs:enumeration value="FAILED" />
+					<xs:enumeration value="WAITING" />
+					<xs:enumeration value="ASSIGNED" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:element>
+		<xs:element name="SECURITY_PARAMETERS" type="xs:string" />
+		<xs:element name="RESPONSE_TIME" type="xs:integer" />
+		<xs:element name="RESOURCE_PROFILE">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element name="HEADER" type="HEADERType" />
+					<xs:element name="BODY" type="BODYType" />
+				</xs:sequence>
+			</xs:complexType>
+
+
+
+		</xs:element>
+		<xs:element name="SETS">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element ref="SET" minOccurs="0" maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="FORMATS">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element ref="FORMAT" maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="INTERFACE">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element ref="ACCESS_PROTOCOL" />
+					<xs:element ref="BASE_URL" />
+					<xs:element ref="FORMATS" />
+					<xs:element ref="SETS" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="INTERFACES">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element ref="INTERFACE" maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="EXTRA_FIELDS">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element name="FIELD" type="FieldType" maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:element>
+
+		<xs:complexType name="FieldType">
+			<xs:all>
+				<xs:element name="key" type="xs:string" />
+				<xs:element name="value" type="xs:string" />
+			</xs:all>
+		</xs:complexType>
+		<xs:complexType name="RESOURCE_TYPEType">
+			<xs:attribute name="value" use="required">
+				<xs:simpleType>
+					<xs:restriction base="xs:string">
+						<xs:enumeration value="RepositoryServiceResourceType" />
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+		</xs:complexType>
+		<xs:complexType name="RESOURCE_URIType">
+			<xs:attribute name="value" type="xs:string" use="required" />
+		</xs:complexType>
+		<xs:complexType name="RESOURCE_KINDType">
+			<xs:attribute name="value" use="required">
+				<xs:simpleType>
+					<xs:restriction base="xs:string">
+						<xs:enumeration value="RepositoryServiceResources" />
+						<xs:enumeration value="PendingRepositoryResources" />
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+		</xs:complexType>
+		<xs:complexType name="RESOURCE_IDENTIFIERType">
+			<xs:attribute name="value" type="xs:string" use="required" />
+		</xs:complexType>
+		<xs:complexType name="DATE_OF_CREATIONType">
+			<xs:attribute name="value" type="xs:dateTime" use="required" />
+		</xs:complexType>
+		<xs:element name="PROTOCOL" type="xs:string" />
+		<xs:element name="QOS">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element ref="AVAILABILITY" />
+					<xs:element ref="CAPACITY" />
+					<xs:element ref="RESPONSE_TIME" minOccurs="0" />
+					<xs:element ref="THROUGHPUT" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="PARAMETERS">
+			<xs:complexType>
+				<xs:simpleContent>
+					<xs:extension base="xs:string">
+						<xs:attribute name="name" type="xs:string" use="required" />
+					</xs:extension>
+				</xs:simpleContent>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="MESSAGE">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element ref="ACTION" />
+					<xs:element ref="PARAMETERS" maxOccurs="unbounded" />
+					<xs:element ref="ACTION_STATUS" />
+				</xs:sequence>
+				<xs:attribute name="id" type="xs:string" use="required" />
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="MAX_SIZE_OF_DATASTRUCTURE" type="xs:integer" />
+		<xs:element name="MAX_NUMBER_OF_DATASTRUCTURE" type="xs:integer" />
+		<xs:complexType name="HEADERType">
+			<xs:all>
+				<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType" /> <!-- ci pensa il registry -->
+				<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType" />
+				<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType" />
+				<xs:element name="RESOURCE_URI" type="RESOURCE_URIType" />
+				<xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType" /> <!-- ci pensa il registry -->
+				<xs:element ref="PROTOCOL" />
+			</xs:all>
+		</xs:complexType>
+		<xs:element name="HANDLED_DATASTRUCTURE" type="xs:integer" />
+		<xs:element name="NUMBER_OF_OBJECTS" type="xs:integer" />
+		<xs:element name="CONFIGURATION">
+			<xs:complexType>
+				<xs:all>
+					<xs:element ref="TYPOLOGY" />
+					<xs:element ref="MAX_SIZE_OF_DATASTRUCTURE" />
+					<xs:element ref="AVAILABLE_DISKSPACE" />
+					<xs:element ref="MAX_NUMBER_OF_DATASTRUCTURE" />
+					<xs:element ref="OFFICIAL_NAME" />
+					<xs:element ref="ENGLISH_NAME" />
+					<xs:element ref="ICON_URI" />
+					<xs:element ref="COUNTRY" />
+					<xs:element ref="LOCATION" />
+					<xs:element ref="REPOSITORY_WEBPAGE" />
+					<xs:element ref="REPOSITORY_INSTITUTION" />
+					<xs:element ref="ADMIN_INFO" />
+					<xs:element ref="INTERFACES" />
+					<xs:element ref="EXTRA_FIELDS" minOccurs="0"/>
+					<xs:element ref="REGISTERED_BY" minOccurs="0"/>
+				</xs:all>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="CAPACITY" type="xs:string" />
+		<xs:complexType name="BODYType">
+			<xs:sequence>
+				<xs:element ref="CONFIGURATION" />
+				<xs:element ref="STATUS" />
+				<xs:element ref="QOS" />
+				<xs:element ref="SECURITY_PARAMETERS" />
+				<xs:element ref="BLACKBOARD" />
+			</xs:sequence>
+		</xs:complexType>
+		<xs:element name="BLACKBOARD">
+			<xs:complexType>
+				<xs:sequence>
+					<xs:element name="LAST_REQUEST" type="xs:string"
+						minOccurs="0" maxOccurs="1" />
+					<xs:element name="LAST_RESPONSE" type="xs:string"
+						minOccurs="0" maxOccurs="1" />
+					<xs:element ref="MESSAGE" minOccurs="0" maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:element>
+		<xs:element name="AVAILABLE_DISKSPACE" type="xs:string" />
+		<xs:element name="AVAILABILITY" type="xs:string" />
+		<xs:element name="ACTION">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="CREATE" />
+					<xs:enumeration value="DELETE" />
+					<xs:enumeration value="UPDATE" />
+					<xs:enumeration value="MANAGE" />
+					<xs:enumeration value="RELEASE" />
+					<xs:enumeration value="CANCEL" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:element>
+</xs:schema>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/deploy.info
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/deploy.info	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/deploy.info	(revision 48242)
@@ -0,0 +1,10 @@
+{
+  "type_source": "SVN", 
+  "goal": "package -U -T 4C source:jar", 
+  "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet45/modules/uoa-commons/trunk", 
+  "deploy_repository": "dnet45-snapshots", 
+  "version": "4", 
+  "mail": "antleb@di.uoa.gr, kiatrop@di.uoa.gr", 
+  "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet45-snapshots", 
+  "name": "uoa-commons"
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/CascadingPropertyLoader.java	(revision 48242)
@@ -0,0 +1,55 @@
+package eu.dnetlib.utils;
+
+import java.util.Properties;
+
+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;
+
+/**
+ * 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-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheEntryFactoryImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheEntryFactoryImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheEntryFactoryImpl.java	(revision 48242)
@@ -0,0 +1,38 @@
+package eu.dnetlib.repos.ehcacher;
+
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.repos.RepoApi;
+import net.sf.ehcache.constructs.blocking.CacheEntryFactory;
+import org.apache.log4j.Logger;
+
+import java.util.Map;
+
+public class CacheEntryFactoryImpl implements CacheEntryFactory {
+	private Logger logger = Logger.getLogger(CacheEntryFactoryImpl.class);
+	private Map<String, Repository> repositories = null;
+	private RepoApi repoAPI = null;
+	
+	public Object createEntry(Object key) throws Exception {
+        logger.debug("++++++creating entry for key = " + key);
+			if (((String)key).equalsIgnoreCase("opendoar")) {
+				logger.debug("populating doar list");
+				repositories = repoAPI.getRepositoriesAsMap("openaire____::opendoar");
+			} else if (((String)key).equalsIgnoreCase("re3data")) {
+				logger.debug("populating re3data list");
+				repositories = repoAPI.getRepositoriesAsMap("openaire____::re3data");
+			} else if (((String)key).equalsIgnoreCase("jour_aggr")) {
+				logger.debug("populating jour_aggr list");
+				repositories = repoAPI.getRepositoriesAsMap("infrastruct_::openaire");
+			}
+        return repositories;
+    }
+
+	public RepoApi getRepoAPI() {
+		return repoAPI;
+	}
+
+	public void setRepoAPI(RepoApi repoAPI) {
+		this.repoAPI = repoAPI;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupTemplates.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupTemplates.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupTemplates.xml	(revision 48242)
@@ -0,0 +1,19 @@
+<?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:t="http://dnetlib.eu/springbeans/t" 
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd">
+
+	<template:define name="nonCachingLookUp">
+		<bean name="dummyName" 
+			t:name="$beanName$" class="gr.uoa.di.driver.enabling.islookup.ISLookUpImpl">
+			<property name="converter" ref="$converter$" />
+			<property name="lookupLocator" ref="$locator$" />
+		</bean>
+	</template:define>
+</beans>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/profile-ehcache.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/profile-ehcache.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/profile-ehcache.xml	(revision 48242)
@@ -0,0 +1,55 @@
+<ehcache>
+
+    <!-- Sets the path to the directory where cache .data files are created.
+
+         If the path is a Java System Property it is replaced by
+         its value in the running VM.
+
+         The following properties are translated:
+         user.home - User's home directory
+         user.dir - User's current working directory
+         java.io.tmpdir - Default temp file path
+	-->
+	
+    <diskStore path="java.io.tmpdir"/>
+
+
+    <!--Default Cache configuration. These will applied to caches programmatically created through
+        the CacheManager.
+
+        The following attributes are required for defaultCache:
+
+        maxInMemory       - Sets the maximum number of objects that will be created in memory
+        eternal           - Sets whether elements are eternal. If eternal,  timeouts are ignored and the element
+                            is never expired.
+        timeToIdleSeconds - Sets the time to idle for an element before it expires.
+                            i.e. The maximum amount of time between accesses before an element expires
+                            Is only used if the element is not eternal.
+                            Optional attribute. A value of 0 means that an Element can idle for infinity
+        timeToLiveSeconds - Sets the time to live for an element before it expires.
+                            i.e. The maximum time between creation time and when an element expires.
+                            Is only used if the element is not eternal.
+        overflowToDisk    - Sets whether elements can overflow to disk when the in-memory cache
+                            has reached the maxInMemory limit.
+
+        -->
+
+  	<defaultCache
+            maxElementsInMemory="10000"
+            eternal="false"
+            timeToIdleSeconds="120"
+            timeToLiveSeconds="120"
+            overflowToDisk="true"
+            diskSpoolBufferSizeMB="30"
+            maxElementsOnDisk="10000000"
+            diskPersistent="false"
+            diskExpiryThreadIntervalSeconds="120"
+            memoryStoreEvictionPolicy="LRU"
+            />
+
+    <cache name="profileService-profile"
+        maxElementsInMemory="1000"
+        eternal="true"
+        overflowToDisk="false" />
+           
+</ehcache>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCETYPEType.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCETYPEType.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/xml/security/RESOURCETYPEType.java	(revision 48242)
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.3-b01-fcs 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2008.12.08 at 07:24:41 PM EET 
+//
+
+
+package gr.uoa.di.driver.xml.security;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RESOURCE_TYPEType complex type.
+ * 
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * 
+ * <pre>
+ * &lt;complexType name="RESOURCE_TYPEType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="value" use="required">
+ *         &lt;simpleType>
+ *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *             &lt;enumeration value="SecurityProfileDSResourceType"/>
+ *           &lt;/restriction>
+ *         &lt;/simpleType>
+ *       &lt;/attribute>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RESOURCE_TYPEType")
+public class RESOURCETYPEType {
+
+    @XmlAttribute(required = true)
+    protected String value;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/GenericDAO.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/GenericDAO.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/gr/uoa/di/driver/dao/GenericDAO.java	(revision 48242)
@@ -0,0 +1,65 @@
+package gr.uoa.di.driver.dao;
+
+import java.util.List;
+
+import eu.dnetlib.domain.SearchCriteria;
+
+
+/**
+ * A class used to access a data source and perform basic actions. 
+ * @author antleb@di.uoa.gr
+ *
+ * @param <T> The type of elements managed by this dao.
+ */
+public interface GenericDAO<T> {
+
+    /**
+     * Returns the element with the given id.
+     * @param id The element's id.
+     * @return the element with the given id.
+     * @throws DAOException 
+     */
+    T getById(String  id) throws DAOException;
+
+    /**
+     * Saves the given element.
+     * @param entity The element to save.
+     * @return The same element with its id changed
+     * @throws DAOException 
+     */
+    T save(T entity) throws DAOException;
+
+    /**
+     * Deletes the given element.
+     * @param entity The element to delete.
+     * @throws DAOException 
+     */
+    void delete(T entity) throws DAOException;
+    
+    /**
+     * Returns all elements.
+     * @return A ResultSetIterator with all of the elements.
+     * @throws DAOException 
+     */
+    List<T> getAll() throws DAOException;
+    
+    /**
+     * Returns all elements that comply with the restrictions described by the criteria
+     * object.
+     * @param criteria The searh criteria.
+     * @return A ResultSetIterator with the results of the query.
+     * @throws DAOException 
+     */
+    public List<T> search(SearchCriteria criteria) throws DAOException;
+    
+    /**
+     * Performs a search and returns the unique result. Throws a DAOException if
+     * there were more than one results.
+     * @param criteria the search criteria;
+     * @return the unique result of this query.
+     * @throws DAOException If there was a problem in the search or there were
+     * more than one results in the query.
+     */
+    public T getUniqueResult(SearchCriteria criteria) throws DAOException;
+    
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/Cql.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/Cql.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/Cql.java	(revision 48242)
@@ -0,0 +1,60 @@
+
+package eu.dnetlib.utils.cql;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.antlr.runtime.ANTLRReaderStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.RecognitionException;
+
+
+/**
+ * @author stoumpos
+ * 
+ */
+public class Cql {
+
+	/**
+	 * Parse cql query in <code>text</code> and return the respective cql
+	 * query object.
+	 * 
+	 * @param text
+	 *            The cql text.
+	 * @return The cql tree object.
+	 */
+	public static CqlQuery parse(String text) throws CqlException {
+
+		try {
+			StringReader reader = new StringReader(text);
+			ANTLRReaderStream input = new ANTLRReaderStream(reader);
+			CqlLexer lexer = new CqlLexer(input);
+			CommonTokenStream tokens = new CommonTokenStream(lexer);
+			CqlParser parser = new CqlParser(tokens);
+			
+			CqlQuery query = parser.cql().query;
+			
+			return query;
+
+		} catch (IOException ioe) {
+			throw new CqlException("Error building cql parser.", ioe);
+			
+		} catch (RecognitionException re) {
+			throw new CqlException("Error parsing cql query.", re);
+			
+		} catch (CqlRuntimeException cre) {
+			throw new CqlException("Error parsing cql query.", cre.getCause());			
+		}
+	}
+
+	/**
+	 * Writes <code>query</code> as string. The same functionality is possible
+	 * through {@link CqlQuery#toString()}.
+	 * 
+	 * @param query
+	 * @return
+	 */
+	public static String encode(CqlQuery query) {
+		return query.toString();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/ehcacher/repos-ehcache.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/ehcacher/repos-ehcache.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/ehcacher/repos-ehcache.xml	(revision 48242)
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="UTF-8"?>
+       
+<!--
+CacheManager Configuration
+==========================
+An ehcache.xml corresponds to a single CacheManager.
+
+See instructions below or the ehcache schema (ehcache.xsd) on how to configure.
+
+System property tokens can be specified in this file which are replaced when the configuration
+is loaded. For example multicastGroupPort=${multicastGroupPort} can be replaced with the
+System property either from an environment variable or a system property specified with a
+command line switch such as -DmulticastGroupPort=4446.
+
+The attributes of <ehcache> are:
+* name - an optional name for the CacheManager.  The name is optional and primarily used
+for documentation or to distinguish Terracotta clustered cache state.  With Terracotta
+clustered caches, a combination of CacheManager name and cache name uniquely identify a
+particular cache store in the Terracotta clustered memory.
+* updateCheck - an optional boolean flag specifying whether this CacheManager should check
+for new versions of Ehcache over the Internet.  If not specified, updateCheck="true".
+* monitoring - an optional setting that determines whether the CacheManager should
+automatically register the SampledCacheMBean with the system MBean server.
+Currently, this monitoring is only useful when using Terracotta clustering and using the 
+Terracotta Developer Console. With the "autodetect" value, the presence of Terracotta clustering 
+will be detected and monitoring, via the Developer Console, will be enabled. Other allowed values 
+are "on" and "off". The default is "autodetect". This setting does not perform any function when 
+used with JMX monitors. 
+* dynamicConfig - an optional setting that can be used to disable dynamic configuration of caches
+associated with this CacheManager.  By default this is set to true - i.e. dynamic configuration
+is enabled.  Dynamically configurable caches can have their TTI, TTL and maximum disk and
+in-memory capacity changed at runtime through the cache's configuration object.
+-->   
+<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:noNamespaceSchemaLocation="ehcache.xsd"
+         updateCheck="true" monitoring="autodetect"
+         dynamicConfig="true" >
+   
+    <!--
+    DiskStore configuration
+    =======================
+
+    The diskStore element is optional. To turn off disk store path creation, comment out the diskStore
+    element below.
+
+    Configure it if you have overflowToDisk or diskPersistent enabled for any cache.
+
+    If it is not configured, and a cache is created which requires a disk store, a warning will be
+     issued and java.io.tmpdir will automatically be used.
+
+    diskStore has only one attribute - "path". It is the path to the directory where
+    .data and .index files will be created.
+
+    If the path is one of the following Java System Property it is replaced by its value in the
+    running VM. For backward compatibility these should be specified without being enclosed in the ${token} 
+    replacement syntax.
+
+    The following properties are translated:
+    * user.home - User's home directory
+    * user.dir - User's current working directory
+    * java.io.tmpdir - Default temp file path
+    * ehcache.disk.store.dir - A system property you would normally specify on the command line
+      e.g. java -Dehcache.disk.store.dir=/u01/myapp/diskdir ...
+
+    Subdirectories can be specified below the property e.g. java.io.tmpdir/one
+
+    -->
+    <diskStore path="java.io.tmpdir"/>
+
+   
+    <!--
+    TransactionManagerLookup configuration
+    ======================================
+    This class is used by ehcache to lookup the JTA TransactionManager use in the application
+    using an XA enabled ehcache. If no class is specified then DefaultTransactionManagerLookup
+    will find the TransactionManager in the following order
+
+     *GenericJNDI (i.e. jboss, where the property jndiName controls the name of the TransactionManager object to look up) 
+     *Websphere
+     *Bitronix
+     *Atomikos
+   
+    You can provide you own lookup class that implements the net.sf.ehcache.transaction.manager.TransactionManagerLookup interface.
+    -->
+
+    <!--  <transactionManagerLookup class="net.sf.ehcache.transaction.manager.DefaultTransactionManagerLookup" properties="" propertySeparator=":"/>  -->
+
+    <!--
+    CacheManagerEventListener
+    =========================
+    Specifies a CacheManagerEventListenerFactory which is notified when Caches are added
+    or removed from the CacheManager.
+
+    The attributes of CacheManagerEventListenerFactory are:
+    * class - a fully qualified factory class name
+    * properties - comma separated properties having meaning only to the factory.
+
+    Sets the fully qualified class name to be registered as the CacheManager event listener.
+
+    The events include:
+    * adding a Cache
+    * removing a Cache
+
+    Callbacks to listener methods are synchronous and unsynchronized. It is the responsibility
+    of the implementer to safely handle the potential performance and thread safety issues
+    depending on what their listener is doing.
+
+    If no class is specified, no listener is created. There is no default.
+    -->
+
+    <cacheManagerEventListenerFactory class="" properties=""/>
+
+    <!--
+    TerracottaConfig
+    ========================
+    (Enable for Terracotta clustered operation)
+
+    Note: You need to install and run one or more Terracotta servers to use Terracotta clustering.
+    See http://www.terracotta.org/web/display/orgsite/Download.
+
+    Specifies a TerracottaConfig which will be used to configure the Terracotta
+    runtime for this CacheManager.
+   
+    Configuration can be specified in two main ways: by reference to a source of
+    configuration or by use of an embedded Terracotta configuration file.
+   
+    To specify a reference to a source (or sources) of configuration, use the url
+    attribute.  The url attribute must contain a comma-separated list of:
+    * path to Terracotta configuration file (usually named tc-config.xml)
+    * URL to Terracotta configuration file
+    * <server host>:<port> of running Terracotta Server instance
+   
+    Simplest example for pointing to a Terracotta server on this machine:
+    <terracottaConfig url="localhost:9510"/>
+   
+    Example using a path to Terracotta configuration file:
+    <terracottaConfig url="/app/config/tc-config.xml"/>
+   
+    Example using a URL to a Terracotta configuration file:
+    <terracottaConfig url="http://internal/ehcache/app/tc-config.xml"/>
+   
+    Example using multiple Terracotta server instance URLs (for fault tolerance):
+    <terracottaConfig url="host1:9510,host2:9510,host3:9510"/>
+
+    To embed a Terracotta configuration file within the ehcache configuration, simply
+    place a normal Terracotta XML config within the <terracottaConfig> element.
+   
+    Example:
+    <terracottaConfig>
+        <tc-config>
+            <servers>
+                <server host="server1" name="s1"/>
+                <server host="server2" name="s2"/>
+            </servers>
+            <clients>
+                <logs>app/logs-%i</logs>
+            </clients>          
+        </tc-config>
+    </terracottaConfig>
+   
+    For more information on the Terracotta configuration, see the Terracotta documentation.
+    -->
+   <!--  <terracottaConfig url="localhost:9510"/> -->
+
+    <!--
+    Cache configuration
+    ===================
+
+    The following attributes are required.
+
+    name:
+    Sets the name of the cache. This is used to identify the cache. It must be unique.
+
+    maxElementsInMemory:
+    Sets the maximum number of objects that will be created in memory
+
+    maxElementsOnDisk:
+    Sets the maximum number of objects that will be maintained in the DiskStore
+    The default value is zero, meaning unlimited.
+
+    eternal:
+    Sets whether elements are eternal. If eternal,  timeouts are ignored and the
+    element is never expired.
+
+    overflowToDisk:
+    Sets whether elements can overflow to disk when the memory store
+    has reached the maxInMemory limit.
+
+    The following attributes and elements are optional.
+
+    timeToIdleSeconds:
+    Sets the time to idle for an element before it expires.
+    i.e. The maximum amount of time between accesses before an element expires
+    Is only used if the element is not eternal.
+    Optional attribute. A value of 0 means that an Element can idle for infinity.
+    The default value is 0.
+
+    timeToLiveSeconds:
+    Sets the time to live for an element before it expires.
+    i.e. The maximum time between creation time and when an element expires.
+    Is only used if the element is not eternal.
+    Optional attribute. A value of 0 means that and Element can live for infinity.
+    The default value is 0.
+
+    diskPersistent:
+    Whether the disk store persists between restarts of the Virtual Machine.
+    The default value is false.
+
+    diskExpiryThreadIntervalSeconds:
+    The number of seconds between runs of the disk expiry thread. The default value
+    is 120 seconds.
+
+    diskSpoolBufferSizeMB:
+    This is the size to allocate the DiskStore for a spool buffer. Writes are made
+    to this area and then asynchronously written to disk. The default size is 30MB.
+    Each spool buffer is used only by its cache. If you get OutOfMemory errors consider
+    lowering this value. To improve DiskStore performance consider increasing it. Trace level
+    logging in the DiskStore will show if put back ups are occurring.
+
+    clearOnFlush:
+    whether the MemoryStore should be cleared when flush() is called on the cache.
+    By default, this is true i.e. the MemoryStore is cleared.
+
+    memoryStoreEvictionPolicy:
+    Policy would be enforced upon reaching the maxElementsInMemory limit. Default
+    policy is Least Recently Used (specified as LRU). Other policies available -
+    First In First Out (specified as FIFO) and Less Frequently Used
+    (specified as LFU)
+
+    Cache elements can also contain sub elements which take the same format of a factory class
+    and properties. Defined sub-elements are:
+
+    * cacheEventListenerFactory - Enables registration of listeners for cache events, such as
+      put, remove, update, and expire.
+
+    * bootstrapCacheLoaderFactory - Specifies a BootstrapCacheLoader, which is called by a
+      cache on initialisation to prepopulate itself.
+
+    * cacheExtensionFactory - Specifies a CacheExtension, a generic mechansim to tie a class
+      which holds a reference to a cache to the cache lifecycle.
+
+    * cacheExceptionHandlerFactory - Specifies a CacheExceptionHandler, which is called when
+      cache exceptions occur.
+
+    * cacheLoaderFactory - Specifies a CacheLoader, which can be used both asynchronously and
+      synchronously to load objects into a cache. More than one cacheLoaderFactory element
+      can be added, in which case the loaders form a chain which are executed in order. If a
+      loader returns null, the next in chain is called.
+                                  
+    Cache Event Listeners
+
+    All cacheEventListenerFactory elements can take an optional property listenFor that describes
+    which events will be delivered in a clustered environment.  The listenFor attribute has the
+    following allowed values:
+
+    * all - the default is to deliver all local and remote events
+    * local - deliver only events originating in the current node
+    * remote - deliver only events originating in other nodes
+
+    Example of setting up a logging listener for local cache events:
+
+    <cacheEventListenerFactory class="my.company.log.CacheLogger"
+        listenFor="local" />
+
+
+    Cache Exception Handling
+    ++++++++++++++++++++++++
+
+    By default, most cache operations will propagate a runtime CacheException on failure. An
+    interceptor, using a dynamic proxy, may be configured so that a CacheExceptionHandler can
+    be configured to intercept Exceptions. Errors are not intercepted.
+
+    It is configured as per the following example:
+
+      <cacheExceptionHandlerFactory class="com.example.ExampleExceptionHandlerFactory"
+                                      properties="logLevel=FINE"/>
+
+    Caches with ExceptionHandling configured are not of type Cache, but are of type Ehcache only,
+    and are not available using CacheManager.getCache(), but using CacheManager.getEhcache().
+
+
+    Cache Loader
+    ++++++++++++
+    
+    A default CacheLoader may be set which loads objects into the cache through asynchronous and
+    synchronous methods on Cache. This is different to the bootstrap cache loader, which is used
+    only in distributed caching.
+
+    It is configured as per the following example:
+
+        <cacheLoaderFactory class="com.example.ExampleCacheLoaderFactory"
+                                      properties="type=int,startCounter=10"/>
+
+    XA Cache
+    ++++++++
+
+    To enable an ehcache as a participant in the JTA Transaction, just have the following attribute
+   
+    transactionalMode="xa", otherwise the default is transactionalMode="off"
+
+    Cache Writer
+    ++++++++++++
+
+    A CacheWriter maybe be set to write to an underlying resource. Only one CacheWriter can be
+    been to a cache.
+
+    It is configured as per the following example for write-through:
+
+        <cacheWriter writeMode="write-through" notifyListenersOnException="true">
+            <cacheWriterFactory class="net.sf.ehcache.writer.TestCacheWriterFactory"
+                                properties="type=int,startCounter=10"/>
+        </cacheWriter>
+
+    And it is configured as per the following example for write-behind:
+
+        <cacheWriter writeMode="write-behind" minWriteDelay="1" maxWriteDelay="5"
+                     rateLimitPerSecond="5" writeCoalescing="true" writeBatching="true" writeBatchSize="1"
+                     retryAttempts="2" retryAttemptDelaySeconds="1">
+            <cacheWriterFactory class="net.sf.ehcache.writer.TestCacheWriterFactory"
+                                properties="type=int,startCounter=10"/>
+        </cacheWriter>
+
+    The cacheWriter element has the following attributes:
+    * writeMode: the write mode, write-through or write-behind
+
+    These attributes only apply to write-through mode:
+    * notifyListenersOnException: Sets whether to notify listeners when an exception occurs on a writer operation.
+
+    These attributes only apply to write-behind mode:
+    * minWriteDelay: Set the minimum number of seconds to wait before writing behind. If set to a value greater than 0,
+      it permits operations to build up in the queue. This is different from the maximum write delay in that by waiting
+      a minimum amount of time, work is always being built up. If the minimum write delay is set to zero and the
+      CacheWriter performs its work very quickly, the overhead of processing the write behind queue items becomes very
+      noticeable in a cluster since all the operations might be done for individual items instead of for a collection
+      of them.
+    * maxWriteDelay: Set the maximum number of seconds to wait before writing behind. If set to a value greater than 0,
+      it permits operations to build up in the queue to enable effective coalescing and batching optimisations.
+    * writeBatching: Sets whether to batch write operations. If set to true, writeAll and deleteAll will be called on
+      the CacheWriter rather than write and delete being called for each key. Resources such as databases can perform
+      more efficiently if updates are batched, thus reducing load.
+    * writeBatchSize: Sets the number of operations to include in each batch when writeBatching is enabled. If there are
+      less entries in the write-behind queue than the batch size, the queue length size is used.
+    * rateLimitPerSecond: Sets the maximum number of write operations to allow per second when writeBatching is enabled.
+    * writeCoalescing: Sets whether to use write coalescing. If set to true and multiple operations on the same key are
+      present in the write-behind queue, only the latest write is done, as the others are redundant.
+    * retryAttempts: Sets the number of times the operation is retried in the CacheWriter, this happens after the
+      original operation.
+    * retryAttemptDelaySeconds: Sets the number of seconds to wait before retrying an failed operation.
+
+    Cache Extension
+    +++++++++++++++
+
+    CacheExtensions are a general purpose mechanism to allow generic extensions to a Cache.
+    CacheExtensions are tied into the Cache lifecycle.
+
+    CacheExtensions are created using the CacheExtensionFactory which has a
+    <code>createCacheCacheExtension()</code> method which takes as a parameter a
+    Cache and properties. It can thus call back into any public method on Cache, including, of
+    course, the load methods.
+
+    Extensions are added as per the following example:
+
+         <cacheExtensionFactory class="com.example.FileWatchingCacheRefresherExtensionFactory"
+                             properties="refreshIntervalMillis=18000, loaderTimeout=3000,
+                                         flushPeriod=whatever, someOtherProperty=someValue ..."/>
+
+    Terracotta Clustering
+    +++++++++++++++++++++
+   
+    Cache elements can also contain information about whether the cache can be clustered with Terracotta.
+    The <terracotta> sub-element has the following attributes:
+
+    * clustered=true|false - indicates whether this cache should be clustered with Terracotta. By
+      default, if the <terracotta> element is included, clustered=true.
+    * valueMode=serialization|identity - indicates whether this cache should be clustered with
+      serialized copies of the values or using Terracotta identity mode.  By default, values will
+      be cached in serialization mode which is similar to other replicated Ehcache modes.  The identity
+      mode is only available in certain Terracotta deployment scenarios and will maintain actual object
+      identity of the keys and values across the cluster.  In this case, all users of a value retrieved from
+      the cache are using the same clustered value and must provide appropriate locking for any changes
+      made to the value (or objects referred to by the value).
+    * synchronousWrites=true|false - When set to true, clustered caches use
+      Terracotta SYNCHRONOUS WRITE locks. Asynchronous writes (synchronousWrites="false") maximize performance by
+      allowing clients to proceed without waiting for a "transaction received" acknowledgement from the server.
+      Synchronous writes (synchronousWrites="true") maximize data safety by requiring that a client receive server
+      acknowledgement of a transaction before that client can proceed. If coherence mode is disabled using
+      configuration (coherent="false") or through the coherence API, only asynchronous writes can occur
+      (synchronousWrites="true" is ignored). By default this value is false (i.e. clustered caches use normal
+      Terracotta WRITE locks).
+    * coherent=true|false - indicates whether this cache should have coherent reads and writes with guaranteed
+      consistency across the cluster.  By default, its value is true.  If this attribute is set to false
+      (or "incoherent" mode), values from the cache are read without locking, possibly yielding stale data.
+      Writes to a cache in incoherent mode are batched and applied without acquiring cluster-wide locks,
+      possibly creating inconsistent values across cluster. Incoherent mode is a performance optimization
+      with weaker concurrency guarantees and should generally be used for bulk-loading caches, for loading
+      a read-only cache, or where the application that can tolerate reading stale data. This setting overrides
+      coherentReads, which is deprecated.
+    * copyOnRead=true|false - indicates whether cache values are deserialized on every read or if the
+      materialized cache value can be re-used between get() calls. This setting is useful if a cache
+      is being shared by callers with disparate classloaders or to prevent local drift if keys/values
+      are mutated locally w/o putting back to the cache. NOTE: This setting is only relevant for caches
+      with valueMode=serialization
+
+    Simplest example to indicate clustering:
+        <terracotta/>
+       
+    To indicate the cache should not be clustered (or remove the <terracotta> element altogether):   
+        <terracotta clustered="false"/>
+
+    To indicate the cache should be clustered using identity mode:
+        <terracotta clustered="true" valueMode="identity"/>       
+
+    To indicate the cache should be clustered using incoherent mode for bulk load:
+        <terracotta clustered="true" coherent="false"/>
+
+    To indicate the cache should be clustered using synchronous-write locking level: 
+        <terracotta clustered="true" synchronousWrites="true"/> 
+    -->
+
+    <!--
+    Mandatory Default Cache configuration. These settings will be applied to caches
+    created programmtically using CacheManager.add(String cacheName).
+
+    The defaultCache has an implicit name "default" which is a reserved cache name.
+    -->
+    <defaultCache
+           maxElementsInMemory="1"
+           eternal="true"
+           overflowToDisk="true">
+    </defaultCache>
+    
+    <cache name="doar"
+       maxElementsInMemory="20000"
+       eternal="false"
+       timeToIdleSeconds="0"
+       memoryStoreEvictionPolicy="LRU"/>
+<!--        timeToLiveSeconds="604800" -->
+<!--        transactionalMode="off" -->
+
+<cache name="cris"
+       maxElementsInMemory="20000"
+       eternal="false"
+       timeToIdleSeconds="0"
+       overflowToDisk="true"
+       memoryStoreEvictionPolicy="LRU"/>
+</ehcache>
+
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/users/springContext-users-ldap.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/users/springContext-users-ldap.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/users/springContext-users-ldap.xml	(revision 48242)
@@ -0,0 +1,29 @@
+<?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:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	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
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+>
+
+	<bean id="userAPI" class="eu.dnetlib.users.UserApiLdapImpl" lazy-init="true">
+		<property name="ldapAddress" value="${services.users.ldap.address}" />
+		<property name="ldapPort" value="${services.users.ldap.port}" />
+		<property name="ldapUsername" value="${services.users.ldap.username}" />
+		<property name="ldapPassword" value="${services.users.ldap.password}" />
+		<property name="ldapUsersDN" value="${services.users.ldap.usersDN}" />
+	</bean>
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlQuery.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlQuery.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlQuery.java	(revision 48242)
@@ -0,0 +1,176 @@
+package eu.dnetlib.utils.cql;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author stoumpos
+ * 
+ */
+public class CqlQuery {
+
+	CqlClause root = null;
+
+	CqlQuery() {
+		this(null);
+	}
+
+	CqlQuery(CqlClause root) {
+		this.root = root;
+	}
+
+	public CqlClause getRoot() {
+		return root;
+	}
+
+	public void setRoot(CqlClause root) {
+		this.root = root;
+	}
+
+	@Override
+	public String toString() {
+		return (root == null) ? "null" : root.toCqlString();
+	}
+
+
+	/**
+	 * Return <code>true</code> if this query is a superset of
+	 * <code>query</code>, otherwise <code>false</code>.
+	 */
+	public boolean contains(CqlQuery query) {
+		return contains(root, query.getRoot());
+	}
+	
+	private boolean contains(CqlClause big, CqlClause small) {
+		
+		if (big.type ==  CqlClause.CqlClauseType.BOOLEAN && small.type ==  CqlClause.CqlClauseType.BOOLEAN) {
+			return containsBooleans((CqlBoolean) big, (CqlBoolean) small);
+		
+		} else if (big.type ==  CqlClause.CqlClauseType.BOOLEAN) {
+			// small is either term or relation
+			return containsBooleanTerm((CqlBoolean) big, small);
+			
+		} else if (small.type ==  CqlClause.CqlClauseType.BOOLEAN) {
+			// big is either term or relation
+			return containsTermBoolean(big, (CqlBoolean) small);
+			
+		} else if (big.type == CqlClause.CqlClauseType.RELATION && small.type == CqlClause.CqlClauseType.RELATION) {
+			CqlRelation bigRelation = (CqlRelation) big;
+			CqlRelation smallRelation = (CqlRelation) small;
+			return bigRelation.index.equals(smallRelation.index)
+				&& bigRelation.operator.equals(smallRelation.operator)
+				&& bigRelation.value.equals(smallRelation.value);
+			
+		} else if (big.type == CqlClause.CqlClauseType.TERM && small.type == CqlClause.CqlClauseType.TERM) {
+			return ((CqlTerm) big).term.equals(((CqlTerm) small).term);
+		}
+				
+		return false;
+	}
+
+	private boolean containsBooleans(CqlBoolean a, CqlBoolean b) {
+		if (a.getOperator().equalsIgnoreCase(b.getOperator())) {
+			
+			ArrayList<CqlClause> aList = unfold(a);
+			ArrayList<CqlClause> bList = unfold(b);
+			
+			if (a.operator.equalsIgnoreCase("and")) {
+				return subset(aList, bList);
+				
+			} else if (a.operator.equalsIgnoreCase("or")) {
+				return superset(bList, aList);
+				
+			} else {
+				throw new IllegalArgumentException(
+						"Unsupported operator: " + a.operator);
+			}
+			
+		} else {
+			return contains(a, b.getLeft()) && contains(a, b.getRight());
+				
+		}
+	}
+	
+	public ArrayList<CqlClause> unfold(CqlBoolean bool) {
+		
+		String op = bool.operator;
+		ArrayList<CqlClause> siblings = new ArrayList<CqlClause>();
+		
+		if (bool.left.type == CqlClause.CqlClauseType.BOOLEAN
+				&& ((CqlBoolean) bool.left).operator.equalsIgnoreCase(op)) {
+			siblings.addAll(unfold((CqlBoolean) bool.left));
+		} else {
+			siblings.add(bool.left);
+		}
+		
+		if (bool.right.type == CqlClause.CqlClauseType.BOOLEAN
+				&& ((CqlBoolean) bool.right).operator.equalsIgnoreCase(op)) {
+			siblings.addAll(unfold((CqlBoolean) bool.right));
+		} else {
+			siblings.add(bool.right);
+		}
+		
+		return siblings;
+	}
+
+	
+	private boolean superset(List<CqlClause> superset, List<CqlClause> subset) {
+		if (subset.size() > superset.size()) {
+			return false;
+		}
+		for (CqlClause sub : subset) {
+			boolean found = false;
+			for (CqlClause sup : superset) {
+				if (contains(sup, sub)) {
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	private boolean subset(List<CqlClause> subset, List<CqlClause> superset) {
+		if (subset.size() > superset.size()) {
+			return false;
+		}
+		for (CqlClause sub : subset) {
+			boolean found = false;
+			for (CqlClause sup : superset) {
+				if (contains(sub, sup)) {
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	private boolean containsBooleanTerm(CqlBoolean bool, CqlClause clause) {
+
+		if (bool.getOperator().equalsIgnoreCase("and")) {
+			// warn: assume clause is either term or relation
+			return false;
+		}
+		
+		return contains(bool.getLeft(), clause)
+				|| contains(bool.getRight(), clause);
+	}
+	
+	private boolean containsTermBoolean(CqlClause clause, CqlBoolean bool) {
+		
+		if (bool.getOperator().equalsIgnoreCase("or")) {
+			// warn: assume clause is either term or relation
+			return false;
+		}
+		
+		return contains(clause, bool.getLeft())
+				|| contains(clause, bool.getRight());
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlRelation.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlRelation.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/cql/CqlRelation.java	(revision 48242)
@@ -0,0 +1,63 @@
+/**
+ * 
+ */
+package eu.dnetlib.utils.cql;
+
+/**
+ * @author stoumpos
+ * 
+ */
+public class CqlRelation extends CqlClause {
+
+	String index = null;
+	String operator = null;
+	String value = null;
+
+	public CqlRelation() {
+		this(null, null, null);
+	}
+
+	public CqlRelation(String index, String operator, String value) {
+		super(CqlClauseType.RELATION);
+		this.index = index;
+		this.operator = operator;
+		this.value = value;
+	}
+
+	public String getIndex() {
+		return index;
+	}
+
+	public void setIndex(String index) {
+		this.index = index;
+	}
+
+	public String getOperator() {
+		return operator;
+	}
+
+	public void setOperator(String operator) {
+		this.operator = operator;
+	}
+
+	public String getValue() {
+		return value;
+	}
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+	@Override
+	public String toCqlString() {
+		StringBuffer buffer = new StringBuffer();
+		buffer.append(index).append(" ").append(operator);
+		buffer.append(" ").append(value);
+		return buffer.toString();
+	}
+
+	@Override
+	public String toNodeString(String prefix) {
+		return prefix + "relation: " + toCqlString();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/WebInterfaceLayoutResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/WebInterfaceLayoutResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/WebInterfaceLayoutResourceType.xsd	(revision 48242)
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType" />
+				<xs:element name="BODY" type="BODYType" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<xs:complexType name="HEADERType">
+		<xs:all>
+			<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType" />
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType" />
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType" />
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType" />
+			<xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType" />
+		</xs:all>
+	</xs:complexType>
+	
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="WebInterfaceLayoutResourceType" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="WebInterfaceLayoutResources" />
+					<xs:enumeration value="PendingDSResources"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="DATE_OF_CREATIONType">
+			<xs:attribute name="value" type="xs:dateTime" use="required" />
+		</xs:complexType>
+
+	<xs:complexType name="CONFIGURATIONType">
+		<xs:sequence>
+			<xs:element name="NAME" type="xs:string"></xs:element>
+			<xs:element name="MDFORMAT_NAME" type="xs:string"></xs:element>
+			<xs:element name="INDEX_LAYOUT_NAME" type="xs:string"></xs:element>
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="BODYType">
+		<xs:sequence minOccurs="1">
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType" />
+	
+			<xs:element name="CSS_FILE" type="xs:string"/>
+		
+		
+			<xs:sequence minOccurs="1">
+				<xs:element name="SUPPORTED_LOCALES" type="SuportedLocalesListType" minOccurs="1" maxOccurs="1"/>
+			</xs:sequence>
+
+			<xs:sequence maxOccurs="1">
+				<xs:element name="SEARCHABLES" type="SEARCHABLESType" />
+			</xs:sequence>
+		
+			<xs:element name="DOCUMENT_DESCRIPTIONS" type="MapType"/>
+			
+			<xs:sequence minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="BASE_COLLECTIONS" type="xs:string"/>
+			</xs:sequence>		
+	
+			<xs:element name="VIEW_COMMUNITIES" type="xs:boolean" />
+			<xs:element name="VIEW_COLLECTIONS" type="xs:boolean" />
+			<xs:element name="VIEW_REPOSITORIES" type="xs:boolean" />
+			<xs:element name="VIEW_ANNOUNCEMENTS" type="xs:boolean" />
+			<xs:element name="VIEW_USER_PROFILE" type="xs:boolean" />
+			<xs:element name="VIEW_SIMILAR_DOCUMENTS" type="xs:boolean" />
+			<xs:element name="VIEW_EPUBLICATIONS" type="xs:boolean" />			
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="SuportedLocalesListType">
+		<xs:sequence minOccurs="1" maxOccurs="unbounded">
+			<xs:element name="SUPPORTED_LOCALE" type="SUPPORTED_LOCALEType"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="SUPPORTED_LOCALEType">
+		<xs:sequence minOccurs="1" maxOccurs="1">
+			<xs:element name="LOCALE" type="xs:string"/>			
+		</xs:sequence>
+		<xs:attribute name="DEFAULT" type="xs:boolean"/>
+	</xs:complexType>
+
+	<xs:complexType name="SEARCHABLESType">
+		<xs:sequence minOccurs="0" maxOccurs="unbounded">
+			<xs:element name="SEARCHABLE" type="SEARCHABLEType"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="SEARCHABLEType">
+		<xs:all>
+			<xs:element name="NAME" type="xs:string"  minOccurs="1" />
+			<xs:element name="TYPE" type="SearchableTypeType" minOccurs="1" />
+			<xs:element name="INDEX_TYPE" type="xs:string" minOccurs="1" />
+			<xs:element name="DESCRIPTION_MAP" type="MapType" minOccurs="1" />
+			<xs:element name="SHORT_DESCRIPTION_MAP" type="MapType" minOccurs="1" />
+			<xs:element name="IN_SEARCH" type="xs:boolean" minOccurs="1" />
+			<xs:element name="IN_REFINE" type="xs:boolean" minOccurs="1" />
+			<xs:element name="IN_BROWSE" type="xs:boolean" minOccurs="1" />
+			<xs:element name="SEARCH_RANK" type="xs:int"  minOccurs="1" />
+			<xs:element name="REFINE_RANK" type="xs:int"  minOccurs="1" />
+			<xs:element name="BROWSE_RANK" type="xs:int"  minOccurs="1" />
+			<xs:element name="SEARCH_VOCABULARY" type="xs:string" minOccurs="0" />
+			<xs:element name="BROWSE_VOCABULARY" type="xs:string" minOccurs="0" />
+			<xs:element name="FROM_YEAR" type="xs:int" minOccurs="0" />
+			<xs:element name="TO_YEAR" type="xs:int"   minOccurs="0" />
+			<xs:element name="PERIOD_BACK_MAP" type="MapMapType" minOccurs="0" />
+		</xs:all>
+		<xs:attribute name="hidden" type="xs:boolean" default="false"/>
+	</xs:complexType>
+
+	<xs:simpleType name="SearchableTypeType">
+	  <xs:restriction base="xs:string">
+	    <xs:enumeration value="date"/>
+	    <xs:enumeration value="plain"/>	    
+	  </xs:restriction>
+	</xs:simpleType>
+	
+	<xs:complexType name="MapMapType">
+      <xs:sequence>
+        <xs:element name="mapEntry" type="MapMapEntryType" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+  	</xs:complexType>
+  	
+  	<xs:complexType name="MapMapEntryType">
+    	<xs:sequence>
+			<xs:element name="key" type="xs:anyType"/>
+			<xs:element name="value" type="MapEntryType" minOccurs="0" maxOccurs="unbounded"/>
+    	</xs:sequence>
+    </xs:complexType>
+  	
+	<xs:complexType name="MapType">
+      <xs:sequence>
+        <xs:element name="entry" type="MapEntryType" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+  	</xs:complexType>
+  
+	<xs:complexType name="MapEntryType">
+    	<xs:sequence>
+			<xs:element name="key" type="xs:anyType"/>
+			<xs:element name="value" type="xs:anyType"/>
+    	</xs:sequence>
+    </xs:complexType>
+	
+	<xs:complexType name="DocumentDescriptionType">
+		<xs:sequence minOccurs="1">
+			<xs:element name="view" type="xs:string" maxOccurs="1"/>
+			<xs:element name="documentFields" type="DocumentFieldListType" minOccurs="1" maxOccurs="1"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="DocumentFieldListType">
+		<xs:sequence>
+			<xs:element name="documentField" type="DocumentFieldType" minOccurs="1" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="DocumentFieldType">
+		<xs:sequence>
+			<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="descriptionMap" type="MapType" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="forceDescription" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="multipleValuesDescriptionMap" type="MapType" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="vocabulary" type="xs:string" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="switch" type="SwitchType" minOccurs="0" maxOccurs="1" />		
+			<xs:element name="displays" type="DisplayListType" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="maxCharacters" type="xs:int" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="cutpoint" type="CutpointType" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="cssClass" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="DisplayListType">
+		<xs:sequence>
+			<xs:element name="display" type="DisplayType" minOccurs="1" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="SwitchType">
+		<xs:sequence>
+			<xs:element name="documentFieldMap" type="MapType" minOccurs="1" maxOccurs="1"/>
+		</xs:sequence>
+			<xs:attribute name="conditionField" type="xs:string" use="required"/>
+			<xs:attribute name="default" type="xs:boolean"/>
+	</xs:complexType>
+	
+	<xs:simpleType name="CutpointType">
+	  <xs:restriction base="xs:string">
+	    <xs:enumeration value="line"/>
+		<xs:enumeration value="value"/>	    
+	    <xs:enumeration value="part"/>	    
+	  </xs:restriction>
+	</xs:simpleType>
+	
+	<xs:complexType name="DisplayType">
+		<xs:sequence>
+			<xs:element name="displayType" type="DisplayTypeType" minOccurs="1" maxOccurs="1"/>
+			<xs:element name="field" type="xs:string" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="label" type="xs:string" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="action" type="xs:string" minOccurs="0" maxOccurs="1"/>
+			<xs:element name="parameter" type="xs:string" minOccurs="0" maxOccurs="1"/>	
+			<xs:element name="descriptionMap" type="MapType" minOccurs="0" maxOccurs="1"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:simpleType name="DisplayTypeType">
+	  <xs:restriction base="xs:string">
+	    <xs:enumeration value="plain" />
+		<xs:enumeration value="search" />	    
+	    <xs:enumeration value="internalUrl" />
+	    <xs:enumeration value="externalUrl" />
+	    <xs:enumeration value="documentExternalUrl"/>	    
+	  </xs:restriction>
+	</xs:simpleType>
+</xs:schema>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RSSFeedDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RSSFeedDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RSSFeedDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,82 @@
+<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by pagano (CNR) --><!--W3C Schema generated by XMLSpy v2007 sp1 (http://www.altova.com)-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="RESOURCE_PROFILE">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="HEADER" type="HEADERType"/>
+                <xs:element name="BODY" type="BODYType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:complexType name="HEADERType">
+        <xs:all>
+            <xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType"/>
+            <xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType"/>
+            <xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType"/>
+            <xs:element name="RESOURCE_URI" type="RESOURCE_URIType"/>
+            <xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType"/>
+        </xs:all>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_IDENTIFIERType">
+        <xs:attribute name="value" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_TYPEType">
+        <xs:attribute name="value" use="required">
+            <xs:simpleType>
+                <xs:restriction base="xs:string">
+                    <xs:enumeration value="RSSFeedDSResourceType"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_KINDType">
+        <xs:attribute name="value" use="required">
+            <xs:simpleType>
+                <xs:restriction base="xs:string">
+                    <xs:enumeration value="RSSFeedDSResources"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_URIType">
+        <xs:attribute name="value" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="DATE_OF_CREATIONType">
+        <xs:attribute name="value" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="BODYType">
+        <xs:sequence>
+            <xs:element name="CONFIGURATION" type="CONFIGURATIONType"/>
+            <xs:element name="STATUS" type="xs:string"/>
+            <xs:element name="SECURITY_PARAMETERS" type="SECURITY_PARAMETERSType"/>
+            <xs:element name="INDEX" type="xs:int" minOccurs="0"/>
+            <xs:element name="ACTIVE" type="xs:boolean" minOccurs="0"/>
+            <xs:element name="TITLE" type="xs:string" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="CONFIGURATIONType">
+        <xs:sequence>
+            <xs:element name="RSSFEED_INFO" type="RSSFEED_INFOType"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="SECURITY_PARAMETERSType">
+        <xs:all>
+            <xs:element name="SECURITY_PARAMETER" type="xs:string"/>
+        </xs:all>
+    </xs:complexType>
+    <xs:complexType name="RSSFEED_INFOType">
+        <xs:sequence>
+            <xs:element name="USER_ID" type="xs:string"/>
+	    <xs:element name="CQLQUERY" type="xs:string"/>
+            <xs:element name="DATE_OF_LAST_VISIT" type="xs:string"/>
+	    <xs:element name="DOCUMENTS" type="DOCUMENTSType" maxOccurs="unbounded"/>                
+        </xs:sequence>	
+    </xs:complexType>    
+    <xs:complexType name="DOCUMENTSType">
+        <xs:sequence>
+            <xs:element name="DOCUMENT_ID" type="xs:string" minOccurs="1" maxOccurs="1"/>
+	    <xs:element name="IS_NEW" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>
+
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/DRIVERHostingNodeDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/DRIVERHostingNodeDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/DRIVERHostingNodeDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType"/>
+			<xs:element name="STATUS" type="STATUSType"/>
+			<xs:element ref="SECURITY_PARAMETERS"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CONFIGURATIONType">
+		<xs:all>
+			<xs:element name="HOST" type="HOSTType"/>
+			<xs:element name="CPU" type="CPUType"/>
+			<xs:element name="OPERATINGSYSTEM" type="OPERATINGSYSTEMType"/>
+      <xs:element ref="LOCATION"/>
+		</xs:all>
+	</xs:complexType>
+  <xs:element name="LOCATION">
+	  <xs:complexType>
+	    <xs:all>
+	      <xs:element name="LONGITUDE" type="xs:double"/>
+	      <xs:element name="LATITUDE" type="xs:double"/>
+	      <xs:element name="TIMEZONE">
+                <xs:simpleType>
+                  <xs:restriction base="xs:double">
+                    <xs:pattern value="-?[0-9]*(\.[05])?"/>
+                    <xs:minInclusive value="-12.0"/>
+                    <xs:maxInclusive value="12.0"/>
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+	    </xs:all>
+	  </xs:complexType>
+  </xs:element>
+	<xs:complexType name="HOSTType">
+		<xs:attribute name="name" type="xs:string" use="required"/>
+		<xs:attribute name="ip" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="CPUType">
+		<xs:attribute name="name" type="xs:string" use="required"/>
+		<xs:attribute name="number" type="xs:string" use="required"/>
+		<xs:attribute name="frequency" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="DATE_OF_CREATIONType">
+		<xs:attribute name="value" type="xs:dateTime" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="HEADERType">
+		<xs:sequence>
+			<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType"/>
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType"/>
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType"/>
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType"/>
+			<xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="LOAD_AVERAGEType">
+		<xs:attribute name="fifteenMinutes" type="xs:string" use="required"/>
+		<xs:attribute name="fiveMinutes" type="xs:string" use="required"/>
+		<xs:attribute name="oneMinute" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="MEMORYType">
+		<xs:attribute name="free" type="xs:string" use="required"/>
+		<xs:attribute name="swap" type="xs:string" use="required"/>
+		<xs:attribute name="totalMemory" type="xs:string" use="required"/>
+		<xs:attribute name="totalSwap" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="OPERATINGSYSTEMType">
+		<xs:attribute name="name" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="DRIVERHostingNodeDSResources"/>
+					<xs:enumeration value="PendingDSResources"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType"/>
+				<xs:element name="BODY" type="BODYType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="DRIVERHostingNodeDSResourceType"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:element name="SECURITY_PARAMETERS" type="xs:string"/>
+	<xs:complexType name="STATUSType">
+		<xs:sequence>
+			<xs:element name="MEMORY" type="MEMORYType"/>
+			<xs:element name="UPTIME" type="UPTIMEType"/>
+			<xs:element name="LOAD_AVERAGE" type="LOAD_AVERAGEType"/>
+			<xs:element name="LAST_UPDATE" type="LAST_UPDATEType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="UPTIMEType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="LAST_UPDATEType">
+		<xs:attribute name="value" type="xs:dateTime" use="required"/>
+	</xs:complexType>
+</xs:schema>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiDmsImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiDmsImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoApiDmsImpl.java	(revision 48242)
@@ -0,0 +1,899 @@
+package eu.dnetlib.repos;
+
+import eu.dnetlib.api.data.DatasourceManagerService;
+import eu.dnetlib.api.data.DatasourceManagerServiceException;
+import eu.dnetlib.domain.data.Repository;
+import eu.dnetlib.domain.data.RepositoryInterface;
+import gr.uoa.di.driver.util.ServiceLocator;
+import org.apache.log4j.Logger;
+
+import java.util.*;
+
+public class RepoApiDmsImpl implements RepoApi {
+    private static Logger logger = Logger.getLogger(RepoApiDmsImpl.class);
+    private final String[] filterKeys = {"openaire____::opendoar", "openaire____::re3data", "infrastruct_::openaire"};
+
+    private ServiceLocator<DatasourceManagerService> dmService = null;
+
+    @Override
+    public Repository getRepository(String id) throws Exception {
+        return this.getRepository(null, id);
+    }
+
+    @Override
+    public Repository getRepository(String officialName, String id) throws Exception {
+        logger.info("getting repository with name " + officialName + " and id: " + id + " from dms");
+        Repository retRepo = null;
+        try {
+            retRepo = dmService.getService().getDatasource(id);
+        } catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting repository with name " + officialName + " and id: " + id + " from dms", e);
+        }
+        return retRepo;
+    }
+
+    @Override
+    public void getRepositoryStats(Repository repo) throws Exception {
+        logger.info("getting repository stats for : " + repo.getOfficialName() + " from dms");
+
+        try {
+            dmService.getService().findNextScheduledExecution(repo.getId(), repo.getInterfaces().get(0).getId());
+
+        } catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting repo stats for : " + repo.getOfficialName() + " from openaire db", e);
+        }
+    }
+
+    @Override
+    public String getListLatestUpdate(String mode) throws Exception {
+        String date = null;
+        try {
+            logger.info("getting last collection date for " + mode);
+
+            date = dmService.getService().getDatasource("openaire____::" + mode).getInterfaces().get(0).getExtraFields().get("last_collection_date");
+            logger.debug("last collection date for opendoar: " + date);
+
+        } catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting last update date", e);
+        }
+        return date;
+    }
+
+    @Override
+    public String getNextScheduledExecution(String mode) throws Exception {
+        String date = null;
+        try {
+            date = dmService.getService().getDatasource("openaire____::" + mode).getInterfaces().get(0).getExtraFields().get("last_collection_date");
+            logger.debug("last collection date for opendoar: " + date);
+
+//				Date date1 = dmService.getService().findNextScheduledExecution("openaire____::opendoar", "api_________::opendoar::0");
+            Date date1 = dmService.getService().findNextScheduledExecution("opendoar____::2367", "api_________::opendoar____::2367::0");
+
+            logger.debug("next scheduled for opendoar: " + date1);
+
+        } catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting repo stats for opendoar", e);
+        }
+        return date;
+    }
+
+    @Override
+    public String storeRepository(Repository repo, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+        String retMessage = null;
+        logger.info("storing " + datatype + " repository with id: " + repo.getId());
+        try {
+            java.util.Date utilDate = new java.util.Date();
+            java.sql.Timestamp date = new java.sql.Timestamp(utilDate.getTime());
+
+            if (datatype.equalsIgnoreCase("opendoar") || datatype.equalsIgnoreCase("re3data")) {
+
+                String updateQuery = "UPDATE datasources SET englishname = '" + repo.getEnglishName() + "'," +
+                        " logourl = '" + repo.getLogoUrl() + "'," +
+                        " timezone = '" + repo.getTimezone() + "'," +
+                        " registeredby = '" + repo.getRegisteredBy() + "'," +
+                        " activationid = '" + repo.getActivationId() + "'," +
+                        " contactemail = '" + repo.getContactEmail() + "'," +
+                        " datasourceclass = '" + repo.getDatasourceClass() + "'" +
+                        " WHERE id = '" + repo.getId() + "'";
+
+                if (dmService.getService().updateSQL(repo.getId(), updateQuery, false))
+                    logger.debug("updated successfully");
+                else
+                    logger.error("error while updating: " + updateQuery);
+
+            } else if (datatype.equalsIgnoreCase("journal") || datatype.equalsIgnoreCase("aggregator")) {
+
+                logger.debug("looking if " + datatype + " " + repo.getOfficialName() + " is already in datasources");
+                if (dmService.getService().getDatasource(repo.getId()) != null) {
+                    retMessage = datatype + " '" + repo.getOfficialName() + "' is already in datasources.";
+                    repo.getInterfaces().clear();
+                    logger.debug(retMessage);
+                } else {
+                    logger.debug(datatype + " " + repo.getOfficialName() + " is not in datasources. Inserting..");
+
+                    repo.setDateOfCollection(date);
+                    repo.setAggregator("OPENAIRE");
+                    try {
+                        if (dmService.getService().addDatasource(repo))
+                            logger.debug("inserted successfully");
+                        else
+                            logger.error("error while inserting");
+                    } catch (DatasourceManagerServiceException e) {
+                        logger.error("error while inserting" + e);
+                    }
+                }
+            }
+            logger.debug("Inserting Interfaces");
+            for (RepositoryInterface iFace : repo.getInterfaces()) {
+                if (!iFace.getBaseUrl().isEmpty() && !iFace.getDesiredCompatibilityLevel().isEmpty()) {
+                    if (iFace.getId() != null && !iFace.getId().isEmpty()) {
+                        logger.debug("updating iface..");
+                        dmService.getService().updateBaseUrl(repo.getId(), iFace.getId(), iFace.getBaseUrl());
+                        if (!iFace.getAccessSet().isEmpty()) {
+                            logger.debug("set not empty: " + iFace.getAccessSet());
+                            dmService.getService().updateAccessParam(repo.getId(), iFace.getId(), "set", iFace.getAccessSet(), false);
+                        } else
+                            dmService.getService().deleteAccessParamOrExtraField(repo.getId(), iFace.getId(), "set");
+
+                        dmService.getService().updateContentDescription(repo.getId(), iFace.getId(), "metadata");
+                        if (datatype.equals("re3data")) {
+                            dmService.getService().updateAccessParam(repo.getId(), iFace.getId(), "format", "oai_datacite", false);
+                            iFace.setAccessFormat("oai_datacite");
+                        } else {
+                            dmService.getService().updateAccessParam(repo.getId(), iFace.getId(), "format", "oai_dc", false);
+                            iFace.setAccessFormat("oai_dc");
+                        }
+
+                        logger.debug("updated successfully");
+                    } else {
+                        logger.debug("adding new iface..");
+                        iFace.setContentDescription("metadata");
+                        iFace.setCompliance("UNKNOWN");
+                        if (datatype.equals("re3data"))
+                            iFace.setAccessFormat("oai_datacite");
+                        else
+                            iFace.setAccessFormat("oai_dc");
+                        if (repo.getDatasourceClass() != null && !repo.getDatasourceClass().isEmpty())
+                            iFace.setTypology(repo.getDatasourceClass());
+                        else {
+                            if (datatype.equalsIgnoreCase("journal"))
+                                iFace.setTypology("pubsrepository::journal");
+                            else if (datatype.equalsIgnoreCase("aggregator"))
+                                iFace.setTypology("aggregator::pubsrepository::unknown");
+                            else if (datatype.equalsIgnoreCase("opendoar"))
+                                iFace.setTypology("pubsrepository::unknown");
+                            else if (datatype.equalsIgnoreCase("re3data"))
+                                iFace.setTypology("datarepository::unknown");
+                        }
+                        iFace.setRemovable(true);
+                        iFace.setAccessProtocol("oai");
+                        iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']");
+                        iFace.setId("api_________::" + repo.getId() + "::" + UUID.randomUUID().toString().substring(0, 8));
+                        if (iFace.getAccessSet().isEmpty()) {
+                            logger.debug("set is empty: " + iFace.getAccessSet());
+                            iFace.removeAccessSet();
+                        }
+                        logger.debug("new ifaceId :" + iFace.getId());
+                        if (dmService.getService().addInterface(repo.getId(), iFace))
+                            logger.debug("added successfully");
+                        else
+                            logger.error("error while adding");
+                    }
+                    interfacesToRegister.add(iFace);
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error storing repo " + repo.getOfficialName() + " in dms", e);
+            throw e;
+        }
+        logger.debug("Finished storing " + datatype + " repository with id: " + repo.getId());
+        return retMessage;
+    }
+
+    @Override
+    public String editRepository(Repository repo, String officialNameOld, String idOld, String datatype) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    public List<Repository> getRepositories(String collectedFrom) throws Exception {
+        List<Repository> repoList = new ArrayList<Repository>();
+        try {
+            logger.info("getting repos from dms with collected from value: " + collectedFrom);
+
+            repoList = dmService.getService().listDatasourcesUsingFilter(null, null, null, collectedFrom);
+
+        } catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting repos from dms with collected from value: " + collectedFrom, e);
+            throw e;
+        }
+        return repoList;
+    }
+
+    public Map<String, Repository> getRepositoriesAsMap(String collectedFrom) throws Exception {
+        List<Repository> repoList = new ArrayList<Repository>();
+        Map<String, Repository> repoMap = new HashMap<String, Repository>();
+        try {
+            logger.info("getting repos from dms with collected from value: " + collectedFrom);
+
+            repoList = dmService.getService().listDatasourcesUsingFilter(null, null, null, collectedFrom);
+            for (Repository repo : repoList) {
+                repoMap.put(repo.getId(), repo);
+            }
+
+        } catch (DatasourceManagerServiceException e) {
+            logger.error("Error getting repos from dms with collected from value: " + collectedFrom, e);
+            throw e;
+        }
+        return repoMap;
+    }
+
+    @Override
+    public List<Map<String, String>> getRegisteredReposByOthers(String user_mail) {
+        List<Map<String, String>> res = new ArrayList<Map<String, String>>();
+
+        try {
+            logger.info("getting repos by others for user : " + user_mail);
+
+            res = this.getReposAsMap(user_mail, true);
+        } catch (Exception e) {
+            logger.error("Error getting repos by others for user : " + user_mail, e);
+
+        }
+        return res;
+    }
+
+    @Override
+    public List<Map<String, String>> getRepositoriesOfUser(String user_mail) throws Exception {
+        logger.info("getting repos for user : " + user_mail);
+        return this.getReposAsMap(user_mail, false);
+    }
+
+    private List<Map<String, String>> getReposAsMap(String user_mail, Boolean isAdmin) throws Exception {
+
+        logger.info("getting repos as map for user: " + user_mail);
+        List<Map<String, String>> res = new ArrayList<Map<String, String>>();
+        try {
+            for (Repository repo : this.getRepositoriesOfUser(user_mail, isAdmin)) {
+                Map<String, String> rep = new HashMap<String, String>();
+                rep.put("name", repo.getOfficialName());
+                rep.put("id", repo.getId());
+                rep.put("url", repo.getWebsiteUrl());
+                rep.put("mode", repo.getDatasourceType());
+                rep.put("registered", repo.isRegistered() ? "yes" : "no");
+                res.add(rep);
+            }
+        } catch (Exception e) {
+            logger.error("getting repos as map for user: " + user_mail, e);
+        }
+        return res;
+    }
+
+    @SuppressWarnings("unchecked")
+    public TreeMap<String, List<Map<String, String>>> getRepositoriesByCountry(String collectedFrom) throws Exception {
+        List<Repository> repoList = new ArrayList<Repository>();
+        TreeMap<String, List<Map<String, String>>> res = new TreeMap<String, List<Map<String, String>>>();
+
+        try {
+            logger.info("getting repos by country from dms with key: " + collectedFrom);
+
+            repoList = this.getRepositories(RepoTools.getFilterKey(collectedFrom));
+
+            res = RepoTools.splitReposByCountry(repoList);
+
+        } catch (Exception e) {
+            logger.error("Error getting repositories from dms with key: " + collectedFrom, e);
+            throw e;
+        }
+        return res;
+    }
+
+    @Override
+    public Map<String, List<Repository>> getRepositoriesPerCountry(String collectedFrom) throws Exception {
+        List<Repository> repoList;
+        Map<String, List<Repository>> res = new TreeMap<String, List<Repository>>();
+
+        try {
+            logger.info("getting repos by country from dms with key: " + collectedFrom);
+
+            repoList = this.getRepositories(RepoTools.getFilterKey(collectedFrom));
+
+            res = RepoTools.splitReposPerCountry(repoList);
+
+        } catch (Exception e) {
+            logger.error("Error getting repositories from dms with key: " + collectedFrom, e);
+            throw e;
+        }
+        return res;
+    }
+
+    @Override
+    public List<Repository> getRepositoriesOfCountry(String collectedFrom, String country) throws Exception {
+        try {
+            logger.info("getting repos for country " + country + " from dms with key: " + collectedFrom);
+            return this.getRepositoriesPerCountry(collectedFrom).get(country);
+        } catch (Exception e) {
+            logger.error("Error getting repos for country " + country + " from dms with key: " + collectedFrom, e);
+            throw e;
+        }
+    }
+
+    @Override
+    public Map<String, String> getRepoCompatibility(String officialName, String datasourceId) throws Exception {
+        Map<String, String> compMap = null;
+
+        Repository repo = dmService.getService().getDatasource(datasourceId);
+        try {
+            logger.debug("getting repository " + officialName + " compatibility from dms");
+
+            compMap = new HashMap<String, String>();
+            if (repo.getInterfaces().size() > 0) {
+                for (RepositoryInterface iFace : repo.getInterfaces()) {
+                    compMap.put(iFace.getCompliance(), iFace.getAccessSet());
+                    if (iFace.getCompliance().equalsIgnoreCase("openaire2.0")) {
+                        compMap.put("openaire2.0_data", "openaire_data");
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error getting repo " + officialName + " compatibility from dms", e);
+            throw e;
+        }
+
+        return compMap;
+    }
+
+    @Override
+    public List<Repository> getReposByIds(List<String> datasourceIds) throws Exception {
+        List<Repository> retRepos = new ArrayList<Repository>();
+        try {
+            logger.info("getting repos by ids from dms");
+            for (String datasourceId : datasourceIds) {
+                retRepos.add(this.getRepository(datasourceId));
+            }
+        } catch (Exception e) {
+            logger.error("error getting repos by ids from dms", e);
+        }
+        return retRepos;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public List<Repository> getRepositoriesOfUser(String user_mail, Boolean repoAdmin) throws Exception {
+        List<Repository> retRepos = new ArrayList<Repository>();
+        try {
+            if (!repoAdmin) {
+                logger.info("getting repositories registered by user: " + user_mail + " from dms");
+                for (String filterKey : filterKeys) {
+                    List<Repository> repoList = this.getRepositories(filterKey);
+                    for (Repository rep : repoList) {
+                        if (rep.getRegisteredBy().equalsIgnoreCase(user_mail) || rep.getContactEmail().equalsIgnoreCase(user_mail)) {
+                            retRepos.add(rep);
+                        }
+                    }
+                }
+            } else {
+                logger.debug("getting journal /agreg  registered by others  from dms");
+                List<Repository> repoList = this.getRepositories("infrastruct_::openaire");
+                for (Repository rep : repoList) {
+                    if (!rep.getRegisteredBy().equalsIgnoreCase(user_mail) && !rep.getContactEmail().equalsIgnoreCase(user_mail)) {
+                        retRepos.add(rep);
+                    }
+                }
+            }
+
+        } catch (Exception e) {
+            logger.error("error getting repositories registered by user: " + user_mail + " from dms", e);
+        }
+        return retRepos;
+    }
+
+    @Override
+    public boolean repoIsCompliant(String officialName) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean updateRepositoryInterfaceCompliance(String officialName,
+                                                       String datasourceId, String interfaceId, String desiredCompliance, String set, String baseUrl, String oldId)
+            throws Exception {
+        boolean ret = true;
+        try {
+            if (desiredCompliance.equalsIgnoreCase("openaire2.0_data"))
+                desiredCompliance = "openaire2.0";
+            logger.info("updating repository " + officialName + " compliance to : " + desiredCompliance);
+            if (oldId == null) {
+                dmService.getService().updateLevelOfCompliance(datasourceId, interfaceId, desiredCompliance);
+            } else {
+                logger.debug("Checking if old interface should be updated");
+                if (!desiredCompliance.equalsIgnoreCase("UNKNOWN") && (!desiredCompliance.equalsIgnoreCase("notCompatible"))) {
+                    logger.debug("updating old interface with new set/url");
+                    dmService.getService().updateBaseUrl(datasourceId, oldId, baseUrl);
+                    if (set.equalsIgnoreCase("none"))
+                        dmService.getService().deleteAccessParamOrExtraField(datasourceId, oldId, "set");
+                    else
+                        dmService.getService().updateAccessParam(datasourceId, oldId, "set", set, false);
+                    logger.debug("deleting new interface");
+                    dmService.getService().deleteInterface(datasourceId, interfaceId);
+
+                }
+                logger.debug("updating repository " + officialName + " compliance to : " + desiredCompliance);
+            }
+            java.util.Date utilDate = new java.util.Date();
+            java.sql.Timestamp date = new java.sql.Timestamp(utilDate.getTime());
+
+            String updateQuery = "UPDATE datasources SET activationid = " + null + "," +
+                    " dateofvalidation = '" + date + "'" +
+                    " WHERE id = '" + datasourceId + "'";
+
+            if (dmService.getService().updateSQL(datasourceId, updateQuery, false))
+                logger.debug("updated successfully");
+            else
+                logger.error("error while updating: " + updateQuery);
+
+        } catch (Exception e) {
+            logger.error("error connecting to dms to set a repo interface as openaire compliant " + officialName, e);
+            ret = false;
+            throw e;
+        }
+        return ret;
+    }
+
+    @Override
+    public boolean insertPubFileInterface(String dsId, RepositoryInterface iFace)
+            throws Exception {
+        try {
+
+            logger.info("storing pdf interface for repository: " + dsId);
+            dmService.getService().addInterface(dsId, iFace);
+            return true;
+        } catch (Exception e) {
+            logger.error("error storing pdf interface for repository: " + dsId, e);
+            return false;
+        }
+
+    }
+
+    @Override
+    public boolean updatePubFileInterface(String dsId, RepositoryInterface iFace)
+            throws Exception {
+        try {
+
+            logger.info("updating pdf interface for repository: " + dsId);
+            dmService.getService().deleteInterface(dsId, iFace.getId());
+            dmService.getService().addInterface(dsId, iFace);
+            return true;
+        } catch (Exception e) {
+            logger.error("error updating pdf interface for repository: " + dsId, e);
+            return false;
+        }
+    }
+
+    @Override
+    public List<String> getUrlsOfRepos(String user_mail, Boolean repoAdmin) throws Exception {
+        List<String> urls = new ArrayList<String>();
+        try {
+            logger.info("getting url from repositories registered by user: " + user_mail + " from dms");
+            for (Repository repo : this.getRepositoriesOfUser(user_mail, repoAdmin)) {
+                repo = this.getRepository(repo.getOfficialName(), repo.getId());
+                logger.debug("repo: " + repo.getOfficialName());
+//				logger.debug("#interfaces: " + repo.getInterfaces().size());
+                for (RepositoryInterface iFace : repo.getInterfaces()) {
+//					logger.debug("url: " + iFace.getBaseUrl() );
+                    if (iFace.getContentDescription().equalsIgnoreCase("metadata")) {
+                        if (iFace.getBaseUrl() != null && !iFace.getBaseUrl().isEmpty() && !urls.contains(iFace.getBaseUrl()) && iFace.getAccessProtocol().equalsIgnoreCase("oai"))
+                            urls.add(iFace.getBaseUrl());
+                    }
+                }
+            }
+        } catch (Exception e) {
+            logger.error("error getting url from repositories registered by user: " + user_mail + " from dms", e);
+            throw e;
+        }
+        return urls;
+    }
+
+    @Override
+    public String updateRepositoryInformation(Repository repo) throws Exception {
+        try {
+            logger.info("updating repository information");
+            String updateQuery = "UPDATE datasources SET englishname = '" + repo.getEnglishName() + "'," +
+                    " logourl = '" + repo.getLogoUrl() + "'," +
+                    " timezone = '" + repo.getTimezone() + "'," +
+                    " registeredby = '" + repo.getRegisteredBy() + "'," +
+                    " contactemail = '" + repo.getContactEmail() + "'," +
+                    " datasourceclass = '" + repo.getDatasourceClass() + "'" +
+                    " WHERE id = '" + repo.getId() + "'";
+
+            if (dmService.getService().updateSQL(repo.getId(), updateQuery, false)) {
+                logger.debug("updated successfully");
+                return "The information about your repository is successfully updated.";
+            } else {
+                logger.error("error while updating: " + updateQuery);
+                return "The information of your repository couldn't be updated. Please try again.";
+            }
+        } catch (Exception e) {
+            logger.error("error updating repository information", e);
+            throw e;
+        }
+
+    }
+
+    @Override
+    public String deleteRepositoryInterfaces(String dsId, List<RepositoryInterface> interfaces) throws Exception {
+        String retMessage = "";
+        try {
+            logger.info("deleting repository interfaces");
+            int countSelected = 0;
+            int countRemoved = 0;
+            for (RepositoryInterface iFace : interfaces) {
+                if (iFace.isDeleteApi())
+                    countSelected++;
+            }
+            if (countSelected == 0)
+                return "None interface was selected.";
+            if (countSelected == interfaces.size())
+                return "You cannot delete all interfaces! There must be at least one left.";
+
+            for (RepositoryInterface iFace : interfaces) {
+                logger.debug("delete API: " + iFace.isDeleteApi() + "--" + "removable API: " + iFace.isRemovable());
+                if (iFace.isDeleteApi()) {
+                    if (iFace.isRemovable()) {
+                        if (dmService.getService().deleteInterface(dsId, iFace.getId())) {
+                            logger.debug("iface deleted: " + iFace.getId());
+                            countRemoved++;
+                        } else {
+                            logger.error("error while deleting iFace: " + iFace.getId());
+                            retMessage += "Interface for url/set: " + iFace.getBaseUrl() + " / " + iFace.getAccessSet() + " couldn't be delete. Please try again.<br>";
+                        }
+                    } else {
+                        retMessage += "Interface for url/set: " + iFace.getBaseUrl() + " / " + iFace.getAccessSet() + " couldn't be deleted because it is the one registered in OpenDoar. <br>";
+                    }
+                }
+            }
+            retMessage += "You have successfully deleted " + countRemoved + " interface(s).";
+        } catch (Exception e) {
+            logger.error("error deleting repository interfaces", e);
+            throw e;
+        }
+        return retMessage;
+    }
+
+    @Override
+    public void deleteRepositoryInterfacesWithoutChecks(String dsId, List<RepositoryInterface> interfaces, String datatype) throws Exception {
+        try {
+            logger.info("deleting repository interfaces without checks");
+            for (RepositoryInterface iFace : interfaces) {
+                logger.info("deleting repository interface with url/set/id: " + iFace.getBaseUrl() + "/" + iFace.getAccessSet() + "/" + iFace.getId());
+                if (dmService.getService().deleteInterface(dsId, iFace.getId())) {
+                    logger.debug("iface deleted: " + iFace.getId());
+                } else {
+                    logger.error("error while deleting iFace: " + iFace.getId());
+                    throw new Exception("error on dms while deleting iFace: " + iFace.getId());
+                }
+            }
+        } catch (Exception e) {
+            logger.error("error deleting repository interfaces", e);
+            throw e;
+        }
+    }
+
+    @Override
+    public String updateRepositoryInterfaces(String dsId,
+                                             List<RepositoryInterface> interfaces,
+                                             List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister) throws Exception {
+        String importResult = "";
+        try {
+            logger.info("updating repository interfaces for datasource: " + dsId);
+            for (RepositoryInterface iFace : interfaces) {
+                if (iFace.isDeleteApi()) {
+                    for (RepositoryInterface iFaceOld : interfacesOld) {
+                        if (iFaceOld.getId().equals(iFace.getId())) {
+                            logger.error("old inteface found:");
+                            this.printInterface(iFaceOld);
+                            logger.error("new inteface:");
+                            this.printInterface(iFace);
+                            if (!(iFace.getDesiredCompatibilityLevel().equals("openaire2.0_data") && iFace.getCompliance().equals("openaire2.0")) && !iFace.getCompliance().equals(iFace.getDesiredCompatibilityLevel())) {
+                                logger.debug("Iface desired combatibility level changed.");
+                                if ((iFace.getBaseUrl().equals(iFaceOld.getBaseUrl())) && (iFace.getAccessSet().equals(iFaceOld.getAccessSet()))) {
+                                    logger.debug("Set and Url are the same.");
+                                    if (iFace.isRemovable()) {
+                                        logger.debug("deleting old iface..");
+                                        if (dmService.getService().deleteInterface(dsId, iFaceOld.getId()))
+                                            logger.debug("deleted successfully");
+                                        else
+                                            logger.error("error while deleting");
+                                        logger.debug("adding new iface..");
+                                        iFace.setContentDescription("metadata");
+                                        iFace.setCompliance("UNKNOWN");
+                                        iFace.setId("api_________::" + dsId + "::" + UUID.randomUUID().toString().substring(0, 8));
+                                        iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']");
+                                        if (iFace.getAccessSet().isEmpty()) {
+                                            logger.debug("set is empty: " + iFace.getAccessSet());
+                                            iFace.removeAccessSet();
+                                        }
+                                        logger.debug("new ifaceId :" + iFace.getId());
+                                        if (dmService.getService().addInterface(dsId, iFace)) {
+                                            logger.debug("added successfully");
+                                            interfacesToRegister.add(iFace);
+                                        } else
+                                            logger.error("error while adding");
+                                    } else {
+                                        logger.debug("Cannot delete old iface.. Values of old interface will be updated");
+                                        logger.debug("updating iface.. :" + iFace.getId());
+                                        dmService.getService().updateBaseUrl(dsId, iFace.getId(), iFace.getBaseUrl());
+                                        if (!iFace.getAccessSet().isEmpty())
+                                            dmService.getService().updateAccessParam(dsId, iFace.getId(), "set", iFace.getAccessSet(), false);
+                                        else
+                                            dmService.getService().deleteAccessParamOrExtraField(dsId, iFace.getId(), "set");
+                                        dmService.getService().updateContentDescription(dsId, iFace.getId(), "metadata");
+                                        if (datatype.equals("re3data")) {
+                                            dmService.getService().updateAccessParam(dsId, iFace.getId(), "format", "oai_datacite", false);
+                                            iFace.setAccessFormat("oai_datacite");
+                                        } else {
+                                            dmService.getService().updateAccessParam(dsId, iFace.getId(), "format", "oai_dc", false);
+                                            iFace.setAccessFormat("oai_dc");
+                                        }
+                                        logger.debug("added successfully");
+                                        interfacesToRegister.add(iFace);
+                                    }
+                                } else if ((!iFace.getBaseUrl().equals(iFaceOld.getBaseUrl())) || (!iFace.getAccessSet().equals(iFaceOld.getAccessSet()))) {
+                                    logger.debug("Set and/or Url changed. A new interface will be created");
+                                    logger.debug("adding new iface..The old one will be kept untouched.");
+                                    importResult += "Interface for url/set: " + iFace.getBaseUrl() + " / " + iFace.getAccessSet() + " seems to be completely new. As a result, a new interface will be created. If you wish, you can remove the old one later.<br>";
+                                    iFace.setContentDescription("metadata");
+                                    iFace.setCompliance("UNKNOWN");
+                                    iFace.setRemovable(true);
+                                    iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']");
+                                    if (!iFace.isRemovable())
+                                        iFace.getExtraFields().put("oldId", iFace.getId());
+                                    iFace.setId("api_________::" + dsId + "::" + UUID.randomUUID().toString().substring(0, 8));
+                                    if (iFace.getAccessSet().isEmpty()) {
+                                        logger.debug("set is empty: " + iFace.getAccessSet());
+                                        iFace.removeAccessSet();
+                                    }
+                                    logger.debug("new ifaceId :" + iFace.getId());
+                                    if (dmService.getService().addInterface(dsId, iFace)) {
+                                        logger.debug("added successfully");
+                                        interfacesToRegister.add(iFace);
+                                    } else
+                                        logger.error("error while adding");
+                                }
+                            } else if ((!iFace.getBaseUrl().equals(iFaceOld.getBaseUrl())) || (!iFace.getAccessSet().equals(iFaceOld.getAccessSet()))) {
+                                logger.debug("Iface url/set changed.");
+                                importResult += "Interface for url/set: " + iFace.getBaseUrl() + " / " + iFace.getAccessSet() + " is already compliant. As a result, a new interface will be created. If the new interface becomes compliant, then the old interface will be replaced. If not, both interfaces will be available. <br>";
+
+                                logger.debug("adding new iface..but keeping the old id to update later.");
+                                logger.debug("import result: " + importResult);
+                                iFace.setContentDescription("metadata");
+                                iFace.setCompliance("UNKNOWN");
+                                iFace.setRemovable(true);
+                                iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']");
+                                iFace.getExtraFields().put("oldId", iFace.getId());
+                                iFace.setId("api_________::" + dsId + "::" + UUID.randomUUID().toString().substring(0, 8));
+                                if (iFace.getAccessSet().isEmpty()) {
+                                    logger.debug("set is empty: " + iFace.getAccessSet());
+                                    iFace.removeAccessSet();
+                                }
+                                logger.debug("new ifaceId :" + iFace.getId());
+                                if (dmService.getService().addInterface(dsId, iFace)) {
+                                    logger.debug("added successfully");
+                                    interfacesToRegister.add(iFace);
+                                } else
+                                    logger.error("error while adding");
+                            }
+                            break;
+                        }
+                    }
+                }
+            }
+            logger.debug("import result final: " + importResult);
+        } catch (Exception e) {
+            logger.error("error updating repository interfaces for datasource: " + dsId, e);
+            throw e;
+        }
+        return importResult;
+
+    }
+
+    @Override
+    public RepositoryInterface updateRepositoryInterfaceWithoutChecks(String dsId, RepositoryInterface iFace, String datatype) throws Exception {
+        try {
+            logger.info("updating repository interface for datasource: " + dsId);
+            this.printInterface(iFace);
+            if (iFace.isRemovable()) {
+                logger.debug("deleting old iface..");
+                if (dmService.getService().deleteInterface(dsId, iFace.getId()))
+                    logger.debug("deleted successfully");
+                else
+                    logger.error("error while deleting");
+                logger.debug("adding new iface..");
+                iFace.setContentDescription("metadata");
+                iFace.setCompliance("UNKNOWN");
+                iFace.setId("api_________::" + dsId + "::" + UUID.randomUUID().toString().substring(0, 8));
+                iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']");
+                if (iFace.getAccessSet().isEmpty()) {
+                    logger.debug("set is empty: " + iFace.getAccessSet());
+                    iFace.removeAccessSet();
+                }
+                logger.debug("new ifaceId :" + iFace.getId());
+                if (dmService.getService().addInterface(dsId, iFace)) {
+                    logger.debug("added successfully");
+                } else {
+                    logger.error("error while adding");
+                    throw new Exception("Error on datasource manager service");
+                }
+            } else {
+                logger.debug("Cannot delete old iface.. Values of old interface will be updated");
+                logger.debug("updating iface.. :" + iFace.getId());
+                dmService.getService().updateBaseUrl(dsId, iFace.getId(), iFace.getBaseUrl());
+                if (!iFace.getAccessSet().isEmpty())
+                    dmService.getService().updateAccessParam(dsId, iFace.getId(), "set", iFace.getAccessSet(), false);
+                else
+                    dmService.getService().deleteAccessParamOrExtraField(dsId, iFace.getId(), "set");
+                dmService.getService().updateContentDescription(dsId, iFace.getId(), "metadata");
+                if (datatype.equals("re3data"))
+                    iFace.setAccessFormat("oai_datacite");
+                else
+                    iFace.setAccessFormat("oai_dc");
+                dmService.getService().updateAccessParam(dsId, iFace.getId(), "format", iFace.getAccessFormat(), false);
+                dmService.getService().updateLevelOfCompliance(dsId, iFace.getId(), "UNKNOWN");
+            }
+            logger.debug("updated successfully");
+            return iFace;
+        } catch (Exception e) {
+            logger.error("error updating repository interface for datasource: " + dsId, e);
+            throw e;
+        }
+    }
+
+    @Override
+    public String insertRepositoryInterfaces(String dsId,
+                                             List<RepositoryInterface> interfaces, List<RepositoryInterface> interfacesOld, String datatype, List<RepositoryInterface> interfacesToRegister)
+            throws Exception {
+        String importResult = "";
+        try {
+            logger.info("inserting repository interfaces for datasource: " + dsId);
+            logger.debug("interfacesNew size: " + interfaces.size());
+            logger.debug("cleaning up interfacesNew list from empty rows");
+            for (RepositoryInterface iFace : interfaces) {
+                if (!iFace.getBaseUrl().isEmpty() && !iFace.getDesiredCompatibilityLevel().isEmpty()) {
+                    logger.debug("adding new iface..");
+                    logger.debug("checking if there exists an interface with same url/set..");
+                    boolean exists = false;
+                    for (RepositoryInterface iFaceOld : interfacesOld) {
+                        if (iFaceOld.getBaseUrl().equals(iFace.getBaseUrl()) && iFaceOld.getAccessSet().equals(iFace.getAccessSet())) {
+                            logger.debug("there exists an interface with same url/set..");
+                            importResult += "Interface for url/set: " + iFace.getBaseUrl() + " / " + iFace.getAccessSet() + " could not be added. There already exists an interface with same url/set. You have to update he existing one or remove it before adding a new one.<br>";
+                            exists = true;
+                            break;
+                        }
+                    }
+                    iFace.setContentDescription("metadata");
+                    iFace.setCompliance("UNKNOWN");
+                    if (datatype.equalsIgnoreCase("journal"))
+                        iFace.setTypology("pubsrepository::journal");
+                    else if (datatype.equalsIgnoreCase("aggregator"))
+                        iFace.setTypology("aggregator::pubsrepository::unknown");
+                    else
+                        iFace.setTypology("pubsrepository::unknown");
+                    if (datatype.equals("re3data"))
+                        iFace.setAccessFormat("oai_datacite");
+                    else
+                        iFace.setAccessFormat("oai_dc");
+                    iFace.setAccessProtocol("oai");
+                    iFace.setRemovable(true);
+                    iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']");
+                    iFace.setId("api_________::" + dsId + "::" + UUID.randomUUID().toString().substring(0, 8));
+                    if (iFace.getAccessSet().isEmpty()) {
+                        logger.debug("set is empty: " + iFace.getAccessSet());
+                        iFace.removeAccessSet();
+                    }
+                    logger.debug("new ifaceId :" + iFace.getId());
+                    if (!exists) {
+                        if (dmService.getService().addInterface(dsId, iFace)) {
+                            logger.debug("added successfully");
+                            interfacesToRegister.add(iFace);
+                        } else
+                            logger.error("error while adding");
+                    }
+                }
+            }
+            logger.debug("interfaces size after cleanup: " + interfacesToRegister.size());
+        } catch (Exception e) {
+            logger.error("error inserting repository interfaces for datasource: " + dsId, e);
+            throw e;
+        }
+        return importResult;
+    }
+
+    @Override
+    public RepositoryInterface insertRepositoryInterfaceWithoutChecks(String dsId,
+                                                                      RepositoryInterface iFace, String datatype)
+            throws Exception {
+        try {
+            Repository repo = this.getRepository(dsId);
+            logger.info("inserting repository interface for datasource: " + dsId);
+            logger.debug("adding new iface..");
+            iFace.setContentDescription("metadata");
+            iFace.setCompliance("UNKNOWN");
+            if (repo.getDatasourceClass() == null) {
+                if (datatype.equalsIgnoreCase("journal"))
+                    iFace.setTypology("pubsrepository::journal");
+                else if (datatype.equalsIgnoreCase("aggregator"))
+                    iFace.setTypology("aggregator::pubsrepository::unknown");
+                else
+                    iFace.setTypology("pubsrepository::unknown");
+            } else {
+                iFace.setTypology(repo.getDatasourceClass());
+            }
+            if (datatype.equals("re3data"))
+                iFace.setAccessFormat("oai_datacite");
+            else
+                iFace.setAccessFormat("oai_dc");
+            iFace.setAccessProtocol("oai");
+            iFace.setRemovable(true);
+            iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']");
+            iFace.setId("api_________::" + dsId + "::" + UUID.randomUUID().toString().substring(0, 8));
+            if (iFace.getAccessSet().isEmpty()) {
+                logger.debug("set is empty: " + iFace.getAccessSet());
+                iFace.removeAccessSet();
+            }
+            logger.debug("new ifaceId :" + iFace.getId());
+            if (dmService.getService().addInterface(dsId, iFace))
+                logger.debug("added successfully");
+            else
+                logger.error("error while adding");
+
+            return iFace;
+        } catch (Exception e) {
+            logger.error("error inserting repository interface for datasource: " + dsId, e);
+            throw e;
+        }
+    }
+
+    @Override
+    public boolean unregisterRepository(Repository repo) throws Exception {
+        logger.info("unregistering repository " + repo.getOfficialName());
+        try {
+            for (RepositoryInterface iFace : repo.getInterfaces()) {
+                if (iFace.isRemovable()) {
+                    logger.debug("deleting iface..");
+                    if (dmService.getService().deleteInterface(repo.getId(), iFace.getId()))
+                        logger.debug("deleted successfully");
+                    else
+                        logger.error("error while deleting");
+                } else {
+                    logger.debug("updating iface compliance to UNKNOWN");
+                    dmService.getService().updateLevelOfCompliance(repo.getId(), iFace.getId(), "UNKNOWN");
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error unregistering repository " + repo.getOfficialName(), e);
+            return false;
+        }
+        return true;
+
+    }
+
+    private void printInterface(RepositoryInterface iFace) {
+        logger.debug("baseUrl: " + iFace.getBaseUrl());
+        logger.debug("format: " + iFace.getAccessFormat());
+        logger.debug("typology: " + iFace.getTypology());
+        logger.debug("set: " + iFace.getAccessSet());
+        logger.debug("des_comp_level: " + iFace.getDesiredCompatibilityLevel());
+        logger.debug("cur_comp_level: " + iFace.getCompliance());
+        logger.debug("protocol: " + iFace.getAccessProtocol());
+        logger.debug("api_id: " + iFace.getId());
+        logger.debug("removable: " + iFace.isRemovable());
+        logger.debug("deleteApi: " + iFace.isDeleteApi());
+    }
+
+    public ServiceLocator<DatasourceManagerService> getDmService() {
+        return dmService;
+    }
+
+    public void setDmService(ServiceLocator<DatasourceManagerService> dmService) {
+        this.dmService = dmService;
+    }
+
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/HashCodeUtil.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/HashCodeUtil.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/HashCodeUtil.java	(revision 48242)
@@ -0,0 +1,123 @@
+package eu.dnetlib.util;
+
+import java.lang.reflect.Array;
+
+/**
+ * Collected methods which allow easy implementation of hashCode.
+ * 
+ * Example use case:
+ * 
+ * <pre>
+ * public int hashCode()
+ * {
+ * 	int result = HashCodeUtil.SEED;
+ * 	//collect the contributions of various fields
+ * 	result = HashCodeUtil.hash(result, fPrimitive);
+ * 	result = HashCodeUtil.hash(result, fObject);
+ * 	result = HashCodeUtil.hash(result, fArray);
+ * 	return result;
+ * }
+ * </pre>
+ */
+public final class HashCodeUtil
+{
+
+	/**
+	 * An initial value for a hashCode, to which is added contributions from fields. Using a non-zero value decreases collisions of <code>hashCode</code> values.
+	 */
+	public static final int SEED = 23;
+
+	/**
+	 * booleans.
+	 */
+	public static int hash(int aSeed, boolean aBoolean)
+	{
+		return firstTerm(aSeed) + (aBoolean ? 1 : 0);
+	}
+
+	/**
+	 * chars.
+	 */
+	public static int hash(int aSeed, char aChar)
+	{		
+		return firstTerm(aSeed) + (int) aChar;
+	}
+
+	/**
+	 * ints.
+	 */
+	public static int hash(int aSeed, int aInt)
+	{
+		/*
+		 * Implementation Note Note that byte and short are handled by this method, through implicit conversion.
+		 */
+		System.out.println("int...");
+		return firstTerm(aSeed) + aInt;
+	}
+
+	/**
+	 * longs.
+	 */
+	public static int hash(int aSeed, long aLong)
+	{		
+		return firstTerm(aSeed) + (int) (aLong ^ (aLong >>> 32));
+	}
+
+	/**
+	 * floats.
+	 */
+	public static int hash(int aSeed, float aFloat)
+	{
+		return hash(aSeed, Float.floatToIntBits(aFloat));
+	}
+
+	/**
+	 * doubles.
+	 */
+	public static int hash(int aSeed, double aDouble)
+	{
+		return hash(aSeed, Double.doubleToLongBits(aDouble));
+	}
+
+	/**
+	 * @param aObject is a possibly-null object field, and possibly an array.
+	 * 
+	 * If @param aObject is an array, then each element may be a primitive or a possibly-null object.
+	 */
+	public static int hash(int aSeed, Object aObject)
+	{
+		int result = aSeed;
+		if (aObject == null)
+		{
+			result = hash(result, 0);
+		}
+		else if (!isArray(aObject))
+		{
+			result = hash(result, aObject.hashCode());
+		}
+		else
+		{
+			int length = Array.getLength(aObject);
+			for (int idx = 0; idx < length; ++idx)
+			{
+				Object item = Array.get(aObject, idx);
+				// recursive call!
+				result = hash(result, item);
+			}
+		}
+		return result;
+	}
+
+	// / PRIVATE ///
+	private static final int fODD_PRIME_NUMBER = 37;
+
+	private static int firstTerm(int aSeed)
+	{
+		return fODD_PRIME_NUMBER * aSeed;
+	}
+
+	private static boolean isArray(Object aObject)
+	{
+		return aObject.getClass().isArray();
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/users/UserApiLdapImpl.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/users/UserApiLdapImpl.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/users/UserApiLdapImpl.java	(revision 48242)
@@ -0,0 +1,439 @@
+package eu.dnetlib.users;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.ldap.sdk.Attribute;
+import com.unboundid.ldap.sdk.DN;
+import com.unboundid.ldap.sdk.Entry;
+import com.unboundid.ldap.sdk.Filter;
+import com.unboundid.ldap.sdk.LDAPConnection;
+import com.unboundid.ldap.sdk.Modification;
+import com.unboundid.ldap.sdk.ModificationType;
+import com.unboundid.ldap.sdk.SearchRequest;
+import com.unboundid.ldap.sdk.SearchResult;
+import com.unboundid.ldap.sdk.SearchResultEntry;
+import com.unboundid.ldap.sdk.SearchScope;
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public class UserApiLdapImpl implements UserApi {
+
+	transient Logger logger = Logger.getLogger(UserApiLdapImpl.class);
+
+	private int ldapPort = 0;
+	private String ldapAddress;
+	private String ldapUsername;
+	private String ldapPassword;
+	private String ldapUsersDN;
+
+	@Override
+	public boolean activateUser(String activationId) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("activating user with activationId " + activationId);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", activationId);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+
+			if ( searchResult.getSearchEntries().size() > 0	) {
+			
+				for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+					dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+				}
+
+				Modification mod1 = new Modification(ModificationType.REPLACE, "JoomlaBlockUser", "0");
+				Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+				connection.modify(dn, mod1, mod2);
+				return true;
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String addUser(String username, String email, String password, String firstName, String lastName, String institution) throws Exception {
+		logger.debug("adding user " + username + " " + email + " to ldap");
+		Attribute cn = new Attribute("cn", username);
+		Attribute displayName = new Attribute("displayName", firstName + " " + lastName);
+		Attribute mail = new Attribute("mail", email);
+		Attribute givenName = new Attribute("givenName", firstName);
+		Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
+		Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
+		Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
+		Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create(password));
+		Attribute sn = new Attribute("sn", lastName);
+		Attribute uid = new Attribute("uid", username);
+		
+			
+		// Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
+		String activationId = UUID.randomUUID().toString();
+		Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
+		LDAPConnection connection = null;
+		try {
+			DN dn = new DN("uid=" + username + "," + ldapUsersDN);
+			Entry entry;
+			if ((institution != null) && (institution.length() > 0)) {
+				Attribute o = new Attribute("o", institution);
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid, x500UniqueIdentifier, o);
+						
+			} else {
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
+																																								 * ,
+																																								 * ,
+																																								 * ,
+																																								 * joomlaUserParams
+																																								 */, x500UniqueIdentifier);
+			}
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			connection.add(entry);
+
+			return activationId;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " entered a correct password when logging in");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
+					return true;
+			}
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("editing user " + user.getEmail());
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", user.getEmail());
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "displayName", user.getFirstname() + " " + user.getLastname());
+			Modification mod2 = new Modification(ModificationType.REPLACE, "givenName", user.getFirstname());
+			Modification mod3 = new Modification(ModificationType.REPLACE, "sn", user.getLastname());
+			Modification mod4 = new Modification(ModificationType.REPLACE, "o", user.getInstitution());
+			connection.modify(dn, mod1, mod2, mod3, mod4);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting user " + userIdentifier + " from ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", userIdentifier);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail", "givenName", "sn", "o", "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			UserProfile profile = new UserProfile();
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				profile.setEmail(entry.getAttributeValue("mail"));
+				profile.setFirstname(entry.getAttributeValue("givenName"));
+				profile.setLastname(entry.getAttributeValue("sn"));
+				profile.setInstitution(entry.getAttributeValue("o"));
+				profile.setUsername(entry.getAttributeValue("uid"));
+			}
+			return profile;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is an administrator");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaGroup");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				for (String role : entry.getAttributeValues("JoomlaGroup"))
+					if (role.equals("validatorAdmin"))
+						return true;
+			}
+			logger.debug(email + " is not administrator");
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is activated");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaBlockUser");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				int val = entry.getAttributeValueAsInteger("JoomlaBlockUser");
+				if (val == 0)
+					return true;
+				else
+					return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+		return false;
+	}
+
+	@Override
+	public String prepareResetPassword(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("preparing reset password for user " + email);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			String uuid = UUID.randomUUID().toString();
+			Modification mod = new Modification(ModificationType.REPLACE, "employeeNumber", uuid);
+			connection.modify(dn, mod);
+			return uuid;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void resetPassword(String uuid, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", uuid);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "userPassword", Joomla15PasswordHash.create(password));
+			Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+			connection.modify(dn, mod1, mod2);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+
+			SearchResult searchResult = connection.search(searchRequest);
+			if (!searchResult.getSearchEntries().isEmpty())
+				return true;
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + username + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			if (!searchResult.getSearchEntries().isEmpty()) {
+				return true;
+			}
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting email for user " + username);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				return entry.getAttributeValue("mail");
+			}
+			return null;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	public void setLdapPort(int ldapPort) {
+		this.ldapPort = ldapPort;
+	}
+
+	public void setLdapAddress(String ldapAddress) {
+		this.ldapAddress = ldapAddress;
+	}
+
+	public void setLdapUsername(String ldapUsername) {
+		this.ldapUsername = ldapUsername;
+	}
+
+	public void setLdapPassword(String ldapPassword) {
+		this.ldapPassword = ldapPassword;
+	}
+
+	public void setLdapUsersDN(String ldapUsersDN) {
+		this.ldapUsersDN = ldapUsersDN;
+	}
+}
+
+class Joomla15PasswordHash 
+{
+   public static boolean check(String passwd,String dbEntry) {
+      String hashed = "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+      if(dbEntry.equals(hashed))
+    	  return true;
+      else
+    	  return false;
+   }
+
+   static Random _rnd;
+
+   public static String create(String passwd) {
+	   return "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+   }
+
+   /** Takes the MD5 hash of a sequence of ASCII or LATIN1 characters,
+    *  and returns it as a 32-character lowercase hex string.
+    *
+    *  Equivalent to MySQL's MD5() function 
+    *  and to perl's Digest::MD5::md5_hex(),
+    *  and to PHP's md5().
+    *
+    *  Does no error-checking of the input,  but only uses the low 8 bits
+    *  from each input character.
+    */
+   public static String md5(String data) {
+      byte[] bdata = new byte[data.length()]; int i; byte[] hash;
+
+      for (i=0;i<data.length();i++) bdata[i]=(byte)(data.charAt(i)&0xff );
+
+      try {
+         MessageDigest md5er = MessageDigest.getInstance("MD5");
+         hash = md5er.digest(bdata);
+      } catch (GeneralSecurityException e) { throw new RuntimeException(e); }
+
+      StringBuffer r = new StringBuffer(32);
+      for (i=0;i<hash.length;i++) {
+         String x = Integer.toHexString(hash[i]&0xff);
+         if (x.length()<2) r.append("0");
+         r.append(x);
+      }
+      return r.toString();      
+   }
+   
+   public static byte[] pack(String md5) {
+	    byte[] bytes = new byte[16];
+	    int j = 0;
+	    for(int i=0; i < 31; i+=2) {
+	    	bytes[j] = (byte) Integer.parseInt(md5.charAt(i)+""+md5.charAt(i+1),16);
+	    	j++;
+	    }
+	    return bytes;
+	}
+}
+
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupClients.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupClients.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupClients.xml	(revision 48242)
@@ -0,0 +1,81 @@
+<?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-4.0.xsd"
+
+	default-autowire="no" default-lazy-init="false">
+	
+	<!-- 
+		Kept for compatibility reasons. TODO: remove pending repo lookup.
+		For now, no caching for pending repositories. 
+	-->
+	<bean id="pendingRepositoryLookup" 
+		class="gr.uoa.di.driver.enabling.islookup.ISLookUpImpl">
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.RepositoryXmlConverter">
+			 <constructor-arg index="0" value="PENDING" />
+			 </bean>
+		</property>
+		<property name="lookupLocator" ref="lookupServiceLocator" />
+	</bean>
+	
+	<bean id="securityLookUp" class="gr.uoa.di.driver.enabling.islookup.ISLookUpImpl" lazy-init="true">
+		<property name="converter">
+			<bean class="gr.uoa.di.driver.xml.SecurityProfileXmlConverter" />
+		</property>
+		<property name="lookupLocator" ref="lookupServiceLocator" />
+	</bean>
+	
+	<bean id="userLookUp" factory-bean="lookUpFactory"
+		factory-method="createISLookUp">
+		<constructor-arg value="eu.dnetlib.domain.functionality.UserProfile" />
+	</bean>
+	
+	<bean id="collectionLookUp" factory-bean="lookUpFactory"
+		factory-method="createISLookUp">
+		<constructor-arg value="eu.dnetlib.domain.functionality.Collection" />
+	</bean>
+	
+	<bean id="communityLookUp" factory-bean="lookUpFactory"
+		factory-method="createISLookUp"> 
+		<constructor-arg value="eu.dnetlib.domain.functionality.Community" />
+	</bean>
+	
+	<bean id="repositoryLookup" factory-bean="lookUpFactory"
+		factory-method="createISLookUp">
+		<constructor-arg value="eu.dnetlib.domain.data.Repository" />
+	</bean>
+
+	<bean id="recommendationLookup" factory-bean="lookUpFactory"
+		factory-method="createISLookUp"> 
+		<constructor-arg value="eu.dnetlib.domain.functionality.Recommendation" />
+	</bean>
+	
+	<bean id="queryHashLookup" factory-bean="lookUpFactory"
+		factory-method="createISLookUp">
+		<constructor-arg value="eu.dnetlib.domain.functionality.QueryHash" />
+	</bean>
+
+	<bean id="rssFeedLookup" factory-bean="lookUpFactory"
+		factory-method="createISLookUp">
+		<constructor-arg value="eu.dnetlib.domain.functionality.RSSFeed" />
+	</bean>
+	
+	<bean id="vocabularyLookUp" factory-bean="lookUpFactory"
+		factory-method="createISLookUp"> 
+		<constructor-arg value="eu.dnetlib.domain.enabling.Vocabulary" />
+	</bean>
+	
+	<bean id="webLayoutLookUp" factory-bean="lookUpFactory"
+		factory-method="createISLookUp">
+		<constructor-arg value="eu.dnetlib.domain.functionality.WebInterfaceLayout" />
+	</bean>
+
+	<bean id="mdfLookUp" factory-bean="lookUpFactory"
+		factory-method="createISLookUp">
+		<constructor-arg value="eu.dnetlib.domain.data.MDFormatDataStructure" />
+	</bean>
+</beans>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupFactory.properties
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupFactory.properties	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupFactory.properties	(revision 48242)
@@ -0,0 +1 @@
+services.common.nkua.useCache = true
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-dms-cached.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-dms-cached.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-dms-cached.xml	(revision 48242)
@@ -0,0 +1,68 @@
+<?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:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core" xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template" xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+
+	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
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="repoApiDms" class="eu.dnetlib.repos.RepoApiDmsImpl">
+		<property name="dmService" ref="datasourceManagerServiceLocator" />
+	</bean>
+
+	<bean id="repoAPI" class="eu.dnetlib.repos.RepoApiCacheImpl" depends-on="datasourceManagerServiceLocator">
+		<property name="cacheProvider" ref="cacheProvider" />
+		<property name="coreRepoApi" ref="repoApiDms" />
+	</bean>
+
+	<!--<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">-->
+    	<!--<property name="configLocation"  value="/eu/dnetlib/repos/ehcacher/repos-ehcache.xml"/>-->
+	<!--</bean>-->
+
+	<bean id="cacheEntryFactory" class="eu.dnetlib.repos.ehcacher.CacheEntryFactoryImpl">
+		<property name="repoAPI" ref="repoApiDms" />
+	</bean>
+
+	<bean id="cacheProvider" class="eu.dnetlib.repos.ehcacher.CacheProvider" scope="singleton" init-method="start">
+    	<property name="cacheManager" ref="cacheManager" />
+    	<property name="updatingFactory" ref="cacheEntryFactory" />
+	</bean>
+
+</beans>
+<!-- 	<bean id="joomla.dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> -->
+<!-- 		<property name="driverClassName" value="${services.validator.joomla.driverClassName}" /> -->
+<!-- 		<property name="url" value="${services.validator.joomla.url}" /> -->
+<!-- 		<property name="username" value="${services.validator.joomla.username}" /> -->
+<!-- 		<property name="password" value="${services.validator.joomla.password}" /> -->
+
+<!-- 		<property name="maxIdle" value="10"/> -->
+<!-- 		<property name="maxActive" value="100"/> -->
+<!-- 		<property name="maxWait" value="10000"/> -->
+<!-- 		<property name="validationQuery" value="select 1"/> -->
+<!-- 		<property name="testOnBorrow" value="true"/> -->
+<!-- 		<property name="testWhileIdle" value="true"/> -->
+<!-- 		<property name="timeBetweenEvictionRunsMillis" value="1200000"/> -->
+<!-- 		<property name="minEvictableIdleTimeMillis" value="1800000"/> -->
+<!-- 		<property name="numTestsPerEvictionRun" value="5"/> -->
+<!-- 		<property name="defaultAutoCommit" value="false"/> -->
+<!-- 	</bean> -->
+
+
+<!-- 	<bean id="joomla2ldap" class="gr.uoa.di.validator.api.ldap.Joomla2Ldap"> -->
+<!-- 		<property name="joomlaDatasource" ref="joomla.dataSource" /> -->
+<!-- 		<property name="ldapAddress" value="${services.validator.ldap.address}" /> -->
+<!-- 		<property name="ldapPort" value="${services.validator.ldap.port}" /> -->
+<!-- 		<property name="ldapUsername" value="${services.validator.ldap.username}" /> -->
+<!-- 		<property name="ldapPassword" value="${services.validator.ldap.password}" /> -->
+<!-- 		<property name="ldapUsersDN" value="${services.validator.ldap.usersDN}" /> -->
+<!-- 	</bean> -->
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-simple.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-simple.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-simple.xml	(revision 48242)
@@ -0,0 +1,23 @@
+<?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:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core" xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template" xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+
+	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
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	<bean id="repoAPI" class="eu.dnetlib.repos.RepoApiDirectImpl">
+<!-- 		<property name="openAireDataSource" ref="simple.dataSource" /> -->
+	</bean>
+	
+	</beans>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/users/springContext-users-ldap.properties
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/users/springContext-users-ldap.properties	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/users/springContext-users-ldap.properties	(revision 48242)
@@ -0,0 +1,5 @@
+services.users.ldap.address = 88.197.53.113
+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
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/QueryHashDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/QueryHashDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/QueryHashDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by pagano (CNR) -->
+<!--W3C Schema generated by XMLSpy v2007 sp1 (http://www.altova.com)-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType" />
+				<xs:element name="BODY" type="BODYType" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<xs:complexType name="HEADERType">
+		<xs:all>
+			<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType" />
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType" />
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType" />
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType" />
+			<xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType" />
+		</xs:all>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="QueryHashDSResourceType" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="QueryHashDSResources" />
+					<xs:enumeration value="PendingDSResources"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="DATE_OF_CREATIONType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+                        <xs:element name="QUERY_RESULTS" type="QUERY_RESULTSType" minOccurs="0" maxOccurs="unbounded"/>
+                </xs:sequence>
+
+		<xs:attribute name="USER_ID" type="xs:string" use="required" />
+		<xs:attribute name="CQL_QUERY" type="xs:string" use="required" />
+		<xs:attribute name="HASH_VALUE" type="xs:integer" use="required" />		
+        </xs:complexType>
+
+        <xs:complexType name="QUERY_RESULTSType">
+                <xs:sequence>
+                        <xs:element name="DOC_ID" type="xs:string" />
+                        <xs:element name="IS_NEW" type="xs:boolean" />
+                </xs:sequence>
+        </xs:complexType>
+
+</xs:schema>
+
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RecommendationDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RecommendationDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/RecommendationDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,91 @@
+<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by pagano (CNR) --><!--W3C Schema generated by XMLSpy v2007 sp1 (http://www.altova.com)-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="RESOURCE_PROFILE">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="HEADER" type="HEADERType"/>
+                <xs:element name="BODY" type="BODYType"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:complexType name="HEADERType">
+        <xs:all>
+            <xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType"/>
+            <xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType"/>
+            <xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType"/>
+            <xs:element name="RESOURCE_URI" type="RESOURCE_URIType"/>
+            <xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType"/>
+        </xs:all>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_IDENTIFIERType">
+        <xs:attribute name="value" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_TYPEType">
+        <xs:attribute name="value" use="required">
+            <xs:simpleType>
+                <xs:restriction base="xs:string">
+                    <xs:enumeration value="RecommendationDSResourceType"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_KINDType">
+        <xs:attribute name="value" use="required">
+            <xs:simpleType>
+                <xs:restriction base="xs:string">
+                    <xs:enumeration value="RecommendationDSResources"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:complexType>
+    <xs:complexType name="RESOURCE_URIType">
+        <xs:attribute name="value" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="DATE_OF_CREATIONType">
+        <xs:attribute name="value" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="BODYType">
+        <xs:sequence>
+            <xs:element name="CONFIGURATION" type="CONFIGURATIONType"/>
+            <xs:element name="STATUS" type="xs:string"/>
+            <xs:element name="SECURITY_PARAMETERS" type="SECURITY_PARAMETERSType"/>
+            <xs:element name="INDEX" type="xs:int" minOccurs="0"/>
+            <xs:element name="ACTIVE" type="xs:boolean" minOccurs="0"/>
+            <xs:element name="TITLE" type="xs:string" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="CONFIGURATIONType">
+        <xs:sequence>
+            <xs:element name="RECOMMENDATION_INFO" type="RECOMMENDATION_INFOType"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="SECURITY_PARAMETERSType">
+        <xs:all>
+            <xs:element name="SECURITY_PARAMETER" type="xs:string"/>
+        </xs:all>
+    </xs:complexType>
+    <xs:complexType name="RECOMMENDATION_INFOType">
+        <xs:sequence>
+            <xs:element name="RECOMMENDATION_TEXT" type="xs:string"/>
+            <xs:element name="DATE_OF_EXPIRATION">
+                <xs:complexType>
+                    <xs:attribute name="value" type="xs:string" use="required"/>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="TYPE" type="xs:string"/>
+            <xs:element name="COMMUNITIES" type="COMMUNITIESType" minOccurs="0" maxOccurs="1"/>
+            <xs:element name="USERS" type="USERSType" minOccurs="0" maxOccurs="1"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="COMMUNITIESType">
+        <xs:sequence>
+            <xs:element name="COMMUNITY_ID" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="USERSType">
+        <xs:sequence>
+            <xs:element name="USER_ID" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>
+
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/CommunityDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/CommunityDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/CommunityDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType"/>
+				<xs:element name="BODY" type="BODYType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<xs:complexType name="HEADERType">
+		<xs:all>
+			<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType"/>
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType"/>
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType"/>
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType"/>
+			<xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType"/>
+		</xs:all>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="CommunityDSResourceType"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="CommunityDSResources"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+
+	<xs:complexType name="DATE_OF_CREATIONType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType"/>
+			<xs:element name="STATUS" type="xs:string"/>
+			<xs:element name="SECURITY_PARAMETERS" type="SECURITY_PARAMETERSType"/>
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="CONFIGURATIONType">
+		<xs:sequence>
+			<xs:element name="NAME">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string"/>
+				</xs:complexType>
+			</xs:element>
+
+			<xs:element name="OWNER">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string"/>
+				</xs:complexType>
+			</xs:element>
+			
+			<xs:element name="DESCRIPTION">
+				<xs:complexType>
+					<xs:attribute name="value" type="xs:string"/>
+				</xs:complexType>
+			</xs:element>
+
+			<xs:element name="COLLECTIONS" type="COLLECTIONSType" />
+			<xs:element name="MANAGERS" type="MANAGERSType" />
+			<xs:element name="RECOMMENDATIONS" type="RECOMMENDATIONSType" />
+			<xs:element name="authoritativeDocuments" type="authoritativeDocumentsType" />
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="COLLECTIONSType">
+		<xs:sequence>
+			<xs:element name="COLLECTION" type="COLLECTIONType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="COLLECTIONType">
+		<xs:attribute name="collection" type="xs:string" />
+	</xs:complexType>
+	
+	<xs:complexType name="authoritativeDocumentsType">
+		<xs:sequence>
+			<xs:element name="authoritativeDocument" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="MANAGERSType">
+		<xs:sequence>
+			<xs:element name="MANAGER" type="MANAGERType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="MANAGERType">
+		<xs:attribute name="manager" type="xs:string" />
+	</xs:complexType>
+
+	<xs:complexType name="RECOMMENDATIONSType">
+		<xs:sequence>
+			<xs:element name="RECOMMENDATION" type="RECOMMENDATIONType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="RECOMMENDATIONType">
+		<xs:attribute name="recommendation" type="xs:string" />
+	</xs:complexType>
+
+	<xs:complexType name="SECURITY_PARAMETERSType">
+		<xs:attribute name="SECURITY_PARAMETER" type="xs:string"/>
+	</xs:complexType>
+
+</xs:schema>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/hibernate/HibernateUtil.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/hibernate/HibernateUtil.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/hibernate/HibernateUtil.java	(revision 48242)
@@ -0,0 +1,77 @@
+package eu.dnetlib.utils.hibernate;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.AnnotationConfiguration;
+import org.hibernate.cfg.Configuration;
+
+public class HibernateUtil {
+	private String host;
+	private String catalog;
+	private String username;
+	private String password;
+	private SessionFactory sessionFactory;
+	private Logger logger = Logger.getLogger(this.getClass());
+
+	public HibernateUtil() {
+	}
+
+	public HibernateUtil(String host, String catalog, String username,
+			String password) {
+		super();
+		this.host = host;
+		this.catalog = catalog;
+		this.username = username;
+		this.password = password;
+	}
+
+	public void setHost(String host) {
+		this.host = host;
+	}
+
+	public void setCatalog(String catalog) {
+		this.catalog = catalog;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public Session getSession() {
+		if ((sessionFactory == null) || sessionFactory.isClosed())
+			this.configure();
+
+		return sessionFactory.getCurrentSession();
+	}
+
+	private void configure() {
+		Configuration configuration = new AnnotationConfiguration().configure();
+		String url = "jdbc:mysql://" + host + "/" + catalog
+				+ "?characterEncoding=UTF-8";
+		configuration.setProperty("hibernate.connection.url", url);
+		configuration.setProperty("hibernate.connection.username", username);
+		configuration.setProperty("hibernate.connection.password", password);
+
+		if (logger.isDebugEnabled())
+			logger.debug("Connecting to url " + url + ", username: " + username
+					+ ", password: " + password);
+		
+		this.sessionFactory = configuration.buildSessionFactory();
+	}
+
+	public SessionFactory getSessionFactory() {
+		if ((sessionFactory == null) || sessionFactory.isClosed())
+			this.configure();
+		
+		return sessionFactory;
+	}
+
+	public void setSessionFactory(SessionFactory sessionFactory) {
+		this.sessionFactory = sessionFactory;
+	}
+}

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/hibernate/HibernateUtil.java
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/JsonFormat.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/JsonFormat.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/JsonFormat.java	(revision 48242)
@@ -0,0 +1,293 @@
+package eu.dnetlib.utils;
+
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.NumberFormat;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class JsonFormat extends Format {
+	private class JsonPair {
+		private final String name;
+		private final Object value;
+		
+		public JsonPair(final String name, final Object value) {
+			this.name = name;
+			this.value = value;
+		}
+		
+		public String getName() {
+			return name;
+		}
+		
+		public Object getValue() {
+			return value;
+		}
+	}
+	
+	private static final long serialVersionUID = 1L;
+
+	@Override
+	@SuppressWarnings("unchecked")
+	public StringBuffer format(final Object object, final StringBuffer toAppendTo, final FieldPosition position) {
+		if (object == null)
+			toAppendTo.append("null");
+		else if (object instanceof Boolean)
+			toAppendTo.append(object);
+		else if (object instanceof List<?>)
+			formatJsonArray((List<Object>) object, toAppendTo);
+		else if (object instanceof Number)
+			formatJsonNumber((Number) object, toAppendTo);
+		else if (object instanceof Map<?, ?>)
+			formatJsonObject((Map<String, Object>) object, toAppendTo);
+		else if (object instanceof String)
+			formatJsonString((String) object, toAppendTo);
+		else
+			throw new IllegalArgumentException();
+		return toAppendTo;
+	}
+
+	@Override
+	public Object parseObject(final String source, final ParsePosition position) {
+		if (position.getIndex() >= source.length()) { // premature end of source
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		if (source.startsWith("null", position.getIndex())) {
+			position.setIndex(position.getIndex() + 4);
+			return null;
+		}
+		if (source.startsWith("true", position.getIndex())) {
+			position.setIndex(position.getIndex() + 4);
+			return Boolean.TRUE;
+		}
+		if (source.startsWith("false", position.getIndex())) {
+			position.setIndex(position.getIndex() + 5);
+			return Boolean.FALSE;
+		}
+		final int beginIndex = position.getIndex();
+		Object value = null;
+		switch (source.charAt(position.getIndex())) {
+		case '[':
+			value = parseJsonArray(source, position);
+			break;
+		case '{':
+			value = parseJsonObject(source, position);
+			break;
+		case '"':
+			value = parseJsonString(source, position);
+			break;
+		default:
+			value = parseJsonNumber(source, position);
+		}
+		if (position.getErrorIndex() != -1)
+			position.setIndex(beginIndex);
+		return value;
+	}
+
+	private void formatJsonArray(final List<Object> array, final StringBuffer toAppendTo) {
+		toAppendTo.append('[');
+		for (Object object : array) {
+			format(object, toAppendTo, null);
+			toAppendTo.append(',');
+		}
+		if (array.size() > 0)
+			toAppendTo.setLength(toAppendTo.length() - 1);
+		toAppendTo.append(']');
+	}
+
+	private void formatJsonNumber(final Number number, final StringBuffer toAppendTo) {
+		toAppendTo.append(number);
+	}
+	
+	private void formatJsonObject(final Map<String, Object> object, final StringBuffer toAppendTo) {
+		toAppendTo.append('{');
+		for (Map.Entry<?, ?> pair : object.entrySet()) {
+			if (pair.getKey() instanceof String)
+				formatJsonString((String) pair.getKey(), toAppendTo);
+			else
+				throw new IllegalArgumentException();
+			toAppendTo.append(':');
+			format(pair.getValue(), toAppendTo, null);
+			toAppendTo.append(',');
+		}
+		if (object.size() > 0)
+			toAppendTo.setLength(toAppendTo.length() - 1);
+		toAppendTo.append('}');
+	}
+
+	private void formatJsonString(final String string, final StringBuffer toAppendTo) {
+		toAppendTo.append('"');
+		for (int i = 0; i < string.length(); i++) {
+			switch (string.charAt(i)) {
+			case '"':
+				toAppendTo.append("\\\"");
+				break;
+			case '\\':
+				toAppendTo.append("\\\\");
+				break;
+			case '\b':
+				toAppendTo.append("\\b");
+				break;
+			case '\f':
+				toAppendTo.append("\\f");
+				break;
+			case '\n':
+				toAppendTo.append("\\n");
+				break;
+			case '\r':
+				toAppendTo.append("\\r");
+				break;
+			case '\t':
+				toAppendTo.append("\\t");
+				break;
+			default:
+				toAppendTo.append(string.charAt(i));
+			}
+		}
+		toAppendTo.append('"');
+	}
+
+	private List<Object> parseJsonArray(final String source, final ParsePosition position) {
+		if ((position.getIndex() >= source.length()) || (source.charAt(position.getIndex()) != '[')) { // premature end of source or no opening bracket found
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		position.setIndex(position.getIndex() + 1);
+		final List<Object> array = new ArrayList<Object>();
+		if ((position.getIndex() < source.length()) && (source.charAt(position.getIndex()) != ']')) { // next character is not closing bracket; elements exist
+			parseJsonElements(source, position, array);
+			if (position.getErrorIndex() != -1)
+				return null;
+		}
+		if ((position.getIndex() >= source.length()) || (source.charAt(position.getIndex()) != ']')) { // premature end of source or no closing bracket found
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		position.setIndex(position.getIndex() + 1);
+		return array;
+	}
+	
+	private void parseJsonElements(final String source, final ParsePosition position, final List<Object> elements) {
+		final Object value = parseObject(source, position);
+		if (position.getErrorIndex() != -1)
+			return;
+		elements.add(value);
+		if ((position.getIndex() < source.length()) && (source.charAt(position.getIndex()) == ',')) { // next character is a comma; more elements 
+			position.setIndex(position.getIndex() + 1);
+			parseJsonElements(source, position, elements);
+				if (position.getErrorIndex() != -1) // no more elements found
+					return;
+		}
+	}
+	
+	private Number parseJsonNumber(final String source, final ParsePosition position) {
+		if (position.getIndex() >= source.length()) { // premature end of input
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		return NumberFormat.getInstance().parse(source, position);
+	}
+	
+	private Map<String, Object> parseJsonObject(final String source, final ParsePosition position) {
+		if ((position.getIndex() >= source.length()) || (source.charAt(position.getIndex()) != '{')) { // premature end of source or no opening brace found
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		position.setIndex(position.getIndex() + 1);
+		final Map<String, Object> object = new HashMap<String, Object>();
+		if ((position.getIndex() < source.length()) && (source.charAt(position.getIndex()) != '}')) { // next character is not closing brace; members exist
+			parseJsonMembers(source, position, object);
+			if (position.getErrorIndex() != -1)
+				return null;
+		}
+		if ((position.getIndex() >= source.length()) || (source.charAt(position.getIndex()) != '}')) { // premature end of source or no closing brace found
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		position.setIndex(position.getIndex() + 1);
+		return object;
+	}
+	
+	private void parseJsonMembers(final String source, final ParsePosition position, final Map<String, Object> members) {
+		final JsonPair pair = parseJsonPair(source, position);
+		if (position.getErrorIndex() != -1) // no pair found
+			return;
+		members.put(pair.getName(), pair.getValue());
+		if ((position.getIndex() < source.length()) && (source.charAt(position.getIndex()) == ',')) { // next character is a comma; more members follow
+			position.setIndex(position.getIndex() + 1);
+			parseJsonMembers(source, position, members);
+			if (position.getErrorIndex() != -1) // no more members found
+				return;
+		}
+	}
+	
+	private JsonPair parseJsonPair(final String source, final ParsePosition position) {
+		final String name = parseJsonString(source, position);
+		if (position.getErrorIndex() != -1) // no name found
+			return null;
+		if ((position.getIndex() >= source.length()) || (source.charAt(position.getIndex()) != ':')) { // premature end of input or no colon found
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		position.setIndex(position.getIndex() + 1);
+		final Object value = parseObject(source, position);
+		if (position.getErrorIndex() != -1) // no value found
+			return null;
+		return new JsonPair(name, value);
+	}
+	
+	private String parseJsonString(final String source, final ParsePosition position) {
+		if ((position.getIndex() >= source.length()) || (source.charAt(position.getIndex()) != '"')) { // premature end of source or no opening quote found
+			position.setErrorIndex(position.getIndex());
+			return null;
+		}
+		final StringBuilder string = new StringBuilder();
+		for (int i = position.getIndex() + 1; i < source.length(); i++) {
+			switch (source.charAt(i)) {
+			case '"': // closing quote found; JSON string ended
+				position.setIndex(i + 1);
+				return string.toString();
+			case '\\': // escape character
+				if (++i == source.length()) { // no next character found
+					position.setErrorIndex(i);
+					return null;
+				}
+				switch(source.charAt(i)) {
+				case '"': // quote
+					string.append('"');
+					break;
+				case '\\': // backslash
+					string.append('\\');
+					break;
+				case 'b': // backspace
+					string.append('\b');
+					break;
+				case 'f': // form feed
+					string.append('\f');
+					break;
+				case 'n': // newline
+					string.append('\n');
+					break;
+				case 'r': // carriage return
+					string.append('\n');
+					break;
+				case 't': // horizontal tab
+					string.append('\t');
+					break;
+				default: // invalid escape character
+					position.setErrorIndex(i);
+					return null;
+				}
+				break;
+			default:
+				string.append(source.charAt(i));
+			}
+		} // source ended without finding closing quote
+		position.setErrorIndex(source.length());
+		return null;
+	}
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/md5/MD5.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/md5/MD5.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/md5/MD5.java	(revision 48242)
@@ -0,0 +1,28 @@
+package eu.dnetlib.utils.md5;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class MD5 {
+
+	public MD5() {
+	}
+
+	static public int encrypt(String input) throws NoSuchAlgorithmException {
+		MessageDigest md = MessageDigest.getInstance("MD5");
+		md.update(input.getBytes());// transforms password into md5 hash
+		BigInteger hash = new BigInteger(1, md.digest());
+		return hash.intValue();
+	}
+
+	static public String encrypt2Hex(String input)
+			throws NoSuchAlgorithmException {
+
+		return Integer.toHexString(encrypt(input));
+	}
+
+	public static void main(String[] args) throws NoSuchAlgorithmException {
+		System.out.println(MD5.encrypt2Hex("password"));
+	}
+}
\ No newline at end of file

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/md5/MD5.java
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/parser/Parser.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/parser/Parser.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/utils/parser/Parser.java	(revision 48242)
@@ -0,0 +1,185 @@
+package eu.dnetlib.utils.parser;
+
+import java.io.StringReader;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+public class Parser {
+	private String xml = null;
+	private XPathFactory factory = XPathFactory.newInstance();
+	private XPath xPath = factory.newXPath();
+	
+	private Logger logger = Logger.getLogger(Parser.class);
+	
+	public Parser(String xml) {
+		this.xml = xml;
+	}
+	
+	public String getValue(String field) {
+		NodeList nodes = extractXPath(field);
+		if (nodes != null && nodes.getLength() > 0) {
+			return nodes.item(0).getAttributes().getNamedItem("value").getNodeValue();
+		}
+		
+		return null;
+	}
+	
+	public String getValue(String field, String[] values) {		
+		if (field.split("\\.").length <= values.length) {
+			logger.debug("Wrong value request");
+			return null;
+		}
+		
+		NodeList nodes = extractXPath(field, values);	
+		if (nodes != null && nodes.getLength() > 0) {
+			return nodes.item(0).getAttributes().getNamedItem("value").getNodeValue();
+		}
+		
+		return null;
+	}
+	
+	public Boolean getBoolean(String field) {
+		NodeList nodes = extractXPath(field);
+		if (nodes != null && nodes.getLength() > 0) {			
+			return Boolean.parseBoolean(nodes.item(0).getAttributes().getNamedItem("value").getNodeValue());
+		}
+		
+		return null;
+	}
+	
+	public Date getDate(String field, String format) {
+		NodeList nodes = extractXPath(field);
+		try {
+			if (nodes != null && nodes.getLength() > 0) {
+				return new SimpleDateFormat(format).parse(nodes.item(0).getAttributes().getNamedItem("value").getNodeValue());
+			}
+		} catch (ParseException pe) {
+			logger.debug("Parsing of date failed. ", pe);
+			
+		} catch (IllegalArgumentException iae) {
+			logger.debug("Parsing of date failed. ", iae);
+		}
+		
+		return null;
+	}
+	
+	public Integer getInteger(String field) {
+		NodeList nodes = extractXPath(field);
+		try {
+			if (nodes != null && nodes.getLength() > 0) {
+				return Integer.parseInt(nodes.item(0).getAttributes().getNamedItem("value").getNodeValue());
+			}
+			
+		} catch (NumberFormatException pe) {
+			logger.debug("Parsing integer failed. " +  pe);
+		}
+			
+		return null;
+	}
+	
+	public String[] getValues(String field) {
+		NodeList nodes = extractXPath(field);
+		
+		if (nodes != null && nodes.getLength() > 0) { 
+			String[] values = new String[nodes.getLength()];			
+			for (int i = 0; i < nodes.getLength(); i++) {
+				values[i] = nodes.item(i).getAttributes().getNamedItem("value").getNodeValue();
+			}
+			return values;
+		}
+		
+		return null;
+	}
+	
+	public String[] getValues(String field, String[] values) {		
+		if (field.split("\\.").length <= values.length) {
+			logger.debug("Wrong value request");
+			return null;
+		}
+		
+		NodeList nodes = extractXPath(field, values);	
+		if (nodes != null && nodes.getLength() > 0) {
+			String[] fieldvalues = new String[nodes.getLength()];			
+			for (int i = 0; i < nodes.getLength(); i++) {
+				fieldvalues[i] = nodes.item(i).getAttributes().getNamedItem("value").getNodeValue();
+			}			
+			return fieldvalues;
+		}		
+		return null;
+	}
+	
+
+	public Integer[] getIntegers(String field) {
+		NodeList nodes = extractXPath(field);
+			if (nodes != null && nodes.getLength() > 0) { 
+				Integer[] values = new Integer[nodes.getLength()];			
+				for (int i = 0; i < nodes.getLength(); i++) {
+					try {
+						values[i] = Integer.parseInt(nodes.item(i).getAttributes().getNamedItem("value").getNodeValue());
+					} catch (NumberFormatException pe) {
+						values[i] = null;
+						logger.debug("Parsing integer failed. " +  pe);
+					}
+				}
+				return values;
+			}
+		
+		return null;
+	}
+	
+	private NodeList extractXPath(String field) {
+		String expression = "/result";		
+		String[] fieldnames = field.split("\\.");
+		
+		for ( int i=0; i < fieldnames.length; i++ ) {
+			expression += "/field[@name=\"" + fieldnames[i] +"\"]";
+		}
+		
+		try {
+			XPathExpression xPathExpression  = xPath.compile(expression);
+			NodeList nodes = (NodeList) xPathExpression.evaluate(new InputSource(new StringReader(xml)), XPathConstants.NODESET);
+			return nodes;
+			
+		} catch (XPathExpressionException e) {
+			return null;
+		}
+	}
+	
+	private NodeList extractXPath(String field, Object values) {
+		String expression = "/result";		
+		String[] fieldnames = field.split("\\.");
+		String[] fieldvalues = (String[]) values;
+		
+		for ( int i=0; i < fieldnames.length; i++ ) {
+			if (i < fieldnames.length-1) {
+				expression += "/field[@name=\"" + fieldnames[i] +"\"]" + "[@value=\"" + fieldvalues[i] + "\"]";
+			} else {
+				expression += "/field[@name=\"" + fieldnames[i] +"\"]";
+			}
+		}
+
+		try {
+			XPathExpression xPathExpression  = xPath.compile(expression);
+			NodeList nodes = (NodeList) xPathExpression.evaluate(new InputSource(new StringReader(xml)), XPathConstants.NODESET);			
+			if(nodes.getLength() == 0) return null;
+			
+			return nodes;
+			
+		} catch (XPathExpressionException e) {
+			return null;
+		}
+	}
+	
+	
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheProvider.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheProvider.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/ehcacher/CacheProvider.java	(revision 48242)
@@ -0,0 +1,71 @@
+package eu.dnetlib.repos.ehcacher;
+
+
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.Ehcache;
+import net.sf.ehcache.constructs.blocking.CacheEntryFactory;
+import net.sf.ehcache.constructs.blocking.SelfPopulatingCache;
+
+import org.apache.log4j.Logger;
+
+public class CacheProvider {
+	private Logger logger = Logger.getLogger(CacheProvider.class);
+    private CacheManager cacheManager;
+    private CacheEntryFactory updatingFactory;
+    public SelfPopulatingCache selfPopulatingCache;
+
+    public void start() throws Exception {
+        try {
+            Ehcache originalCache = cacheManager.getCache("doar");
+
+            selfPopulatingCache = new SelfPopulatingCache(originalCache, updatingFactory);
+        } catch (Exception e) {
+            logger.error("Error initializing cache provider", e);
+        }
+
+        //cache refresh thread
+        Thread updatingThread = new Thread() {
+            public void run() {
+
+                while (true) {
+                    try {
+                        Thread.sleep(450000);
+                        logger.info("!!!!! Doing cache refresh !!!!!");
+                        selfPopulatingCache.refresh();
+                    } catch (Exception e) {
+                        logger.error("Error while updating cache. Retry in 250000min", e);
+                        try {
+                            Thread.sleep(250000);
+                        } catch (Exception e1) {
+                            logger.error("Error while updating cache", e1);
+                        }
+                    }
+
+                }
+            }
+        };
+        updatingThread.setDaemon(true);
+        updatingThread.start();
+
+    }
+
+    public CacheEntryFactory getUpdatingFactory() {
+		return updatingFactory;
+	}
+
+	public void setUpdatingFactory(CacheEntryFactory updatingFactory) {
+		this.updatingFactory = updatingFactory;
+	}
+
+	public CacheManager getCacheManager() {
+		return cacheManager;
+	}
+
+	public void setCacheManager(CacheManager cacheManager) {
+		this.cacheManager = cacheManager;
+	}
+
+	public Ehcache getCache(){
+        return selfPopulatingCache;
+    }
+}
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoTools.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoTools.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/repos/RepoTools.java	(revision 48242)
@@ -0,0 +1,83 @@
+package eu.dnetlib.repos;
+
+import eu.dnetlib.domain.data.Repository;
+
+import java.util.*;
+
+/**
+ * Created by nikonas on 16/2/16.
+ */
+public class RepoTools {
+
+    protected static Map<String, List<Repository>> splitReposPerCountry(List<Repository> repoList) throws Exception {
+        Map<String, List<Repository>> res = new TreeMap<String, List<Repository>>();
+        for (Repository repo : repoList) {
+
+            List<Repository> repos;
+            if (!repo.getCountryName().isEmpty())
+                repos = res.get(repo.getCountryName());
+            else
+                repos = res.get("Without Country");
+            if (repos == null) {
+                repos = new ArrayList<Repository>();
+                if (!repo.getCountryName().isEmpty())
+                    res.put(repo.getCountryName(), repos);
+                else
+                    res.put("Without Country", repos);
+            }
+
+            repos.add(repo);
+        }
+        return res;
+    }
+
+    protected static TreeMap<String, List<Map<String, String>>> splitReposByCountry(List<Repository> repoList) throws Exception {
+        TreeMap<String, List<Map<String, String>>> res = new TreeMap<String, List<Map<String, String>>>();
+        for (Repository repo : repoList) {
+
+            List<Map<String, String>> repos;
+            if (!repo.getCountryName().isEmpty())
+                repos = res.get(repo.getCountryName());
+            else
+                repos = res.get("Without Country");
+            if (repos == null) {
+                repos = new ArrayList<Map<String, String>>();
+                if (!repo.getCountryName().isEmpty())
+                    res.put(repo.getCountryName(), repos);
+                else
+                    res.put("Without Country", repos);
+            }
+
+            Map<String, String> rep = new HashMap<String, String>();
+            rep.put("name", repo.getOfficialName());
+            rep.put("id", repo.getId());
+            rep.put("url", repo.getWebsiteUrl());
+            rep.put("registered", repo.isRegistered() ? "yes" : "no");
+            repos.add(rep);
+        }
+        return res;
+    }
+
+    protected static String getFilterKey(String repoMode) {
+        String filterKey = "UNKNOWN";
+        if (repoMode.equalsIgnoreCase("opendoar")) {
+            filterKey = "openaire____::opendoar";
+        } else if (repoMode.equalsIgnoreCase("re3data")) {
+            filterKey = "openaire____::re3data";
+        } else if (repoMode.equalsIgnoreCase("jour_aggr")) {
+            filterKey = "infrastruct_::openaire";
+        }
+        return filterKey;
+    }
+
+    protected static Map<String, String> convertRepoToMap(Repository repo) {
+        Map<String, String> rep = new HashMap<String, String>();
+        rep.put("name", repo.getOfficialName());
+        rep.put("id", repo.getId());
+        rep.put("url", repo.getWebsiteUrl());
+        rep.put("mode", repo.getDatasourceType());
+        rep.put("registered", repo.isRegistered() ? "yes" : "no");
+        return rep;
+    }
+
+}
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/ObjectToXmlConverter.java
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/ObjectToXmlConverter.java	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/ObjectToXmlConverter.java	(revision 48242)
@@ -0,0 +1,22 @@
+package eu.dnetlib.util;
+
+import javax.xml.bind.JAXBException;
+
+public interface ObjectToXmlConverter<D> {
+	
+	/**
+	 * Converts the xml representation to a Java object.
+	 * @param xml The xml representation to convert
+	 * @return the Java object.
+	 * @throws JAXBException
+	 */
+	public D XmlToObject(String xml) throws JAXBException;
+	
+	/**
+	 * Converts the Java object to its xml representation.
+	 * @param object The object to convert.
+	 * @return the xml...
+	 * @throws JAXBException
+	 */
+	public String ObjectToXml(D object) throws JAXBException;
+}

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/java/eu/dnetlib/util/ObjectToXmlConverter.java
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/util/springContext-locators.properties
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/util/springContext-locators.properties	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/util/springContext-locators.properties	(revision 48242)
@@ -0,0 +1,24 @@
+ISLookUpService.url= INVALID LINK!!! ISLookUpService
+ISRegistryService.url= INVALID LINK!!! ISRegistryService
+ResultSetService.url= INVALID LINK!!! ResultSetService
+ISSNService.url= INVALID LINK!!! ISSNService
+DBService.url= INVALID LINK!!! DBService
+ActionManagerService.url = INALVID LINK!!! action Service
+A2Service.url= INVALID LINK!!! A2Service
+UserProfileService.url= INVALID LINK!!! UserProfileService
+IndexService.url= INVALID LINK!!! IndexService
+SearchService.url= INVALID LINK!!! SearchService
+CommunityService.url= INVALID LINK!!! CommunityService
+CollectionService.url= INVALID LINK!!! CollectionService
+PublisherService.url= INVALID LINK!!! PublisherService
+RecommendationService.url= INVALID LINK!!! RecommendationService
+ValidatorService.url= INVALID LINK!!! ValidatorService
+ForumService.url = INVALID LINK!!! ForumService
+RatingService.url = INVALID LINK!!! RatingService
+WebInterfaceService.url = INVALID LINK!!! WebInterfaceService
+DatasourceManagerService.url = INVALID LINK!!! DatasourceManagerService
+MDStoreService.url = INVALID LINK!!! MDStoreService
+services.similarityService.ws.url = INVALID LINK!!! similarityService
+services.alertService.ws.url = INVALID LINK!!! alertService
+services.notificationService.ws.url = INVALID LINK!!! notificationService
+services.conversionService.ws.url = INVALID LINK!!! conversionService
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupFactory.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupFactory.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-lookupFactory.xml	(revision 48242)
@@ -0,0 +1,90 @@
+<?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-4.0.xsd"
+	default-autowire="no" default-lazy-init="false">
+
+	<bean id="cacheManager" class="net.sf.ehcache.CacheManager" />
+		
+	<bean id="lookUpFactory" class="gr.uoa.di.driver.enabling.islookup.ISLookUpFactory"
+		init-method="init">
+		<property name="cacheManager" ref="cacheManager" />
+		<property name="lookupLocator" ref="lookupServiceLocator" />
+		<property name="service" ref="hcmService" />
+		<property name="rsFactory" ref="resultSetFactory" />
+		<property name="useCache" value="${services.common.nkua.useCache}" />
+		<property name="resourceTypeMap">
+			<map>
+				<entry key="eu.dnetlib.domain.enabling.Vocabulary"
+        				value="VOCABULARYDSRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.enabling.SecurityProfile"
+        				value="SECURITYPROFILEDSRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.data.Repository"
+        				value="REPOSITORYSERVICERESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.data.MDFormatDataStructure"
+        				value="MDFORMATRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.functionality.UserProfile"
+					value="USERDSRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.functionality.Community"
+					value="COMMUNITYDSRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.functionality.Collection"
+					value="COLLECTIONDSRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.functionality.Recommendation"
+					value="RECOMMENDATIONDSRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.functionality.QueryHash"
+        				value="QUERYHASHRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.functionality.WebInterfaceLayout"
+					value="WEBLAYOUTRESOURCETYPE" />
+				<entry key="eu.dnetlib.domain.functionality.RSSFeed"
+					value="RSSFEEDRESOURCETYPE" />
+			</map>
+		</property>
+		<property name="comparatorClassMap">
+			<map>
+				<entry key="eu.dnetlib.domain.functionality.UserProfile"
+					value="eu.dnetlib.domain.functionality.UserProfileComparator" />
+				<entry key="eu.dnetlib.domain.data.Repository"
+        				value="eu.dnetlib.domain.data.RepositoryComparator" />
+				<entry key="eu.dnetlib.domain.functionality.Community"
+					value="eu.dnetlib.domain.functionality.CommunityComparator" />
+				<entry key="eu.dnetlib.domain.functionality.Collection"
+					value="eu.dnetlib.domain.functionality.CollectionComparator" />
+				<entry key="eu.dnetlib.domain.functionality.Recommendation"
+					value="eu.dnetlib.domain.functionality.RecommendationComparator" />
+				<entry key="eu.dnetlib.domain.functionality.RSSFeed"
+					value="eu.dnetlib.domain.functionality.RSSFeedComparator" />
+					
+			</map>
+		</property>
+		<property name="converterClassMap">
+			<map>
+				<entry key="eu.dnetlib.domain.enabling.Vocabulary"
+					value="gr.uoa.di.driver.xml.VocabularyXmlConverter" />
+				<entry key="eu.dnetlib.domain.enabling.SecurityProfile"
+        				value="gr.uoa.di.driver.xml.SecurityProfileXmlConverter" />
+				<entry key="eu.dnetlib.domain.data.Repository"
+        				value="gr.uoa.di.driver.xml.RepositoryXmlConverter" />
+				<entry key="eu.dnetlib.domain.data.MDFormatDataStructure"
+        				value="gr.uoa.di.driver.xml.MDFormatDSXmlConverter" />
+				<entry key="eu.dnetlib.domain.functionality.UserProfile"
+					value="gr.uoa.di.driver.xml.UserProfileXmlConverter" />
+				<entry key="eu.dnetlib.domain.functionality.Community"
+					value="gr.uoa.di.driver.xml.CommunityXmlConverter" />
+				<entry key="eu.dnetlib.domain.functionality.Collection"
+					value="gr.uoa.di.driver.xml.CollectionXmlConverter" />
+				<entry key="eu.dnetlib.domain.functionality.Recommendation"
+					value="gr.uoa.di.driver.xml.RecommendationXmlConverter" />
+				<entry key="eu.dnetlib.domain.functionality.QueryHash"
+        				value="gr.uoa.di.driver.xml.QueryHashXmlConverter" />
+				<entry key="eu.dnetlib.domain.functionality.WebInterfaceLayout"
+					value="gr.uoa.di.driver.xml.WebInterfaceLayoutXmlConverter" />
+				<entry key="eu.dnetlib.domain.functionality.RSSFeed"
+					value="gr.uoa.di.driver.xml.RSSFeedXmlConverter" />
+					
+			</map>
+		</property>
+	</bean>
+</beans>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-registrator.properties
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-registrator.properties	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/gr/uoa/di/driver/app/springContext-registrator.properties	(revision 48242)
@@ -0,0 +1,4 @@
+services.registration.delay = 3600
+services.registration.default.hnmlocator = nullHNMLocator
+
+services.registration.default.removeRegistration=true
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-dms.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-dms.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-dms.xml	(revision 48242)
@@ -0,0 +1,23 @@
+<?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:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core" xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template" xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+
+	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
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="repoAPI" class="eu.dnetlib.repos.RepoApiDmsImpl">
+		<property name="dmService" ref="datasourceManagerServiceLocator" />
+	</bean>
+
+</beans>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-direct.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-direct.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/eu/dnetlib/repos/springContext-repos-direct.xml	(revision 48242)
@@ -0,0 +1,68 @@
+<?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:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core" xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template" xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+
+	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
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="openaire.dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
+		<property name="driverClassName" value="${services.validator.openaire.driverClassName}" />
+		<property name="url" value="${services.validator.openaire.url}" />
+		<property name="username" value="${services.validator.openaire.username}" />
+		<property name="password" value="${services.validator.openaire.password}" />
+		
+		<property name="maxIdle" value="10"/>
+		<property name="maxActive" value="100"/>
+		<property name="maxWait" value="10000"/>
+		<property name="validationQuery" value="select 1"/>
+		<property name="testOnBorrow" value="true"/>
+		<property name="testWhileIdle" value="true"/>
+		<property name="timeBetweenEvictionRunsMillis" value="1200000"/>
+		<property name="minEvictableIdleTimeMillis" value="1800000"/>
+		<property name="numTestsPerEvictionRun" value="5"/>
+		<property name="defaultAutoCommit" value="false"/>
+	</bean>
+	
+	<bean id="openaire.repositoryFactory" class="eu.dnetlib.repos.RepoApiDirectImpl">
+		<property name="openAireDataSource" ref="openaire.dataSource" />
+	</bean>
+	
+</beans>
+<!-- 	<bean id="joomla.dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> -->
+<!-- 		<property name="driverClassName" value="${services.validator.joomla.driverClassName}" /> -->
+<!-- 		<property name="url" value="${services.validator.joomla.url}" /> -->
+<!-- 		<property name="username" value="${services.validator.joomla.username}" /> -->
+<!-- 		<property name="password" value="${services.validator.joomla.password}" /> -->
+		
+<!-- 		<property name="maxIdle" value="10"/> -->
+<!-- 		<property name="maxActive" value="100"/> -->
+<!-- 		<property name="maxWait" value="10000"/> -->
+<!-- 		<property name="validationQuery" value="select 1"/> -->
+<!-- 		<property name="testOnBorrow" value="true"/> -->
+<!-- 		<property name="testWhileIdle" value="true"/> -->
+<!-- 		<property name="timeBetweenEvictionRunsMillis" value="1200000"/> -->
+<!-- 		<property name="minEvictableIdleTimeMillis" value="1800000"/> -->
+<!-- 		<property name="numTestsPerEvictionRun" value="5"/> -->
+<!-- 		<property name="defaultAutoCommit" value="false"/> -->
+<!-- 	</bean> -->
+
+	
+<!-- 	<bean id="joomla2ldap" class="gr.uoa.di.validator.api.ldap.Joomla2Ldap"> -->
+<!-- 		<property name="joomlaDatasource" ref="joomla.dataSource" /> -->
+<!-- 		<property name="ldapAddress" value="${services.users.ldap.address}" /> -->
+<!-- 		<property name="ldapPort" value="${services.users.ldap.port}" /> -->
+<!-- 		<property name="ldapUsername" value="${services.users.ldap.username}" /> -->
+<!-- 		<property name="ldapPassword" value="${services.users.ldap.password}" /> -->
+<!-- 		<property name="ldapUsersDN" value="${services.users.ldap.usersDN}" /> -->
+<!-- 	</bean> -->
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/ehcache.xml
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/ehcache.xml	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/ehcache.xml	(revision 48242)
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+        
+<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:noNamespaceSchemaLocation="ehcache.xsd" >
+    <diskStore path="java.io.tmpdir"/>
+
+    <!--
+    Cache configuration
+    ===================
+
+    The following attributes are required.
+
+    name:
+    Sets the name of the cache. This is used to identify the cache. It must be unique.
+
+    maxElementsInMemory:
+    Sets the maximum number of objects that will be created in memory
+
+	maxElementsOnDisk:
+    Sets the maximum number of objects that will be maintained in the DiskStore
+	The default value is zero, meaning unlimited.
+
+    eternal:
+    Sets whether elements are eternal. If eternal,  timeouts are ignored and the
+    element is never expired.
+
+    overflowToDisk:
+    Sets whether elements can overflow to disk when the memory store
+    has reached the maxInMemory limit.
+
+    The following attributes and elements are optional.
+
+    timeToIdleSeconds:
+    Sets the time to idle for an element before it expires.
+    i.e. The maximum amount of time between accesses before an element expires
+    Is only used if the element is not eternal.
+    Optional attribute. A value of 0 means that an Element can idle for infinity.
+    The default value is 0.
+
+    timeToLiveSeconds:
+    Sets the time to live for an element before it expires.
+    i.e. The maximum time between creation time and when an element expires.
+    Is only used if the element is not eternal.
+    Optional attribute. A value of 0 means that and Element can live for infinity.
+    The default value is 0.
+
+    diskPersistent:
+    Whether the disk store persists between restarts of the Virtual Machine.
+    The default value is false.
+
+    diskExpiryThreadIntervalSeconds:
+    The number of seconds between runs of the disk expiry thread. The default value
+    is 120 seconds.
+
+    diskSpoolBufferSizeMB:
+    This is the size to allocate the DiskStore for a spool buffer. Writes are made
+    to this area and then asynchronously written to disk. The default size is 30MB.
+    Each spool buffer is used only by its cache. If you get OutOfMemory errors consider
+    lowering this value. To improve DiskStore performance consider increasing it. Trace level
+    logging in the DiskStore will show if put back ups are occurring. 
+
+    memoryStoreEvictionPolicy:
+    Policy would be enforced upon reaching the maxElementsInMemory limit. Default
+    policy is Least Recently Used (specified as LRU). Other policies available -
+    First In First Out (specified as FIFO) and Less Frequently Used
+    (specified as LFU)
+
+    Cache elements can also contain sub elements which take the same format of a factory class
+    and properties. Defined sub-elements are:
+
+    * cacheEventListenerFactory - Enables registration of listeners for cache events, such as
+      put, remove, update, and expire.
+
+    * bootstrapCacheLoaderFactory - Specifies a BootstrapCacheLoader, which is called by a
+      cache on initialisation to prepopulate itself.
+
+    * cacheExtensionFactory - Specifies a CacheExtension, a generic mechansim to tie a class
+      which holds a reference to a cache to the cache lifecycle.
+
+    * cacheExceptionHandlerFactory - Specifies a CacheExceptionHandler, which is called when
+      cache exceptions occur.
+
+    * cacheLoaderFactory - Specifies a CacheLoader, which can be used both asynchronously and
+      synchronously to load objects into a cache. More than one cacheLoaderFactory element
+      can be added, in which case the loaders form a chain which are executed in order. If a
+      loader returns null, the next in chain is called.
+
+    RMI Cache Replication
+    +++++++++++++++++++++
+
+    Each cache that will be distributed needs to set a cache event listener which replicates
+    messages to the other CacheManager peers. For the built-in RMI implementation this is done
+    by adding a cacheEventListenerFactory element of type RMICacheReplicatorFactory to each
+    distributed cache's configuration as per the following example:
+
+    <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
+         properties="replicateAsynchronously=true,
+         replicatePuts=true,
+         replicatePutsViaCopy=false,
+         replicateUpdates=true,
+         replicateUpdatesViaCopy=true,
+         replicateRemovals=true
+         asynchronousReplicationIntervalMillis=<number of milliseconds"
+         propertySeparator="," />
+
+    The RMICacheReplicatorFactory recognises the following properties:
+
+    * replicatePuts=true|false - whether new elements placed in a cache are
+      replicated to others. Defaults to true.
+
+    * replicatePutsViaCopy=true|false - whether the new elements are
+      copied to other caches (true), or whether a remove message is sent. Defaults to true.  
+
+    * replicateUpdates=true|false - whether new elements which override an
+      element already existing with the same key are replicated. Defaults to true.
+
+    * replicateRemovals=true - whether element removals are replicated. Defaults to true.
+
+    * replicateAsynchronously=true | false - whether replications are
+      asynchronous (true) or synchronous (false). Defaults to true.
+
+    * replicateUpdatesViaCopy=true | false - whether the new elements are
+      copied to other caches (true), or whether a remove message is sent. Defaults to true.
+
+    * asynchronousReplicationIntervalMillis=<number of milliseconds> - The asynchronous
+      replicator runs at a set interval of milliseconds. The default is 1000. The minimum
+      is 10. This property is only applicable if replicateAsynchronously=true
+
+
+    JGroups Replication
+    +++++++++++++++++++
+
+	For the Jgroups replication this is done with:
+	<cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
+                            properties="replicateAsynchronously=true, replicatePuts=true,
+ 							replicateUpdates=true, replicateUpdatesViaCopy=false,
+ 							replicateRemovals=true,asynchronousReplicationIntervalMillis=1000"/>
+    This listener supports the same properties as the RMICacheReplicationFactory.
+
+
+    JMS Replication
+    +++++++++++++++
+
+	For JMS-based replication this is done with:
+	<cacheEventListenerFactory
+          class="net.sf.ehcache.distribution.jms.JMSCacheReplicatorFactory"
+          properties="replicateAsynchronously=true,
+                       replicatePuts=true,
+                       replicateUpdates=true,
+                       replicateUpdatesViaCopy=true,
+                       replicateRemovals=true,
+                       asynchronousReplicationIntervalMillis=1000"
+           propertySeparator=","/>
+
+    This listener supports the same properties as the RMICacheReplicationFactory.
+    
+    Cluster Bootstrapping
+    +++++++++++++++++++++
+    (RMI clusters only)
+
+    The RMIBootstrapCacheLoader bootstraps caches in clusters where RMICacheReplicators are
+    used. It is configured as per the following example:
+
+    <bootstrapCacheLoaderFactory
+        class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"
+        properties="bootstrapAsynchronously=true, maximumChunkSizeBytes=5000000"
+        propertySeparator="," />
+
+    The RMIBootstrapCacheLoaderFactory recognises the following optional properties:
+
+    * bootstrapAsynchronously=true|false - whether the bootstrap happens in the background
+      after the cache has started. If false, bootstrapping must complete before the cache is
+      made available. The default value is true.
+
+    * maximumChunkSizeBytes=<integer> - Caches can potentially be very large, larger than the
+      memory limits of the VM. This property allows the bootstraper to fetched elements in
+      chunks. The default chunk size is 5000000 (5MB).
+
+
+    Cache Exception Handling
+
+    By default, most cache operations will propagate a runtime CacheException on failure. An
+    interceptor, using a dynamic proxy, may be configured so that a CacheExceptionHandler can
+    be configured to intercept Exceptions. Errors are not intercepted.
+
+    It is configured as per the following example:
+
+      <cacheExceptionHandlerFactory class="com.example.ExampleExceptionHandlerFactory"
+                                      properties="logLevel=FINE"/>
+
+    Caches with ExceptionHandling configured are not of type Cache, but are of type Ehcache only,
+    and are not available using CacheManager.getCache(), but using CacheManager.getEhcache().
+
+
+    Cache Loader
+
+    A default CacheLoader may be set which loads objects into the cache through asynchronous and
+    synchronous methods on Cache. This is different to the bootstrap cache loader, which is used
+    only in distributed caching.
+
+    It is configured as per the following example:
+
+        <cacheLoaderFactory class="com.example.ExampleCacheLoaderFactory"
+                                      properties="type=int,startCounter=10"/>
+
+    Cache Extension
+
+    CacheExtensions are a general purpose mechanism to allow generic extensions to a Cache.
+    CacheExtensions are tied into the Cache lifecycle.
+
+    CacheExtensions are created using the CacheExtensionFactory which has a
+    <code>createCacheCacheExtension()</code> method which takes as a parameter a
+    Cache and properties. It can thus call back into any public method on Cache, including, of
+    course, the load methods.
+
+    Extensions are added as per the following example:
+
+         <cacheExtensionFactory class="com.example.FileWatchingCacheRefresherExtensionFactory"
+                             properties="refreshIntervalMillis=18000, loaderTimeout=3000,
+                                         flushPeriod=whatever, someOtherProperty=someValue ..."/>
+
+    -->
+
+    <!--
+    Mandatory Default Cache configuration. These settings will be applied to caches
+    created programmtically using CacheManager.add(String cacheName).
+
+    The defaultCache has an implicit name "default" which is a reserved cache name.
+    -->
+    <defaultCache
+            maxElementsInMemory="1000"
+            eternal="false"
+            timeToIdleSeconds="120"
+            timeToLiveSeconds="120"
+            overflowToDisk="false"
+            diskSpoolBufferSizeMB="30"
+            maxElementsOnDisk="10000000"
+            diskPersistent="false"
+            diskExpiryThreadIntervalSeconds="120"
+            memoryStoreEvictionPolicy="LRU"
+	/>
+
+    <cache name="doar"
+           maxElementsInMemory="20000"
+           eternal="false"
+           timeToIdleSeconds="0"
+           memoryStoreEvictionPolicy="LRU"/>
+
+</ehcache>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/CollectionDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/CollectionDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/CollectionDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	elementFormDefault="qualified">
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType" />
+			<xs:element name="STATUS" type="STATUSType" />
+			<xs:element ref="SECURITY_PARAMETERS" />
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CHILDType">
+		<xs:attribute name="id" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="CHILDRENType">
+		<xs:sequence>
+			<xs:element name="CHILD" type="CHILDType" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CONFIGURATIONType">
+		<xs:all>
+			<xs:element ref="IMAGE_URL" />
+			<xs:element ref="NAME" />
+			<xs:element name="OWNER" type="OWNERType" />
+			<xs:element name="MANAGERS"  type="MANAGERSType"  minOccurs="0"/>
+			<xs:element name="BASKET" type="BASKETType" minOccurs="0" />
+			<xs:element name="FATHER" type="FATHERType" />
+			<xs:element name="DESCRIPTION" type="DESCRIPTIONType" />
+			<xs:element ref="SUBJECT" />
+			<xs:element ref="PRIVATE" />
+			<xs:element ref="VISIBLE" />
+			<xs:element ref="CONTAINER" />
+			<xs:element name="CHILDREN" type="CHILDRENType" />
+			<xs:element ref="MEMBERSHIP_CONDITION" />
+			<xs:element ref="ICON_URI" />
+		</xs:all>
+	</xs:complexType>
+	<xs:element name="CONTAINER">
+		<xs:simpleType>
+			<xs:restriction base="xs:int">
+				<xs:enumeration value="0" />
+				<xs:enumeration value="1" />
+			</xs:restriction>
+		</xs:simpleType>
+	</xs:element>
+	<xs:complexType name="COUNT_DOCSType">
+		<xs:attribute name="number" type="xs:int" use="required" />
+		<xs:attribute name="last_update" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="DATE_OF_CREATIONType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+	
+	<xs:complexType name="MANAGERSType">
+		<xs:sequence>
+			<xs:element name="MANAGER" type="MANAGERType" minOccurs="0" maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+	
+	<xs:complexType name="DESCRIPTIONType">
+		<xs:sequence>
+			<xs:element name="FIELD" type="FIELDType" maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="FATHERType">
+		<xs:attribute name="id" type="xs:string" use="required" />
+	</xs:complexType>
+	
+	<xs:complexType name="BASKETType">
+		<xs:sequence>
+			<xs:element name="DOCUMENT" type="BASKETDOCUMENTType" minOccurs="0" maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MANAGERType" mixed="true">
+		<xs:attribute name="id" type="xs:string" use="required" />
+		<xs:attribute name="role" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="BASKETDOCUMENTType" mixed="true">
+		<xs:attribute name="id" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="FIELDType" mixed="true">
+		<xs:attribute name="ord" type="xs:int" use="required" />
+		<xs:attribute name="label" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="HEADERType">
+		<xs:all>
+			<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType" />
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType" />
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType" />
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType" />
+			<xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType" />
+		</xs:all>
+	</xs:complexType>
+	<xs:element name="MEMBERSHIP_CONDITION" type="xs:string" />
+	<xs:element name="NAME" type="xs:string" />
+	<xs:element name="IMAGE_URL" type="xs:string" />
+	<xs:complexType name="OWNERType">
+		<xs:attribute name="id" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:element name="PRIVATE">
+		<xs:simpleType>
+			<xs:restriction base="xs:int">
+				<xs:enumeration value="0" />
+				<xs:enumeration value="1" />
+			</xs:restriction>
+		</xs:simpleType>
+	</xs:element>
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="CollectionDSResources" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType" />
+				<xs:element name="BODY" type="BODYType" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="CollectionDSResourceType" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="RETRIEVAL_CONDITIONType" mixed="true">
+		<xs:attribute name="frozen" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:int">
+					<xs:enumeration value="0" />
+					<xs:enumeration value="1" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="SECURITY_PARAMETERS" type="xs:string" />
+	<xs:complexType name="STATUSType">
+		<xs:all>
+			<xs:element name="COUNT_DOCS" type="COUNT_DOCSType" />
+			<xs:element name="RETRIEVAL_CONDITION" type="RETRIEVAL_CONDITIONType" />
+		</xs:all>
+	</xs:complexType>
+	<xs:element name="SUBJECT" type="xs:string" />
+	<xs:element name="VISIBLE">
+		<xs:simpleType>
+			<xs:restriction base="xs:int">
+				<xs:enumeration value="0" />
+				<xs:enumeration value="1" />
+			</xs:restriction>
+		</xs:simpleType>
+	</xs:element>
+	<xs:element name="ICON_URI" type="xs:string" />
+</xs:schema>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/SecurityProfileDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/SecurityProfileDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/SecurityProfileDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	elementFormDefault="qualified">
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType" />
+			<xs:element name="STATUS" type="STATUSType" minOccurs="0" />
+			<xs:element ref="SECURITY_PARAMETERS" minOccurs="0" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="CONFIGURATIONType">
+		<xs:sequence>
+			<xs:element name="secProfId" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="resourceId" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="attributes" type="attribute"
+				nillable="true" maxOccurs="unbounded" minOccurs="0" />
+			<xs:element name="identities" type="typedString"
+				nillable="true" maxOccurs="unbounded" minOccurs="0" />
+			<xs:element name="obligations" type="obligation"
+				nillable="true" maxOccurs="unbounded" minOccurs="0" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="DATE_OF_CREATIONType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="HEADERType">
+		<xs:all>
+			<xs:element name="RESOURCE_IDENTIFIER"
+				type="RESOURCE_IDENTIFIERType" />
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType" />
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType" />
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType" />
+			<xs:element name="DATE_OF_CREATION"
+				type="DATE_OF_CREATIONType" />
+		</xs:all>
+	</xs:complexType>
+
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="SecurityProfileDSResources" />
+					<xs:enumeration value="PendingDSResources" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType" />
+				<xs:element name="BODY" type="BODYType" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="SecurityProfileDSResourceType" />
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required" />
+	</xs:complexType>
+
+	<xs:element name="SECURITY_PARAMETERS" type="xs:string" />
+
+	<xs:complexType name="STATUSType"></xs:complexType>
+
+	<xs:complexType name="attribute">
+		<xs:sequence>
+			<xs:element name="key" type="xs:string" minOccurs="0" />
+			<xs:element name="type" type="xs:string" minOccurs="0" />
+			<xs:element name="value" type="xs:string" minOccurs="0" />
+			<xs:element name="attributes" type="attribute"
+				nillable="true" maxOccurs="unbounded" minOccurs="0" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="typedString">
+		<xs:sequence>
+			<xs:element name="text" type="xs:string" minOccurs="0" />
+			<xs:element name="type" type="xs:string" minOccurs="0" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="obligation">
+		<xs:sequence>
+			<xs:element name="obligation" type="xs:string"
+				minOccurs="0" />
+			<xs:element name="resource" type="xs:string" minOccurs="0" />
+			<xs:element name="attributes" type="attribute"
+				nillable="true" maxOccurs="unbounded" minOccurs="0" />
+		</xs:sequence>
+	</xs:complexType>
+
+</xs:schema>
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/MDFormatDSResourceType.xsd
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/MDFormatDSResourceType.xsd	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main/resources/xsd/MDFormatDSResourceType.xsd	(revision 48242)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+	<xs:annotation>
+		<xs:documentation>Standard part of any Resource Profile</xs:documentation>
+	</xs:annotation>
+	<xs:element name="RESOURCE_PROFILE">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HEADER" type="HEADERType"/>
+				<xs:element name="BODY" type="BODYType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="HEADERType">
+		<xs:all>
+			<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType"/>
+			<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType"/>
+			<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType"/>
+			<xs:element name="RESOURCE_URI" type="RESOURCE_URIType"/>
+			<xs:element name="DATE_OF_CREATION" type="DATEType"/>
+		</xs:all>
+	</xs:complexType>
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType"/>
+			<xs:element name="STATUS" type="STATUSType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_IDENTIFIERType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="MDFormatDSResourceType"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_KINDType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="MDFormatDSResources"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RESOURCE_URIType">
+		<xs:attribute name="value" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="DATEType">
+		<xs:attribute name="value" type="xs:dateTime" use="required"/>
+	</xs:complexType>
+	<xs:annotation>
+		<xs:documentation>Customisable part of any Resource Profile</xs:documentation>
+	</xs:annotation>
+	<xs:complexType name="CONFIGURATIONType">
+		<xs:all>
+			<xs:element name="NAME" type="xs:string"/>
+			<xs:element name="DESCRIPTION" type="xs:string"/>
+			<xs:element name="SCHEMA">
+				<xs:complexType>
+					<xs:attribute name="uri" type="xs:anyURI" use="required"/>
+				</xs:complexType>
+			</xs:element>
+		</xs:all>
+	</xs:complexType>
+	<xs:complexType name="TERMType">
+		<xs:attribute name="name" type="xs:string" use="required"/>
+		<xs:attribute name="Prefix" type="xs:string" use="required"/>
+		<xs:attribute name="NameSpace" type="xs:string" use="required"/>
+		<xs:attribute name="Schema" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="STATUSType">
+		<xs:all>
+			<xs:element name="LAYOUTS">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="LAYOUT" minOccurs="0" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:all>
+									<xs:element name="FIELDS">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="FIELD" minOccurs="0" maxOccurs="unbounded">
+													<xs:complexType>
+														<xs:attribute name="name" type="xs:string" use="required"/>
+														<xs:attribute name="xpath" type="xs:string" use="required"/>
+														<xs:attribute name="indexable" type="xs:boolean" use="required"/>
+														<xs:attribute name="result" type="xs:boolean" use="required"/>
+														<xs:attribute name="type" type="xs:string"/>
+														<xs:attribute name="stat" type="xs:boolean"/>
+														<xs:attribute name="tokenizable" type="xs:boolean"/>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="TRANSFORMATION" minOccurs="0">
+										<xs:complexType mixed="true">
+											<xs:complexContent mixed="true">
+												<xs:restriction base="xs:anyType">
+													<xs:sequence>
+														<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+													</xs:sequence>
+													<xs:attribute name="type" type="xs:string" use="required"/>
+												</xs:restriction>
+											</xs:complexContent>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="RULES" minOccurs="0">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="RULE" minOccurs="0" maxOccurs="unbounded"/>
+											</xs:sequence>
+										</xs:complexType>
+									</xs:element>
+								</xs:all>
+								<xs:attribute name="name" type="xs:string" use="required"/>
+							</xs:complexType>
+						</xs:element>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:all>
+	</xs:complexType>
+</xs:schema>
\ No newline at end of file
Index: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0/src/main	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0/src/main	(revision 48242)

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0/src/main
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+
Index: modules/uoa-commons/tags/uoa-commons-2.0.0
===================================================================
--- modules/uoa-commons/tags/uoa-commons-2.0.0	(nonexistent)
+++ modules/uoa-commons/tags/uoa-commons-2.0.0	(revision 48242)

Property changes on: modules/uoa-commons/tags/uoa-commons-2.0.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,7 ##
+*.iml
+.classpath
+.settings
+*.iml
+.project
+target
+*.idea
