Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/pom.xml
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/pom.xml	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/pom.xml	(revision 55530)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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>dnet-data-transformation-service</artifactId>
+	<packaging>jar</packaging>
+	<version>3.0.4</version>
+	<scm>
+	  <developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4</developerConnection>
+	</scm>
+	<dependencies>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-data-transformation-service-rmi</artifactId>
+			<version>[1.0.0,2.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-blackboard-common</artifactId>
+			<version>[2.0.0,3.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-resultset-service</artifactId>
+			<version>[2.0.0,3.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-inspector</artifactId>
+			<version>[1.0.0,2.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>unibi-data-collective-transformation-common</artifactId>
+			<version>[2.0.0,3.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-modular-ui</artifactId>
+			<version>[3.0.0,4.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>${javax.servlet.version}</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+</project>
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/functionality/modular/ui/views/ui/transform.st
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/functionality/modular/ui/views/ui/transform.st	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/functionality/modular/ui/views/ui/transform.st	(revision 55530)
@@ -0,0 +1,44 @@
+$common/master(
+
+header={
+	<script type="text/javascript" src="../resources/js/angular.min.js"></script>
+	<script type="text/javascript" src="../resources/js/transform/transform.js"></script>
+},
+onLoad={},
+body={
+<div class="row" ng-app="transformUI" ng-controller="transformCtrl">
+	<div class="col-xs-12 col-md-10 col-lg-8">
+		<form>
+			<div class="form-group">
+				<label>Transformation rules:</label>
+				<select name="rule" class="form-control" ng-model="rule">
+					$rules:{<option $if(it.selected)$selected$endif$ value="$it.id$">$it.name$</option>}$
+				</select>
+			</div>
+			<div class="form-group">
+				<label>Input Record:</label>
+				<textarea cols="100" rows="10" class="form-control" ng-model="inputRecord"></textarea>
+			</div>
+		
+			<button class="btn btn-sm btn-primary" ng-click="transform(rule, inputRecord)" ng-disabled="!rule || !inputRecord">transform</button>
+			
+			<button disabled="disabled"                                        class="btn btn-sm btn-default pull-right" ng-if="!rule">show transformation rule</button>
+			<a ng-href="./isManager.do#/profile/{{rule | encodeURIComponent}}" class="btn btn-sm btn-default pull-right" ng-if="rule" >show transformation rule</a>
+			
+		</form>
+		
+		<br />
+		
+		<p ng-if="outputRecord">
+			<label>Output Record:</label>
+			<pre ng-if="outputRecord">{{outputRecord}}</pre>
+		</p>
+		
+		<p ng-if="error.message">
+			<label>Error: <i>{{error.message}}</i></label>
+			<pre ng-if="error.stacktrace">{{error.stacktrace}}</pre>
+		</p>
+	</div>
+</div>	
+}
+)$
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/web/resources/js/transform/transform.js
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/web/resources/js/transform/transform.js	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/web/resources/js/transform/transform.js	(revision 55530)
@@ -0,0 +1,28 @@
+var module = angular.module('transformUI', []);
+
+module.controller('transformCtrl', function ($scope, $http) {
+	$scope.outputRecord = '';
+	$scope.error = {};
+	
+	$scope.transform = function(rule, s) {
+		$scope.outputRecord = '';
+		$scope.error = {};
+		$http.defaults.headers.post["Content-Type"] = "application/json; charset=UTF-8";
+		$http.post('transform/transform.do?rule=' + encodeURIComponent(rule), s).success(function(res) {
+            	if(res) {
+            		$scope.outputRecord = res;
+            	} else {
+            		$scope.error({
+            			'message' : 'empty response',
+            		});
+            	}
+		}).error(function(err) {
+			$scope.error = err;
+		});
+				
+	}
+});
+
+module.filter('encodeURIComponent', function() {
+	return window.encodeURIComponent;
+});
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/webContext-dnet-data-transformation-inspector.xml
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/webContext-dnet-data-transformation-inspector.xml	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/webContext-dnet-data-transformation-inspector.xml	(revision 55530)
@@ -0,0 +1,31 @@
+<?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"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="transformationInspectorGroup"
+		class="eu.dnetlib.enabling.inspector.StaticEntryPointDescriptorGroup"
+		p:name="transformer">
+		<property name="descriptors">
+			<list>
+				<bean class="eu.dnetlib.enabling.inspector.StaticEntryPointDescriptor"
+					p:name="transformer" p:relativeUrl="transform.do"
+					p:hiddenAsDefault="true"/>
+			</list>
+		</property>
+	</bean>
+
+	<bean name="/ui/transform.do"
+		class="eu.dnetlib.data.transformation.ui.TransformEntryPointController"
+		p:menu="Transformation Tester" p:title="Transformation Tester"
+		p:description="Transformation Tester" p:group="Tools"
+		p:order="6">
+		<property name="permissionLevels">
+			<set>
+				<value>DS_ADMIN</value>
+			</set>
+		</property>
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/test/schemas/TransformationRuleDSResourceType.xsd
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/test/schemas/TransformationRuleDSResourceType.xsd	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/test/schemas/TransformationRuleDSResourceType.xsd	(revision 55530)
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by Paolo (ISTI 
+	- 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="RESOURCE_TYPEType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="TransformationRuleDSResourceType" />
+				</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="TransformationRuleDSResources" />
+				</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: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="CONFIGURATIONType">
+		<xs:all>
+			<xs:element name="SOURCE_METADATA_FORMAT" minOccurs="0"
+				maxOccurs="1" type="METADATA_FORMATType" />
+			<xs:element name="SINK_METADATA_FORMAT" minOccurs="0"
+				maxOccurs="1" type="METADATA_FORMATType" />
+			<xs:element name="IMPORTED" type="IMPORTEDType" />
+			<xs:element name="SCRIPT" type="SCRIPTType" />
+		</xs:all>
+	</xs:complexType>
+
+	<xs:complexType name="METADATA_FORMATType">
+		<xs:attribute name="name" type="xs:string" />
+		<xs:attribute name="interpretation" type="xs:string" />
+		<xs:attribute name="layout" type="xs:string" />
+	</xs:complexType>
+	<xs:complexType name="STATUSType">
+		<xs:all>
+		</xs:all>
+	</xs:complexType>
+
+	<xs:complexType name="BODYType">
+		<xs:sequence>
+			<xs:element name="CONFIGURATION" type="CONFIGURATIONType" />
+			<xs:element name="STATUS" type="STATUSType" />
+			<xs:element name="SECURITY_PARAMETERS" type="xs:string" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="SCRIPTType">
+		<xs:sequence>
+			<xs:element name="TITLE" type="xs:string" />
+			<xs:element name="CODE" type="CODEType" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="CODEType" mixed="true">
+		<xs:complexContent mixed="true">
+			<xs:restriction base="xs:anyType">
+				<xs:sequence>
+					<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:restriction>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="SCRIPT_REFERENCEType" mixed="true">
+		<xs:attribute name="id" use="required" />
+	</xs:complexType>
+
+	<xs:complexType name="IMPORTEDType">
+		<xs:sequence>
+			<xs:element name="SCRIPT_REFERENCE" type="SCRIPT_REFERENCEType"
+				minOccurs="0" maxOccurs="unbounded"></xs:element>
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/applicationContext-dnet-data-transformation-service.xml
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/applicationContext-dnet-data-transformation-service.xml	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/applicationContext-dnet-data-transformation-service.xml	(revision 55530)
@@ -0,0 +1,34 @@
+<?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:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:wsa="http://cxf.apache.org/ws/addressing"
+	xmlns:p="http://www.springframework.org/schema/p" xmlns:http="http://cxf.apache.org/transports/http/configuration"
+	xmlns:t="http://dnetlib.eu/springbeans/t" xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:util="http://www.springframework.org/schema/util"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                                    http://cxf.apache.org/ws/addressing http://cxf.apache.org/schemas/ws-addr-conf.xsd
+                                    http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd
+                                    http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+                            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
+                            http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd">
+
+	<bean id="transformationService" class="eu.dnetlib.data.transformation.service.TransformationServiceImpl"
+		init-method="start" destroy-method="stop" />
+		
+	<bean id="dataTransformerFactory" class="eu.dnetlib.data.transformation.service.DataTransformerFactory" />
+
+	<bean id="transformationServiceLocator" class="eu.dnetlib.enabling.tools.StaticServiceLocator"
+		p:service-ref="transformationService" />
+
+	<!-- endpoints -->
+	<jaxws:endpoint id="transformationServiceEndpoint" implementor="#transformationService"
+		implementorClass="eu.dnetlib.data.transformation.service.rmi.TransformationService" address="/transformation" />
+
+	<template:instance name="serviceRegistrationManager"
+		t:serviceRegistrationManagerClass="eu.dnetlib.enabling.tools.registration.ValidatingServiceRegistrationManagerImpl"
+		t:name="transformationServiceRegistrationManager" t:service="transformationService"
+		t:endpoint="transformationServiceEndpoint" t:jobScheduler="jobScheduler"
+		t:serviceRegistrator="blackboardServiceRegistrator" />
+
+</beans>
\ No newline at end of file
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/enabling/views/inspector/transform.st
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/enabling/views/inspector/transform.st	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/resources/eu/dnetlib/enabling/views/inspector/transform.st	(revision 55530)
@@ -0,0 +1,36 @@
+$inspector/master(it={
+
+<style type="text/css">
+  #results {
+    width: 100%;
+  }
+
+  #results td:first-child {
+   width: 2em;
+  }
+
+  #results td {
+    border: 1px solid #cecece;
+  }
+</style>
+
+<h2>Test transformation:</h2>
+
+<form method="POST">
+Transformation rules:
+<select name="rule">
+$rules:{<option $if(it.selected)$selected$endif$ value="$it.id$">$it.name$</option>}$
+</select><br /><br />
+
+Input Record:<br />
+<textarea name="record" cols="100" rows="10">$input$</textarea>
+<br /><br />
+<input type="submit" value="submit"/>
+</form>
+<br />
+
+Output Record:<br />
+<textarea readonly="readonly" cols="100" rows="10">$output$</textarea>
+
+
+})$
\ No newline at end of file
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/DataTransformationController.java
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/DataTransformationController.java	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/DataTransformationController.java	(revision 55530)
@@ -0,0 +1,64 @@
+package eu.dnetlib.data.transformation.ui;
+
+import java.io.IOException;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import eu.dnetlib.data.transformation.service.DataTransformerFactory;
+import eu.dnetlib.data.transformation.service.SimpleDataTransformer;
+import eu.dnetlib.enabling.inspector.AbstractInspectorController;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.functionality.modular.ui.error.ErrorMessage;
+
+@Controller
+public class DataTransformationController extends AbstractInspectorController {
+
+	@Resource
+	private DataTransformerFactory dataTransformerFactory;
+
+	@Resource
+	private TransformerUtils transformerUtils;
+
+	@RequestMapping(value = "/inspector/transform.do")
+	public void transform(final Model model,
+			@RequestParam(value = "rule", required = false) final String ruleId,
+			@RequestParam(value = "record", required = false) final String record) throws Exception {
+
+		model.addAttribute("rules", transformerUtils.obtainRuleProfiles(ruleId));
+
+		if (ruleId != null && record != null) {
+			final SimpleDataTransformer transformer = dataTransformerFactory.createTransformer(ruleId);
+			model.addAttribute("input", record);
+			model.addAttribute("output", transformer.evaluate(record));
+		}
+	}
+
+	@RequestMapping(value = "/ui/transform/transform.do")
+	public void transform(final HttpServletResponse res,
+			@RequestParam(value = "rule", required = true) final String ruleId,
+			@RequestBody final String record) throws ISLookUpDocumentNotFoundException, ISLookUpException, IOException {
+		res.setContentType("text/xml");
+		IOUtils.write(dataTransformerFactory.createTransformer(ruleId).evaluate(record), res.getOutputStream());
+	}
+
+	@ExceptionHandler(Exception.class)
+	@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
+	public @ResponseBody ErrorMessage handleException(final HttpServletRequest req, final Exception e) {
+		return new ErrorMessage(e.getMessage(), ExceptionUtils.getStackTrace(e));
+	}
+}
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/TransformerUtils.java
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/TransformerUtils.java	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/TransformerUtils.java	(revision 55530)
@@ -0,0 +1,38 @@
+package eu.dnetlib.data.transformation.ui;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Component;
+
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+
+@Component
+public class TransformerUtils {
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	public List<SelectOption> obtainRuleProfiles(final String currentId) throws ISLookUpException {
+		final String xquery = "for $x " +
+				"in collection('/db/DRIVER/TransformationRuleDSResources/TransformationRuleDSResourceType') " +
+				"return concat($x//RESOURCE_IDENTIFIER/@value, ' @@@ ', $x//TITLE)";
+
+		return serviceLocator.getService(ISLookUpService.class)
+				.quickSearchProfile(xquery)
+				.stream()
+				.map(s -> {
+					final String[] arr = s.split("@@@");
+					final String id = arr[0].trim();
+					final String name = arr[1].trim();
+					return new SelectOption(id, name, id.equals(currentId));
+				})
+				.sorted()
+				.collect(Collectors.toList());
+
+	}
+}
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/SelectOption.java
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/SelectOption.java	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/SelectOption.java	(revision 55530)
@@ -0,0 +1,31 @@
+package eu.dnetlib.data.transformation.ui;
+
+public class SelectOption implements Comparable<SelectOption> {
+
+	private final String id;
+	private final String name;
+	private final boolean selected;
+
+	public SelectOption(final String id, final String name, final boolean selected) {
+		this.id = id;
+		this.name = name;
+		this.selected = selected;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public boolean isSelected() {
+		return selected;
+	}
+
+	@Override
+	public int compareTo(final SelectOption o) {
+		return getName().toLowerCase().compareTo(o.getName().toLowerCase());
+	}
+}
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/TransformEntryPointController.java
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/TransformEntryPointController.java	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/ui/TransformEntryPointController.java	(revision 55530)
@@ -0,0 +1,21 @@
+package eu.dnetlib.data.transformation.ui;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.ui.ModelMap;
+
+import eu.dnetlib.functionality.modular.ui.ModuleEntryPoint;
+
+public class TransformEntryPointController extends ModuleEntryPoint {
+
+	@Resource
+	private TransformerUtils transformerUtils;
+
+	@Override
+	protected void initialize(final ModelMap map, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
+		map.addAttribute("rules", transformerUtils.obtainRuleProfiles(null));
+	}
+
+}
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/DataTransformerFactory.java
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/DataTransformerFactory.java	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/DataTransformerFactory.java	(revision 55530)
@@ -0,0 +1,41 @@
+package eu.dnetlib.data.transformation.service;
+
+import javax.annotation.Resource;
+
+import eu.dnetlib.common.profile.ResourceDao;
+import eu.dnetlib.data.collective.transformation.VocabularyRegistry;
+import eu.dnetlib.data.collective.transformation.utils.TransformationRulesImportTool;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+
+public class DataTransformerFactory {
+
+	@Resource(name = "vocabularyRegistry")
+	private VocabularyRegistry vocabularyRegistry;
+
+	@Resource(name = "transformationTemplate")
+	private org.springframework.core.io.Resource transformationTemplate;
+
+	@Resource(name = "defaultSchema")
+	private org.springframework.core.io.Resource defaultSchema;
+
+	@Resource(name = "transformationRuleProfileUtil")
+	private TransformationRulesImportTool transformationRuleProfileUtil;
+
+	@Resource(name = "resourceDao")
+	private ResourceDao resourceDao;
+	
+	@Resource(name = "blacklistApi")
+	private org.springframework.core.io.Resource blacklistApi;
+
+	public SimpleDataTransformer createTransformer(final String ruleid) throws ISLookUpDocumentNotFoundException, ISLookUpException {
+		// String profile = lookupLocator.getService().getResourceProfile(ruleid);
+		SimpleDataTransformer transformer = new SimpleDataTransformer(ruleid);
+		try {
+			transformer.setupEngine(vocabularyRegistry, transformationTemplate, defaultSchema, transformationRuleProfileUtil, resourceDao, blacklistApi);
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+		return transformer;
+	}
+}
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/SimpleDataTransformer.java
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/SimpleDataTransformer.java	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/SimpleDataTransformer.java	(revision 55530)
@@ -0,0 +1,96 @@
+package eu.dnetlib.data.transformation.service;
+
+import javax.xml.transform.TransformerConfigurationException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.core.io.Resource;
+
+import eu.dnetlib.common.profile.ProfileNotFoundException;
+import eu.dnetlib.common.profile.ResourceDao;
+import eu.dnetlib.data.collective.transformation.VocabularyRegistry;
+import eu.dnetlib.data.collective.transformation.engine.SimpleTransformationEngine;
+import eu.dnetlib.data.collective.transformation.engine.core.TransformationImpl;
+import eu.dnetlib.data.collective.transformation.utils.TransformationRulesImportTool;
+import eu.dnetlib.miscutils.functional.UnaryFunction;
+
+public class SimpleDataTransformer implements UnaryFunction<String, String> {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(SimpleDataTransformer.class);
+
+	/**
+	 * Transformation rule profile
+	 */
+	private String ruleProfile;
+	private SimpleTransformationEngine transformationEngine;
+
+	public SimpleDataTransformer(final String ruleProfile) {
+		this.ruleProfile = ruleProfile;
+
+		// TODO
+		// instantiate here the xml transformer
+
+		if (log.isDebugEnabled()) {
+			log.debug("************************************************************");
+			log.debug("New transformer created from profile " + ruleProfile);
+			log.debug("************************************************************");
+		}
+
+	}
+
+	@Override
+	public String evaluate(String record) {
+		if (log.isDebugEnabled()) {
+			log.debug("************************************************************");
+			log.debug("INPUT: " + record);
+			log.debug("************************************************************");
+		}
+
+		final String output = transform(record);
+
+		if (log.isDebugEnabled()) {
+			log.debug("************************************************************");
+			log.debug("OUTPUT: " + output);
+			log.debug("************************************************************");
+		}
+
+		return output;
+	}
+
+	private String transform(String record) {
+		// use here the xml transformer
+		return transformationEngine.transform(record);
+	}
+
+	protected void setupEngine(VocabularyRegistry vocabularyRegistry, Resource transformationTemplate, 
+			Resource defaultSchema, TransformationRulesImportTool rulesProfileUtil, ResourceDao resourceDao, Resource blacklistApi)throws TransformerConfigurationException, ProfileNotFoundException{
+		transformationEngine = new SimpleTransformationEngine();
+		transformationEngine.setVocabularyRegistry(vocabularyRegistry);
+		TransformationImpl transformation = new TransformationImpl();
+		transformation.setSchema(defaultSchema);
+		transformation.setTemplate(transformationTemplate);
+		transformation.init();
+		if (log.isDebugEnabled()) {
+			log.debug("************************************************************");
+			log.debug(ruleProfile);
+			log.debug("************************************************************");
+		}
+		transformation.setRuleLanguageParser(rulesProfileUtil.getRuleLanguageParser(ruleProfile));
+		transformation.configureTransformation();
+		transformationEngine.setTransformation(transformation);
+		transformationEngine.setResourceDao(resourceDao);
+		transformationEngine.setBlacklistApi(blacklistApi);
+	}
+	
+	public String getRuleProfile() {
+		return ruleProfile;
+	}
+
+	public void setRuleProfile(String ruleProfile) {
+		this.ruleProfile = ruleProfile;
+	}
+
+}
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/TransformationServiceImpl.java
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/TransformationServiceImpl.java	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/src/main/java/eu/dnetlib/data/transformation/service/TransformationServiceImpl.java	(revision 55530)
@@ -0,0 +1,37 @@
+package eu.dnetlib.data.transformation.service;
+
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import eu.dnetlib.data.transformation.service.rmi.TransformationService;
+import eu.dnetlib.data.transformation.service.rmi.TransformationServiceException;
+import eu.dnetlib.enabling.resultset.MappedResultSetFactory;
+import eu.dnetlib.enabling.tools.AbstractBaseService;
+
+public class TransformationServiceImpl extends AbstractBaseService implements TransformationService {
+
+	@Resource
+	private MappedResultSetFactory mappedResultSetFactory;
+	
+	@Resource
+	private DataTransformerFactory dataTransformerFactory;
+	
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(TransformationServiceImpl.class);
+	
+	@Override
+	public W3CEndpointReference transform(String ruleid, W3CEndpointReference epr) throws TransformationServiceException {
+		try {
+			return mappedResultSetFactory.createMappedResultSet(epr, dataTransformerFactory.createTransformer(ruleid));
+		} catch (Exception e) {
+			log.error("Error generating mapped resultset - ruleId: " + ruleid, e);
+			throw new TransformationServiceException("Error generating mapped resultset - ruleId: " + ruleid, e);
+		}
+	}
+
+}
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/deploy.info
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/deploy.info	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4/deploy.info	(revision 55530)
@@ -0,0 +1 @@
+{"type_source": "SVN", "goal": "package -U -T 4C source:jar", "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-data-transformation-service/trunk/", "deploy_repository": "dnet45-snapshots", "version": "4", "mail": "sandro.labruzzo@isti.cnr.it,michele.artini@isti.cnr.it, claudio.atzori@isti.cnr.it, alessia.bardi@isti.cnr.it", "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet45-snapshots", "name": "dnet-data-transformation-service"}
\ No newline at end of file
Index: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4
===================================================================
--- modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4	(nonexistent)
+++ modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4	(revision 55530)

Property changes on: modules/dnet-data-transformation-service/tags/dnet-data-transformation-service-3.0.4
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,5 ##
+.classpath
+target
+.project
+.settings
+*.iml
