Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FileSystemIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FileSystemIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FileSystemIterator.java	(revision 48025)
@@ -0,0 +1,89 @@
+package eu.dnetlib.data.collector.plugins.filesystem;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Sets;
+
+/**
+ * Class enabling lazy & recursive iteration of a filesystem tree. The iterator iterates over file paths.
+ *
+ * @author Andrea
+ *
+ */
+public class FileSystemIterator implements Iterator<String> {
+
+	/** The logger */
+	private static final Log log = LogFactory.getLog(FileSystemIterator.class);
+
+	private Set<String> extensions = Sets.newHashSet();
+	private Iterator<Path> pathIterator;
+	private String current;
+
+	public FileSystemIterator(final String baseDir, final String extensions) {
+		if(StringUtils.isNotBlank(extensions)) {
+			this.extensions = Sets.newHashSet(extensions.split(","));
+		}
+		try {
+			this.pathIterator = Files.newDirectoryStream(Paths.get(baseDir)).iterator();
+			this.current = walkTillNext();
+		} catch (IOException e) {
+			log.error("Cannot initialize File System Iterator. Is this path correct? " + baseDir);
+			throw new RuntimeException("Filesystem collection error.", e);
+		}
+	}
+
+	@Override
+	public boolean hasNext() {
+		return current != null;
+	}
+
+	@Override
+	public synchronized String next() {
+		String pivot = new String(current);
+		current = walkTillNext();
+		log.debug("Returning: " + pivot);
+		return pivot;
+	}
+
+	@Override
+	public void remove() {}
+
+	/**
+	 * Walk the filesystem recursively until it finds a candidate. Strategies: a) For any directory found during the walk, an iterator is
+	 * built and concat to the main one; b) Any file is checked against admitted extensions
+	 *
+	 * @return the next element to be returned by next call of this.next()
+	 */
+	private synchronized String walkTillNext() {
+		while (pathIterator.hasNext()) {
+			Path nextFilePath = pathIterator.next();
+			if (Files.isDirectory(nextFilePath)) {
+				// concat
+				try {
+					pathIterator = Iterators.concat(pathIterator, Files.newDirectoryStream(nextFilePath).iterator());
+					log.debug("Adding folder iterator: " + nextFilePath.toString());
+				} catch (IOException e) {
+					log.error("Cannot create folder iterator! Is this path correct? " + nextFilePath.toString());
+					return null;
+				}
+			} else {
+				if (extensions.isEmpty() || extensions.contains(FilenameUtils.getExtension(nextFilePath.toString()))) {
+					log.debug("Returning: " + nextFilePath.toString());
+					return nextFilePath.toString();
+				}
+			}
+		}
+		return null;
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpIterator.java	(revision 48025)
@@ -0,0 +1,206 @@
+package eu.dnetlib.data.collector.plugins.sftp;
+
+import java.io.OutputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.*;
+
+import com.jcraft.jsch.*;
+import eu.dnetlib.data.collector.rmi.CollectorServiceRuntimeException;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+
+/**
+ * Created by andrea on 11/01/16.
+ */
+public class SftpIterator implements Iterator<String> {
+    private static final Log log = LogFactory.getLog(SftpIterator.class);
+
+    private static final int MAX_RETRIES = 5;
+    private static final int DEFAULT_TIMEOUT = 30000;
+    private static final long BACKOFF_MILLIS = 10000;
+
+    private String baseUrl;
+    private String sftpURIScheme;
+    private String sftpServerAddress;
+    private String remoteSftpBasePath;
+    private String username;
+    private String password;
+    private boolean isRecursive;
+    private Set<String> extensionsSet;
+	private boolean incremental;
+
+    private Session sftpSession;
+    private ChannelSftp sftpChannel;
+
+    private Queue<String> queue;
+
+	private DateTime fromDate = null;
+	private DateTimeFormatter simpleDateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd");
+
+	public SftpIterator(String baseUrl, String username, String password, boolean isRecursive, Set<String> extensionsSet, String fromDate) {
+		this.baseUrl = baseUrl;
+        this.username = username;
+        this.password = password;
+        this.isRecursive = isRecursive;
+        this.extensionsSet = extensionsSet;
+		this.incremental = StringUtils.isNotBlank(fromDate);
+		if (incremental) {
+			//I expect fromDate in the format 'yyyy-MM-dd'. See class eu.dnetlib.msro.workflows.nodes.collect.FindDateRangeForIncrementalHarvestingJobNode .
+			this.fromDate = DateTime.parse(fromDate, simpleDateTimeFormatter);
+			log.debug("fromDate string: " + fromDate + " -- parsed: " + this.fromDate.toString());
+		}
+		try {
+            URI sftpServer = new URI(baseUrl);
+            this.sftpURIScheme = sftpServer.getScheme();
+            this.sftpServerAddress = sftpServer.getHost();
+            this.remoteSftpBasePath = sftpServer.getPath();
+        } catch (URISyntaxException e) {
+            throw new CollectorServiceRuntimeException("Bad syntax in the URL " + baseUrl);
+        }
+
+        connectToSftpServer();
+        initializeQueue();
+    }
+
+    private void connectToSftpServer() {
+        JSch jsch = new JSch();
+
+        try {
+            JSch.setConfig("StrictHostKeyChecking", "no");
+            sftpSession = jsch.getSession(username, sftpServerAddress);
+            sftpSession.setPassword(password);
+            sftpSession.connect();
+
+            Channel channel = sftpSession.openChannel(sftpURIScheme);
+            channel.connect();
+            sftpChannel = (ChannelSftp) channel;
+	        String pwd = sftpChannel.pwd();
+	        log.debug("PWD from server: " + pwd);
+	        String fullPath = pwd + remoteSftpBasePath;
+	        sftpChannel.cd(fullPath);
+	        log.debug("PWD from server 2 after 'cd " + fullPath + "' : " + sftpChannel.pwd());
+	        log.info("Connected to SFTP server " + sftpServerAddress);
+        } catch (JSchException e) {
+            throw new CollectorServiceRuntimeException("Unable to connect to remote SFTP server.", e);
+        } catch (SftpException e) {
+            throw new CollectorServiceRuntimeException("Unable to access the base remote path on the SFTP server.", e);
+        }
+    }
+
+    private void disconnectFromSftpServer() {
+        sftpChannel.exit();
+        sftpSession.disconnect();
+    }
+
+    private void initializeQueue() {
+        queue = new LinkedList<String>();
+	    log.info(String.format("SFTP collector plugin collecting from %s with recursion = %s, incremental = %s with fromDate=%s", remoteSftpBasePath,
+			    isRecursive,
+			    incremental, fromDate));
+	    listDirectoryRecursive(".", "");
+    }
+
+    private void listDirectoryRecursive(final String parentDir, final String currentDir) {
+        String dirToList = parentDir;
+	    if (StringUtils.isNotBlank(currentDir)) {
+		    dirToList += "/" + currentDir;
+        }
+	    log.debug("PARENT DIR: " + parentDir);
+	    log.debug("DIR TO LIST: " + dirToList);
+	    try {
+            Vector<ChannelSftp.LsEntry> ls = sftpChannel.ls(dirToList);
+            for (ChannelSftp.LsEntry entry : ls) {
+                String currentFileName = entry.getFilename();
+                if (currentFileName.equals(".") || currentFileName.equals("..")) {
+                    // skip parent directory and directory itself
+                    continue;
+                }
+
+                SftpATTRS attrs = entry.getAttrs();
+                if (attrs.isDir()) {
+                    if (isRecursive) {
+                        listDirectoryRecursive(dirToList, currentFileName);
+                    }
+                } else {
+                    // test the file for extensions compliance and, just in case, add it to the list.
+                    for (String ext : extensionsSet) {
+                        if (currentFileName.endsWith(ext)) {
+	                        //test if the file has been changed after the last collection date:
+	                        if (incremental) {
+		                        int mTime = attrs.getMTime();
+		                        //int times are values reduced by the milliseconds, hence we multiply per 1000L
+		                        DateTime dt = new DateTime(mTime * 1000L);
+		                        if (dt.isAfter(fromDate)) {
+			                        queue.add(currentFileName);
+			                        log.debug(currentFileName + " has changed and must be re-collected");
+		                        } else {
+			                        if (log.isDebugEnabled()) {
+				                        log.debug(currentFileName + " has not changed since last collection");
+			                        }
+		                        }
+	                        } else {
+		                        //if it is not incremental, just add it to the queue
+		                        queue.add(currentFileName);
+	                        }
+
+                        }
+                    }
+                }
+            }
+        } catch (SftpException e) {
+            throw new CollectorServiceRuntimeException("Cannot list the sftp remote directory", e);
+
+        }
+    }
+
+    @Override
+    public boolean hasNext() {
+        if (queue.isEmpty()) {
+            disconnectFromSftpServer();
+            return false;
+        } else {
+            return true;
+        }
+    }
+
+    @Override
+    public String next() {
+        String nextRemotePath = queue.remove();
+        int nRepeat = 0;
+	    String fullPathFile = nextRemotePath;
+	    while (nRepeat < MAX_RETRIES) {
+            try {
+                OutputStream baos = new ByteArrayOutputStream();
+                sftpChannel.get(nextRemotePath, baos);
+	            if (log.isDebugEnabled()) {
+		            fullPathFile = sftpChannel.pwd() + "/" + nextRemotePath;
+		            log.debug(String.format("Collected file from SFTP: %s%s", sftpServerAddress, fullPathFile));
+	            }
+	            return baos.toString();
+            } catch (SftpException e) {
+                nRepeat++;
+	            log.warn(String.format("An error occurred [%s] for %s%s, retrying.. [retried %s time(s)]", e.getMessage(), sftpServerAddress, fullPathFile,
+			            nRepeat));
+	            // disconnectFromSftpServer();
+                try {
+                    Thread.sleep(BACKOFF_MILLIS);
+                } catch (InterruptedException e1) {
+                    log.error(e1);
+                }
+            }
+        }
+	    throw new CollectorServiceRuntimeException(
+			    String.format("Impossible to retrieve FTP file %s after %s retries. Aborting FTP collection.", fullPathFile, nRepeat));
+    }
+
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/HttpCSVCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/HttpCSVCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/HttpCSVCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,169 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.io.*;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.Set;
+
+import com.google.common.collect.Iterators;
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.io.input.BOMInputStream;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+/**
+ * The Class HttpCSVCollectorPlugin.
+ */
+public class HttpCSVCollectorPlugin extends AbstractCollectorPlugin {
+
+	private static final Log log = LogFactory.getLog(HttpCSVCollectorPlugin.class);
+
+	public static final String UTF8_BOM = "\uFEFF";
+
+	/**
+	 * The Class HTTPCSVIterator.
+	 */
+	class HTTPCSVIterator implements Iterable<String> {
+
+		/** The descriptor. */
+		private InterfaceDescriptor descriptor;
+
+		/**
+		 * Instantiates a new HTTPCSV iterator.
+		 *
+		 * @param descriptor
+		 *            the descriptor
+		 */
+		public HTTPCSVIterator(final InterfaceDescriptor descriptor) {
+			this.descriptor = descriptor;
+		}
+
+		/**
+		 * Iterator.
+		 *
+		 * @return the iterator
+		 */
+		@SuppressWarnings("resource")
+		@Override
+		public Iterator<String> iterator() {
+
+			try {
+				final String separator = descriptor.getParams().get("separator");
+				final String identifier = descriptor.getParams().get("identifier");
+				final String quote = descriptor.getParams().get("quote");
+				final URL url = new URL(descriptor.getBaseUrl());
+				long nLines = 0;
+
+				// FIX
+				// This code should skip the lines with invalid quotes
+				final File tempFile = File.createTempFile("csv-", ".tmp");
+				try (InputStream is = url.openConnection().getInputStream();
+						BOMInputStream bomIs = new BOMInputStream(is);
+						BufferedReader reader = new BufferedReader(new InputStreamReader(bomIs));
+						FileWriter fw = new FileWriter(tempFile)) {
+
+					String line;
+					while ((line = reader.readLine()) != null) {
+						if (StringUtils.isBlank(quote) || (quote.charAt(0) != '"') || verifyQuotes(line, separator.charAt(0))) {
+							fw.write(line);
+							fw.write("\n");
+							nLines++;
+						}
+					}
+				}
+				// END FIX
+
+				final CSVFormat format = CSVFormat.EXCEL
+						.withHeader()
+						.withDelimiter(separator.equals("\\t") || StringUtils.isBlank(separator) ? '\t' : separator.charAt(0))
+						.withQuote(StringUtils.isBlank(quote) ? null : quote.charAt(0))
+						.withTrim();
+
+				final CSVParser parser = new CSVParser(new FileReader(tempFile), format);
+				final Set<String> headers = parser.getHeaderMap().keySet();
+
+				final long nRecords = nLines - 1;
+
+				return Iterators.transform(parser.iterator(), input -> {
+					try {
+						final Document document = DocumentHelper.createDocument();
+						final Element root = document.addElement("csvRecord");
+						for (final String key : headers) {
+							final Element row = root.addElement("column");
+							row.addAttribute("name", key).addText(input.get(key));
+							if (key.equals(identifier)) {
+								row.addAttribute("isID", "true");
+							}
+						}
+
+						return document.asXML();
+					} finally {
+						System.out.println(tempFile.getAbsolutePath());
+						if (parser.getRecordNumber() == nRecords) {
+							System.out.println("DELETING " + tempFile.getAbsolutePath());
+							tempFile.delete();
+						}
+					}
+				});
+			} catch (final Exception e) {
+				log.error("Error iterating csv lines", e);
+				return null;
+			}
+		}
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see eu.dnetlib.data.collector.plugin.CollectorPlugin#collect(eu.dnetlib.data.collector.rmi.InterfaceDescriptor, java.lang.String,
+	 * java.lang.String)
+	 */
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor descriptor, final String fromDate, final String untilDate) throws CollectorServiceException {
+
+		return new HTTPCSVIterator(descriptor);
+	}
+
+	public boolean verifyQuotes(final String line, final char separator) {
+		final char[] cs = line.trim().toCharArray();
+		boolean inField = false;
+		boolean skipNext = false;
+		for (int i = 0; i < cs.length; i++) {
+			if (skipNext) {
+				skipNext = false;
+			} else if (inField) {
+				if ((cs[i] == '\"') && ((i == (cs.length - 1)) || (cs[i + 1] == separator))) {
+					inField = false;
+				} else if ((cs[i] == '\"') && (i < (cs.length - 1))) {
+					if ((cs[i + 1] == '\"')) {
+						skipNext = true;
+					} else {
+						log.warn("Skipped invalid line: " + line);
+						return false;
+					}
+				}
+			} else {
+				if ((cs[i] == '\"') && ((i == 0) || (cs[i - 1] == separator))) {
+					inField = true;
+				}
+			}
+		}
+
+		if (inField) {
+			log.warn("Skipped invalid line: " + line);
+			return false;
+		}
+
+		return true;
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,64 @@
+package eu.dnetlib.data.collector.plugins.ftp;
+
+import com.google.common.base.Splitter;
+import com.google.common.collect.Sets;
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+import org.springframework.beans.factory.annotation.Required;
+
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ *
+ * @author Author: Andrea Mannocci
+ *
+ */
+public class FtpCollectorPlugin extends AbstractCollectorPlugin {
+
+	private FtpIteratorFactory ftpIteratorFactory;
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		final String username = interfaceDescriptor.getParams().get("username");
+		final String password = interfaceDescriptor.getParams().get("password");
+		final String recursive = interfaceDescriptor.getParams().get("recursive");
+		final String extensions = interfaceDescriptor.getParams().get("extensions");
+
+		if ((baseUrl == null) || baseUrl.isEmpty()) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+		if ((username == null) || username.isEmpty()) { throw new CollectorServiceException("Param 'username' is null or empty"); }
+		if ((password == null) || password.isEmpty()) { throw new CollectorServiceException("Param 'password' is null or empty"); }
+		if ((recursive == null) || recursive.isEmpty()) { throw new CollectorServiceException("Param 'recursive' is null or empty"); }
+		if ((extensions == null) || extensions.isEmpty()) { throw new CollectorServiceException("Param 'extensions' is null or empty"); }
+
+		return new Iterable<String>() {
+
+			boolean isRecursive = "true".equals(recursive);
+
+			Set<String> extensionsSet = parseSet(extensions);
+
+			@Override
+			public Iterator<String> iterator() {
+				return getFtpIteratorFactory().newIterator(baseUrl, username, password, isRecursive, extensionsSet);
+			}
+
+			private Set<String> parseSet(final String extensions) {
+				return Sets.newHashSet(Splitter.on(",").omitEmptyStrings().trimResults().split(extensions));
+			}
+		};
+	}
+
+	public FtpIteratorFactory getFtpIteratorFactory() {
+		return ftpIteratorFactory;
+	}
+
+	@Required
+	public void setFtpIteratorFactory(final FtpIteratorFactory ftpIteratorFactory) {
+		this.ftpIteratorFactory = ftpIteratorFactory;
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/engine/XmlCleaner.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/engine/XmlCleaner.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/engine/XmlCleaner.java	(revision 48025)
@@ -0,0 +1,265 @@
+package eu.dnetlib.data.collector.plugins.oai.engine;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+/**
+ * @author jochen
+ *
+ */
+public class XmlCleaner {
+	/**
+	 * Pattern for numeric entities.
+	 */
+	private static Pattern validCharacterEntityPattern = Pattern.compile("^&#x?\\d{2,4};"); //$NON-NLS-1$
+	//	    private static Pattern validCharacterEntityPattern = Pattern.compile("^&#?\\d{2,4};"); //$NON-NLS-1$
+	private static Pattern invalidControlCharPattern = Pattern.compile("&#11;");
+	/**
+	 * Pattern that negates the allowable XML 4 byte unicode characters. Valid
+	 * are: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
+	 * [#x10000-#x10FFFF]
+	 */
+	private static Pattern invalidCharacterPattern = Pattern.compile("[^\t\r\n\u0020-\uD7FF\uE000-\uFFFD]"); //$NON-NLS-1$
+
+	// Map entities to their unicode equivalent
+	private static Set<String> goodEntities = new HashSet<String>();
+	private static Map<String, String> badEntities = new HashMap<String, String>();
+	
+	static {
+		// pre-defined XML entities
+		goodEntities.add("&quot;"); //$NON-NLS-1$ // quotation mark
+		goodEntities.add("&amp;"); //$NON-NLS-1$ // ampersand
+		goodEntities.add("&lt;"); //$NON-NLS-1$ // less-than sign
+		goodEntities.add("&gt;"); //$NON-NLS-1$ // greater-than sign
+		// control entities
+		//badEntities.put("&#11;", "");
+		badEntities.put("&#127;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#128;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#129;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#130;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#131;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#132;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#133;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#134;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#135;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#136;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#137;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#138;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#139;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#140;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#141;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#142;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#143;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#144;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#145;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#146;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#147;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#148;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#149;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#150;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#151;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#152;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#153;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#154;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#155;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#156;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#157;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#158;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		badEntities.put("&#159;", " "); //$NON-NLS-1$ //$NON-NLS-2$ // illegal HTML character
+		// misc entities
+		badEntities.put("&euro;", "\u20AC"); //$NON-NLS-1$ //$NON-NLS-2$ // euro
+		badEntities.put("&lsquo;", "\u2018"); //$NON-NLS-1$ //$NON-NLS-2$ // left single quotation mark
+		badEntities.put("&rsquo;", "\u2019"); //$NON-NLS-1$ //$NON-NLS-2$ // right single quotation mark
+		// Latin 1 entities
+		badEntities.put("&nbsp;", "\u00A0"); //$NON-NLS-1$ //$NON-NLS-2$ // no-break space
+		badEntities.put("&iexcl;", "\u00A1"); //$NON-NLS-1$ //$NON-NLS-2$ // inverted exclamation mark
+		badEntities.put("&cent;", "\u00A2"); //$NON-NLS-1$ //$NON-NLS-2$ // cent sign
+		badEntities.put("&pound;", "\u00A3"); //$NON-NLS-1$ //$NON-NLS-2$ // pound sign
+		badEntities.put("&curren;", "\u00A4"); //$NON-NLS-1$ //$NON-NLS-2$ // currency sign
+		badEntities.put("&yen;", "\u00A5"); //$NON-NLS-1$ //$NON-NLS-2$ // yen sign
+		badEntities.put("&brvbar;", "\u00A6"); //$NON-NLS-1$ //$NON-NLS-2$ // broken vertical bar
+		badEntities.put("&sect;", "\u00A7"); //$NON-NLS-1$ //$NON-NLS-2$ // section sign
+		badEntities.put("&uml;", "\u00A8"); //$NON-NLS-1$ //$NON-NLS-2$ // diaeresis
+		badEntities.put("&copy;", "\u00A9"); //$NON-NLS-1$ //$NON-NLS-2$ // copyright sign
+		badEntities.put("&ordf;", "\u00AA"); //$NON-NLS-1$ //$NON-NLS-2$ // feminine ordinal indicator
+		badEntities.put("&laquo;", "\u00AB"); //$NON-NLS-1$ //$NON-NLS-2$ // left-pointing double angle quotation mark
+		badEntities.put("&not;", "\u00AC"); //$NON-NLS-1$ //$NON-NLS-2$ // not sign
+		badEntities.put("&shy;", "\u00AD"); //$NON-NLS-1$ //$NON-NLS-2$ // soft hyphen
+		badEntities.put("&reg;", "\u00AE"); //$NON-NLS-1$ //$NON-NLS-2$ // registered sign
+		badEntities.put("&macr;", "\u00AF"); //$NON-NLS-1$ //$NON-NLS-2$ // macron
+		badEntities.put("&deg;", "\u00B0"); //$NON-NLS-1$ //$NON-NLS-2$ // degree sign
+		badEntities.put("&plusmn;", "\u00B1"); //$NON-NLS-1$ //$NON-NLS-2$ // plus-minus sign
+		badEntities.put("&sup2;", "\u00B2"); //$NON-NLS-1$ //$NON-NLS-2$ // superscript two
+		badEntities.put("&sup3;", "\u00B3"); //$NON-NLS-1$ //$NON-NLS-2$ // superscript three
+		badEntities.put("&acute;", "\u00B4"); //$NON-NLS-1$ //$NON-NLS-2$ // acute accent
+		badEntities.put("&micro;", "\u00B5"); //$NON-NLS-1$ //$NON-NLS-2$ // micro sign
+		badEntities.put("&para;", "\u00B6"); //$NON-NLS-1$ //$NON-NLS-2$ // pilcrow sign
+		badEntities.put("&middot;", "\u00B7"); //$NON-NLS-1$ //$NON-NLS-2$ // middle dot
+		badEntities.put("&cedil;", "\u00B8"); //$NON-NLS-1$ //$NON-NLS-2$ // cedilla
+		badEntities.put("&sup1;", "\u00B9"); //$NON-NLS-1$ //$NON-NLS-2$ // superscript one
+		badEntities.put("&ordm;", "\u00BA"); //$NON-NLS-1$ //$NON-NLS-2$ // masculine ordinal indicator
+		badEntities.put("&raquo;", "\u00BB"); //$NON-NLS-1$ //$NON-NLS-2$ // right-pointing double angle quotation mark
+		badEntities.put("&frac14;", "\u00BC"); //$NON-NLS-1$ //$NON-NLS-2$ // vulgar fraction one quarter
+		badEntities.put("&frac12;", "\u00BD"); //$NON-NLS-1$ //$NON-NLS-2$ // vulgar fraction one half
+		badEntities.put("&frac34;", "\u00BE"); //$NON-NLS-1$ //$NON-NLS-2$ // vulgar fraction three quarters
+		badEntities.put("&iquest;", "\u00BF"); //$NON-NLS-1$ //$NON-NLS-2$ // inverted question mark
+		badEntities.put("&Agrave;", "\u00C0"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter A with grave
+		badEntities.put("&Aacute;", "\u00C1"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter A with acute
+		badEntities.put("&Acirc;", "\u00C2"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter A with circumflex
+		badEntities.put("&Atilde;", "\u00C3"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter A with tilde
+		badEntities.put("&Auml;", "\u00C4"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter A with diaeresis
+		badEntities.put("&Aring;", "\u00C5"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter A with ring above
+		badEntities.put("&AElig;", "\u00C6"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter AE
+		badEntities.put("&Ccedil;", "\u00C7"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter C with cedilla
+		badEntities.put("&Egrave;", "\u00C8"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter E with grave
+		badEntities.put("&Eacute;", "\u00C9"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter E with acute
+		badEntities.put("&Ecirc;", "\u00CA"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter E with circumflex
+		badEntities.put("&Euml;", "\u00CB"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter E with diaeresis
+		badEntities.put("&Igrave;", "\u00CC"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter I with grave
+		badEntities.put("&Iacute;", "\u00CD"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter I with acute
+		badEntities.put("&Icirc;", "\u00CE"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter I with circumflex
+		badEntities.put("&Iuml;", "\u00CF"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter I with diaeresis
+		badEntities.put("&ETH;", "\u00D0"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter ETH
+		badEntities.put("&Ntilde;", "\u00D1"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter N with tilde
+		badEntities.put("&Ograve;", "\u00D2"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter O with grave
+		badEntities.put("&Oacute;", "\u00D3"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter O with acute
+		badEntities.put("&Ocirc;", "\u00D4"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter O with circumflex
+		badEntities.put("&Otilde;", "\u00D5"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter O with tilde
+		badEntities.put("&Ouml;", "\u00D6"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter O with diaeresis
+		badEntities.put("&times;", "\u00D7"); //$NON-NLS-1$ //$NON-NLS-2$ // multiplication sign
+		badEntities.put("&Oslash;", "\u00D8"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter O with stroke
+		badEntities.put("&Ugrave;", "\u00D9"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter U with grave
+		badEntities.put("&Uacute;", "\u00DA"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter U with acute
+		badEntities.put("&Ucirc;", "\u00DB"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter U with circumflex
+		badEntities.put("&Uuml;", "\u00DC"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter U with diaeresis
+		badEntities.put("&Yacute;", "\u00DD"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter Y with acute
+		badEntities.put("&THORN;", "\u00DE"); //$NON-NLS-1$ //$NON-NLS-2$ // latin capital letter THORN
+		badEntities.put("&szlig;", "\u00DF"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter sharp s
+		badEntities.put("&agrave;", "\u00E0"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter a with grave
+		badEntities.put("&aacute;", "\u00E1"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter a with acute
+		badEntities.put("&acirc;", "\u00E2"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter a with circumflex
+		badEntities.put("&atilde;", "\u00E3"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter a with tilde
+		badEntities.put("&auml;", "\u00E4"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter a with diaeresis
+		badEntities.put("&aring;", "\u00E5"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter a with ring above
+		badEntities.put("&aelig;", "\u00E6"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter ae
+		badEntities.put("&ccedil;", "\u00E7"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter c with cedilla
+		badEntities.put("&egrave;", "\u00E8"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter e with grave
+		badEntities.put("&eacute;", "\u00E9"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter e with acute
+		badEntities.put("&ecirc;", "\u00EA"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter e with circumflex
+		badEntities.put("&euml;", "\u00EB"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter e with diaeresis
+		badEntities.put("&igrave;", "\u00EC"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter i with grave
+		badEntities.put("&iacute;", "\u00ED"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter i with acute
+		badEntities.put("&icirc;", "\u00EE"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter i with circumflex
+		badEntities.put("&iuml;", "\u00EF"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter i with diaeresis
+		badEntities.put("&eth;", "\u00F0"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter eth
+		badEntities.put("&ntilde;", "\u00F1"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter n with tilde
+		badEntities.put("&ograve;", "\u00F2"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter o with grave
+		badEntities.put("&oacute;", "\u00F3"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter o with acute
+		badEntities.put("&ocirc;", "\u00F4"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter o with circumflex
+		badEntities.put("&otilde;", "\u00F5"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter o with tilde
+		badEntities.put("&ouml;", "\u00F6"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter o with diaeresis
+		badEntities.put("&divide;", "\u00F7"); //$NON-NLS-1$ //$NON-NLS-2$ // division sign
+		badEntities.put("&oslash;", "\u00F8"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter o with stroke
+		badEntities.put("&ugrave;", "\u00F9"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter u with grave
+		badEntities.put("&uacute;", "\u00FA"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter u with acute
+		badEntities.put("&ucirc;", "\u00FB"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter u with circumflex
+		badEntities.put("&uuml;", "\u00FC"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter u with diaeresis
+		badEntities.put("&yacute;", "\u00FD"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter y with acute
+		badEntities.put("&thorn;", "\u00FE"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter thorn
+		badEntities.put("&yuml;", "\u00FF"); //$NON-NLS-1$ //$NON-NLS-2$ // latin small letter y with diaeresis
+	}
+	/**
+	 * For each entity in the input that is not allowed in XML, replace the
+	 * entity with its unicode equivalent or remove it. For each instance of a
+	 * bare &, replace it with &amp;<br/>
+	 * XML only allows 4 entities: &amp;amp;, &amp;quot;, &amp;lt; and &amp;gt;.
+	 *
+	 * @param broken
+	 *            the string to handle entities
+	 * @return the string with entities appropriately fixed up
+	 */
+	static public String cleanAllEntities(final String broken) {
+		if (broken == null) {
+			return null;
+		}
+
+		String working = invalidControlCharPattern.matcher(broken).replaceAll("");
+		working = invalidCharacterPattern.matcher(working).replaceAll("");
+		
+		int cleanfrom = 0;
+		
+		while (true) {
+			int amp = working.indexOf('&', cleanfrom);
+			// If there are no more amps then we are done
+			if (amp == -1) {
+				break;
+			}
+			// Skip references of the kind &#ddd;
+			if (validCharacterEntityPattern.matcher(working.substring(amp)).find()) {
+				cleanfrom = working.indexOf(';', amp) + 1;
+				continue;
+			}
+			int i = amp + 1;
+			while (true) {
+				// if we are at the end of the string then just escape the '&';
+				if (i >= working.length()) {
+					return working.substring(0, amp) + "&amp;" + working.substring(amp + 1); //$NON-NLS-1$
+				}
+				// if we have come to a ; then we have an entity
+				// If it is something that xml can't handle then replace it.
+				char c = working.charAt(i);
+				if (c == ';') {
+					final String entity = working.substring(amp, i + 1);
+					final String replace = handleEntity(entity);
+					working = working.substring(0, amp) + replace + working.substring(i + 1);
+					break;
+				}
+				// Did we end an entity without finding a closing ;
+				// Then treat it as an '&' that needs to be replaced with &amp;
+				if (!Character.isLetterOrDigit(c)) {
+					working = working.substring(0, amp) + "&amp;" + working.substring(amp + 1); //$NON-NLS-1$
+					amp = i + 4; // account for the 4 extra characters
+					break;
+				}
+				i++;
+			}
+			cleanfrom = amp + 1;
+		}
+
+		if (Pattern.compile("<<").matcher(working).find()) {
+			working = working.replaceAll("<<", "&lt;&lt;");
+		}
+
+		if (Pattern.compile(">>").matcher(working).find()) {
+			working = working.replaceAll(">>", "&gt;&gt;");
+		}
+		
+		return working;
+	}
+
+	/**
+	 * Replace entity with its unicode equivalent, if it is not a valid XML
+	 * entity. Otherwise strip it out. XML only allows 4 entities: &amp;amp;,
+	 * &amp;quot;, &amp;lt; and &amp;gt;.
+	 *
+	 * @param entity
+	 *            the entity to be replaced
+	 * @return the substitution for the entity, either itself, the unicode
+	 *         equivalent or an empty string.
+	 */
+	private static String handleEntity(final String entity) {
+		if (goodEntities.contains(entity)) {
+			return entity;
+		}
+		
+		final String replace = (String) badEntities.get(entity);
+		if (replace != null) {
+			return replace;
+		}
+		
+		return replace != null ? replace : "";
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/pom.xml
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/pom.xml	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/pom.xml	(revision 48025)
@@ -0,0 +1,105 @@
+<?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>
+		<relativePath />
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>dnet-modular-collector-service</artifactId>
+	<packaging>jar</packaging>
+	<version>3.3.11</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11</developerConnection>
+	</scm>
+	<dependencies>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-modular-collector-service-rmi</artifactId>
+			<version>[1.3.0,2.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-blackboard-common</artifactId>
+			<version>[2.0.0,3.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>net.sf.opencsv</groupId>
+			<artifactId>opencsv</artifactId>
+			<version>2.0</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-net</groupId>
+			<artifactId>commons-net</artifactId>
+			<version>3.3</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-compress</artifactId>
+			<version>1.6</version>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<version>${mockito.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-httpclient</groupId>
+			<artifactId>commons-httpclient</artifactId>
+			<version>3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>${google.gson.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-csv</artifactId>
+			<version>1.4</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jcraft</groupId>
+			<artifactId>jsch</artifactId>
+			<version>0.1.53</version>
+		</dependency>
+		<dependency>
+			<groupId>joda-time</groupId>
+			<artifactId>joda-time</artifactId>
+			<version>2.9.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.json</groupId>
+			<artifactId>json</artifactId>
+			<version>20160810</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.ximpleware</groupId>
+			<artifactId>vtd-xml</artifactId>
+			<version>2.13.2</version>
+		</dependency>
+
+
+	</dependencies>
+</project>
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,74 @@
+package eu.dnetlib.data.collector.plugins.oai;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Required;
+
+import com.google.common.base.Function;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class OaiCollectorPlugin extends AbstractCollectorPlugin {
+
+	private static final String FORMAT_PARAM = "format";
+	private static final String OAI_SET_PARAM = "set";
+
+	private OaiIteratorFactory oaiIteratorFactory;
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		final String mdFormat = interfaceDescriptor.getParams().get(FORMAT_PARAM);
+		final String setParam = interfaceDescriptor.getParams().get(OAI_SET_PARAM);
+		final List<String> sets = Lists.newArrayList();
+		if (setParam != null) {
+			sets.addAll(Lists.newArrayList(Splitter.on(",").omitEmptyStrings().trimResults().split(setParam)));
+		}
+		if (sets.isEmpty()) {
+			// If no set is defined, ALL the sets must be harvested
+			sets.add("");
+		}
+
+		if (baseUrl == null || baseUrl.isEmpty()) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+
+		if (mdFormat == null || mdFormat.isEmpty()) { throw new CollectorServiceException("Param 'mdFormat' is null or empty"); }
+
+		if (fromDate != null && !fromDate.matches("\\d{4}-\\d{2}-\\d{2}")) { throw new CollectorServiceException("Invalid date (YYYY-MM-DD): " + fromDate); }
+
+		if (untilDate != null && !untilDate.matches("\\d{4}-\\d{2}-\\d{2}")) { throw new CollectorServiceException("Invalid date (YYYY-MM-DD): " + untilDate); }
+
+		return new Iterable<String>() {
+
+			@SuppressWarnings("unchecked")
+			@Override
+			public Iterator<String> iterator() {
+				final Iterable<Iterator<String>> iter = Iterables.transform(sets, new Function<String, Iterator<String>>() {
+
+					@Override
+					public Iterator<String> apply(final String set) {
+						return oaiIteratorFactory.newIterator(baseUrl, mdFormat, set, fromDate, untilDate);
+					}
+				});
+				return Iterators.concat(Iterables.toArray(iter, Iterator.class));
+			}
+		};
+	}
+
+	public OaiIteratorFactory getOaiIteratorFactory() {
+		return oaiIteratorFactory;
+	}
+
+	@Required
+	public void setOaiIteratorFactory(final OaiIteratorFactory oaiIteratorFactory) {
+		this.oaiIteratorFactory = oaiIteratorFactory;
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiIterator.java	(revision 48025)
@@ -0,0 +1,149 @@
+package eu.dnetlib.data.collector.plugins.oai;
+
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Iterator;
+import java.util.Queue;
+import java.util.concurrent.PriorityBlockingQueue;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector;
+import eu.dnetlib.data.collector.plugins.oai.engine.XmlCleaner;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class OaiIterator implements Iterator<String> {
+
+	private static final Log log = LogFactory.getLog(OaiIterator.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private Queue<String> queue = new PriorityBlockingQueue<String>();
+	private SAXReader reader = new SAXReader();
+
+	private String baseUrl;
+	private String set;
+	private String mdFormat;
+	private String fromDate;
+	private String untilDate;
+	private String token;
+	private boolean started;
+	private HttpConnector httpConnector;
+
+	public OaiIterator(final String baseUrl, final String mdFormat, final String set, final String fromDate, final String untilDate, final HttpConnector httpConnector) {
+		this.baseUrl = baseUrl;
+		this.mdFormat = mdFormat;
+		this.set = set;
+		this.fromDate = fromDate;
+		this.untilDate = untilDate;
+		this.started = false;
+		this.httpConnector = httpConnector;
+	}
+	
+	private void verifyStarted() {
+		if (!this.started) {
+			this.started = true;
+			try {
+				this.token = firstPage();
+			} catch (CollectorServiceException e) {
+				throw new RuntimeException(e);
+			}
+		}
+	}
+
+	@Override
+	public boolean hasNext() {
+		synchronized (queue) {
+			verifyStarted();
+			return !queue.isEmpty();
+		}
+	}
+
+	@Override
+	public String next() {
+		synchronized (queue) {
+			verifyStarted();
+			final String res = queue.poll();
+			while (queue.isEmpty() && (token != null) && !token.isEmpty()) {
+				try {
+					token = otherPages(token);
+				} catch (CollectorServiceException e) {
+					throw new RuntimeException(e);
+				}
+			}
+			return res;
+		}
+	}
+
+	@Override
+	public void remove() {}
+
+	private String firstPage() throws CollectorServiceException {
+		try {
+			String url = baseUrl + "?verb=ListRecords&metadataPrefix=" + URLEncoder.encode(mdFormat,"UTF-8");
+			if ((set != null) && !set.isEmpty()) {
+				url += "&set=" + URLEncoder.encode(set,"UTF-8");
+			}
+			if ((fromDate != null) && fromDate.matches("\\d{4}-\\d{2}-\\d{2}")) {
+				url += "&from=" + URLEncoder.encode(fromDate,"UTF-8");
+			}
+			if ((untilDate != null) && untilDate.matches("\\d{4}-\\d{2}-\\d{2}")) {
+				url += "&until=" + URLEncoder.encode(untilDate,"UTF-8");
+			}
+			log.info("Start harvesting using url: " + url);
+	
+			return downloadPage(url);
+		} catch(UnsupportedEncodingException e) {
+			throw new CollectorServiceException(e);
+		}
+	}
+
+	private String otherPages(final String resumptionToken) throws CollectorServiceException {
+		try {
+			return downloadPage(baseUrl + "?verb=ListRecords&resumptionToken=" + URLEncoder.encode(resumptionToken,"UTF-8"));
+		} catch (UnsupportedEncodingException e) {
+			throw new CollectorServiceException(e);
+		}
+	}
+
+	private String downloadPage(final String url) throws CollectorServiceException {
+	
+		final String xml = httpConnector.getInputSource(url);
+		
+		Document doc;
+		try {
+			doc = reader.read(new StringReader(xml));
+		} catch (DocumentException e) {
+			log.warn("Error parsing xml, I try to clean it: " + xml, e);
+			final String cleaned = XmlCleaner.cleanAllEntities(xml);
+			try {
+				doc = reader.read(new StringReader(cleaned));
+			} catch (DocumentException e1) {
+				throw new CollectorServiceException("Error parsing cleaned document:" + cleaned, e1);
+			}
+		}
+		
+		final Node errorNode = doc.selectSingleNode("/*[local-name()='OAI-PMH']/*[local-name()='error']");
+		if (errorNode != null) {
+			final String code = errorNode.valueOf("@code");
+			if ("noRecordsMatch".equalsIgnoreCase(code.trim())) {
+				log.warn("noRecordsMatch for oai call: " + url);
+				return null;
+			} else {
+				throw new CollectorServiceException(code + " - " + errorNode.getText());
+			}
+		}
+		
+		for (Object o : doc.selectNodes("//*[local-name()='ListRecords']/*[local-name()='record']")) {
+			queue.add(((Node) o).asXML());
+		}
+	
+		return doc.valueOf("//*[local-name()='resumptionToken']");
+		
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpIteratorFactory.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpIteratorFactory.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpIteratorFactory.java	(revision 48025)
@@ -0,0 +1,18 @@
+package eu.dnetlib.data.collector.plugins.sftp;
+
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Created by andrea on 11/01/16.
+ */
+public class SftpIteratorFactory {
+
+    public Iterator<String> newIterator(final String baseUrl,
+                                        final String username,
+                                        final String password,
+                                        final boolean isRecursive,
+            final Set<String> extensionsSet, final String fromDate) {
+        return new SftpIterator(baseUrl, username, password, isRecursive, extensionsSet, fromDate);
+    }
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpIterator.java	(revision 48025)
@@ -0,0 +1,56 @@
+package eu.dnetlib.data.collector.plugins.mongo;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Iterator;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+public class MongoDumpIterator implements Iterator<String> {
+
+	private final BufferedReader inputStream;
+	private String currentLine = null;
+
+	public MongoDumpIterator(final FileReader inputStream) {
+		this.inputStream = new BufferedReader(inputStream);
+		this.currentLine = getNextLine();
+	}
+
+	@Override
+	public boolean hasNext() {
+		return currentLine != null;
+
+	}
+
+	@Override
+	public String next() {
+		final String returnedString = this.currentLine;
+		this.currentLine = getNextLine();
+		return returnedString;
+	}
+
+	@Override
+	public void remove() {
+		// TODO Auto-generated method stub
+
+	}
+
+	private String getNextLine() {
+		try {
+			String input = inputStream.readLine();
+			while (input != null) {
+				JsonElement jElement = new JsonParser().parse(input);
+				JsonObject jobject = jElement.getAsJsonObject();
+				if (jobject.has("body")) { return jobject.get("body").getAsString(); }
+				input = inputStream.readLine();
+			}
+			return null;
+
+		} catch (IOException e) {
+			return null;
+		}
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/csv/HTTPCSVCollectorPluginTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/csv/HTTPCSVCollectorPluginTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/csv/HTTPCSVCollectorPluginTest.java	(revision 48025)
@@ -0,0 +1,71 @@
+package eu.dnetlib.data.collector.plugins.csv;
+
+import java.net.URISyntaxException;
+import java.util.HashMap;
+
+import eu.dnetlib.data.collector.plugins.HttpCSVCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class HTTPCSVCollectorPluginTest {
+
+	private String FILE_URL = HTTPCSVCollectorPluginTest.class.getResource("testCSVwithBOM.csv").toString();
+	final HttpCSVCollectorPlugin plugin = new HttpCSVCollectorPlugin();
+
+	@Test
+	public void testCSVHeader() throws URISyntaxException, CollectorServiceException {
+
+		final InterfaceDescriptor descr = new InterfaceDescriptor();
+		final HashMap<String, String> params = new HashMap<String, String>();
+
+		params.put("separator", ",");
+		params.put("quote", "\"");
+		params.put("identifier", "ID");
+		descr.setBaseUrl(FILE_URL);
+		descr.setParams(params);
+
+		int i = 0;
+		for (final String s : plugin.collect(descr, null, null)) {
+			assertTrue(s.length() > 0);
+			System.out.println(s);
+			i++;
+		}
+		System.out.println(i);
+		assertTrue(i > 0);
+	}
+
+	@Test
+	public void testVerifyQuotesOk(){
+		String correct = "\"5\",\"Il Padrino\",\"EEEEEEEE \"\"ZZZZZ\"\" EEEEEEEEEE\",1970";
+		assertTrue(plugin.verifyQuotes(correct, ','));
+	}
+
+	@Test
+	public void testVerifyQuotesWRONG(){
+		String correct = "5\",\"Il Padrino\",\"EEEEEEEE \"ZZZZZ\" EEEEEEEEEE\",1970";
+		assertFalse(plugin.verifyQuotes(correct, ','));
+	}
+
+	@Test
+	public void testSNSF(){
+		String s = "\"8773\";\"3101-008773\";\"EMBO workshop on structure, function and regulation of membrane transport proteins\";\"\";\"Rossier Bernard C.\";\"Scientific Conferences\";\"Science communication\";\"DÃ©partement de Pharmacologie & Toxicologie FacultÃ© de Biologie et de MÃ©decine UniversitÃ© de Lausanne\";\"UniversitÃ© de Lausanne - LA\";\"30103\";\"Cellular Biology, Cytology\";\"Biology and Medicine;Basic Biological Research\";\"01.04.1987\";\"30.09.1987\";\"10000.00\";\"\";\"30103\"" ;
+		assertTrue(plugin.verifyQuotes(s, ';'));
+	}
+
+	@Test
+	public void testSNSF2(){
+		String s = "\"11000\";\"4021-011000\";\"Literarische und nationale Erziehung : Schweizerisches SelbstverstÃ¤ndnis in der Literatur fÃ¼r Kinder und Jugend- liche\";\"\";\"Tschirky Rosmarie\";\"NRP 21 Cultural Diversity and National Identity\";\"Programmes;National Research Programmes (NRPs)\";\"Schweiz. Inst. fÃ¼r Kinder- und Jugendmedien\";\"UniversitÃ¤t ZÃ¼rich - ZH\";\"10501\";\"German and English languages and literature\";\"Human and Social Sciences;Linguistics and literature, philosophy\";\"10501\";\"01.10.1986\";\"31.03.1990\";\"308807.00\";\"\"";
+		assertTrue(plugin.verifyQuotes(s, ';'));
+	}
+
+	@Test
+	public void testSNSFInvalid(){
+		String s = "\"35918\";\"1113-035918\";\"Entwicklung eines dreisprachigen Thesaurus des schweizerischen Rechts zur UnterstÃ¼tzung der Suche in Volltextdatenbanken.\";\"\";\"Verein \"Schweizerische Juristische Datenbank\"\";\"Project funding (Div. I-III)\";\"Project funding\";\"Verein \"\"Schweizerische Juristische Datenbank\"\"\";\"NPO (Biblioth., Museen, Verwalt.) - NPO\";\"10205\";\"Legal sciences\";\"Human and Social Sciences;Economics, law\";\"10205\";\"01.12.1992\";\"31.03.1995\";\"500366.00\";\"\"";
+		assertFalse(plugin.verifyQuotes(s, ';'));
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesfrommetadata/PopulateFileDownloadBasePath.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesfrommetadata/PopulateFileDownloadBasePath.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesfrommetadata/PopulateFileDownloadBasePath.java	(revision 48025)
@@ -0,0 +1,61 @@
+package eu.dnetlib.data.collector.plugins.filesfrommetadata;
+
+import java.util.List;
+import java.util.Map;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Lists;
+import eu.dnetlib.data.collector.functions.ParamValuesFunction;
+import eu.dnetlib.data.collector.rmi.ProtocolParameterValue;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * Created by alessia on 17/12/15.
+ */
+public class PopulateFileDownloadBasePath implements ParamValuesFunction {
+
+	private static final Log log = LogFactory.getLog(PopulateFileDownloadBasePath.class);
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Value("${services.objectstore.basePathList.xquery}")
+	private String xQueryForObjectStoreBasePath;
+
+	@Override
+	public List<ProtocolParameterValue> findValues(final String s, final Map<String, String> map) {
+		try {
+			return Lists.transform(serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xQueryForObjectStoreBasePath),
+					new Function<String, ProtocolParameterValue>() {
+						@Override
+						public ProtocolParameterValue apply(final String s) {
+							return new ProtocolParameterValue(s, s);
+						}
+					});
+		} catch (ISLookUpException e) {
+			log.error("Cannot read Object store service properties", e);
+		}
+		return Lists.newArrayList();
+	}
+
+	public UniqueServiceLocator getServiceLocator() {
+		return serviceLocator;
+	}
+
+	public void setServiceLocator(final UniqueServiceLocator serviceLocator) {
+		this.serviceLocator = serviceLocator;
+	}
+
+	public String getxQueryForObjectStoreBasePath() {
+		return xQueryForObjectStoreBasePath;
+	}
+
+	public void setxQueryForObjectStoreBasePath(final String xQueryForObjectStoreBasePath) {
+		this.xQueryForObjectStoreBasePath = xQueryForObjectStoreBasePath;
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/csv/CSVCollectorPluginTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/csv/CSVCollectorPluginTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/csv/CSVCollectorPluginTest.java	(revision 48025)
@@ -0,0 +1,61 @@
+package eu.dnetlib.data.collector.plugins.csv;
+
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.HashMap;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import eu.dnetlib.data.collector.plugins.FileCSVCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class CSVCollectorPluginTest {
+
+	@Test
+	public void testCSVHeader() throws URISyntaxException, CollectorServiceException {
+		URL resource = CSVCollectorPluginTest.class.getResource("/eu/dnetlib/data/collector/filesystem/csv/input.tsv");
+		InterfaceDescriptor descr = new InterfaceDescriptor();
+		HashMap<String, String> params = new HashMap<String, String>();
+		params.put("header", "TrUe");
+		params.put("separator", "\t");
+		params.put("identifier", "56");
+		descr.setBaseUrl(resource.toString());
+		descr.setParams(params);
+		FileCSVCollectorPlugin plugin = new FileCSVCollectorPlugin();
+		int i = 0;
+		for (String s : plugin.collect(descr, null, null)) {
+			Assert.assertTrue(s.length() > 0);
+			i++;
+			System.out.println(s);
+			break;
+		}
+		Assert.assertTrue(i > 0);
+
+	}
+
+
+	@Test
+	public void testTSVQuote() throws URISyntaxException, CollectorServiceException {
+		URL resource = CSVCollectorPluginTest.class.getResource("/eu/dnetlib/data/collector/filesystem/csv/input-quoted.tsv");
+		InterfaceDescriptor descr = new InterfaceDescriptor();
+		HashMap<String, String> params = new HashMap<String, String>();
+		params.put("header", "true");
+		params.put("separator", ";");
+		params.put("identifier", "0");
+		params.put("quote", "\\\"");
+		descr.setBaseUrl(resource.toString());
+		descr.setParams(params);
+		FileCSVCollectorPlugin plugin = new FileCSVCollectorPlugin();
+		int i = 0;
+		for (String s : plugin.collect(descr, null, null)) {
+			Assert.assertTrue(s.length() > 0);
+			i++;
+			System.out.println(s);
+			break;
+		}
+		Assert.assertTrue(i > 0);
+
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,40 @@
+package eu.dnetlib.data.collector.plugins.oaisets;
+
+import java.util.Iterator;
+
+import org.springframework.beans.factory.annotation.Required;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class OaiSetsCollectorPlugin extends AbstractCollectorPlugin {
+
+	private OaiSetsIteratorFactory oaiSetsIteratorFactory;
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+
+		if (baseUrl == null || baseUrl.isEmpty()) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+
+		return new Iterable<String>() {
+
+			@Override
+			public Iterator<String> iterator() {
+				return oaiSetsIteratorFactory.newIterator(baseUrl);
+			}
+		};
+	}
+
+	public OaiSetsIteratorFactory getOaiSetsIteratorFactory() {
+		return oaiSetsIteratorFactory;
+	}
+
+	@Required
+	public void setOaiSetsIteratorFactory(final OaiSetsIteratorFactory oaiSetsIteratorFactory) {
+		this.oaiSetsIteratorFactory = oaiSetsIteratorFactory;
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,24 @@
+package eu.dnetlib.data.collector.plugins.archive.zip;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+/**
+ * Collector pluging for collecting a zipped folder of records
+ *
+ * @author Andrea
+ *
+ */
+public class ZipCollectorPlugin extends AbstractCollectorPlugin {
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		if (baseUrl == null || baseUrl.isEmpty()) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+		return new ZipIterable(interfaceDescriptor);
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPluginTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPluginTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPluginTest.java	(revision 48025)
@@ -0,0 +1,95 @@
+package eu.dnetlib.data.collector.plugins.oai;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.internal.verification.Times;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+import eu.dnetlib.data.collector.rmi.ProtocolDescriptor;
+import eu.dnetlib.data.collector.rmi.ProtocolParameter;
+
+@RunWith(MockitoJUnitRunner.class)
+public class OaiCollectorPluginTest {
+
+	private OaiCollectorPlugin oai;
+
+	@Mock
+	private OaiIteratorFactory oaiIteratorFactory;
+
+	private List<String> elements = Lists.newArrayList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");
+
+	private Iterator<String> oaiIterator1 = elements.subList(0, 3).iterator();
+	private Iterator<String> oaiIterator2 = elements.subList(3, 7).iterator();
+	private Iterator<String> oaiIterator3 = elements.subList(7, elements.size()).iterator();
+
+	private static final String BASE_URL = "http://oai.test.it/oai";
+	private static final String FORMAT = "oai_dc";
+	private static final String PROTOCOL = "OAI";
+	private static final String SET_1 = "set01";
+	private static final String SET_2 = "set02";
+	private static final String SET_3 = "set03";
+
+	@Before
+	public void setUp() {
+		oai = new OaiCollectorPlugin();
+		oai.setOaiIteratorFactory(oaiIteratorFactory);
+		oai.setProtocolDescriptor(new ProtocolDescriptor(PROTOCOL, new ArrayList<ProtocolParameter>()));
+		when(oaiIteratorFactory.newIterator(BASE_URL, FORMAT, SET_1, null, null)).thenReturn(oaiIterator1);
+		when(oaiIteratorFactory.newIterator(BASE_URL, FORMAT, SET_2, null, null)).thenReturn(oaiIterator2);
+		when(oaiIteratorFactory.newIterator(BASE_URL, FORMAT, SET_3, null, null)).thenReturn(oaiIterator3);
+	}
+
+	public void test() {
+		oai = new OaiCollectorPlugin();
+	}
+
+	@Test
+	public void testGetProtocol() {
+		assertEquals(PROTOCOL, oai.getProtocol());
+	}
+
+	@Test
+	public void testCollect() throws Exception {
+		final InterfaceDescriptor iface = new InterfaceDescriptor();
+		iface.setId("123");
+		iface.setProtocol(PROTOCOL);
+		iface.setBaseUrl(BASE_URL);
+		iface.setParams(new HashMap<String, String>());
+		iface.getParams().put("format", FORMAT);
+		iface.getParams().put("set", Joiner.on(", ").join(SET_1, SET_2, SET_3));
+
+		final Iterable<String> records = oai.collect(iface, null, null);
+
+		assertNotNull(records);
+		verify(oaiIteratorFactory, new Times(0)).newIterator(BASE_URL, FORMAT, SET_1, null, null);
+		verify(oaiIteratorFactory, new Times(0)).newIterator(BASE_URL, FORMAT, SET_2, null, null);
+		verify(oaiIteratorFactory, new Times(0)).newIterator(BASE_URL, FORMAT, SET_3, null, null);
+
+		int count = 0;
+		for (String s : records) {
+			System.out.println("RECORD: " + s);
+			assertEquals("" + count, s);
+			count++;
+		}
+		assertEquals(elements.size(), count);
+		verify(oaiIteratorFactory).newIterator(BASE_URL, FORMAT, SET_1, null, null);
+		verify(oaiIteratorFactory).newIterator(BASE_URL, FORMAT, SET_2, null, null);
+		verify(oaiIteratorFactory).newIterator(BASE_URL, FORMAT, SET_3, null, null);
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,24 @@
+package eu.dnetlib.data.collector.plugins.archive.targz;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+/**
+ * Collector pluging for collecting a .tar.gz folder of records
+ *
+ * @author andrea
+ *
+ */
+public class TarGzCollectorPlugin extends AbstractCollectorPlugin {
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		if (baseUrl == null || baseUrl.isEmpty()) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+		return new TarGzIterable(interfaceDescriptor);
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/HttpConnectorTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/HttpConnectorTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/HttpConnectorTest.java	(revision 48025)
@@ -0,0 +1,28 @@
+package eu.dnetlib.data.collector.plugins.oai;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class HttpConnectorTest {
+
+	private HttpConnector connector;
+
+	private static final String URL = "https://researchdata.ands.org.au/registry/services/oai?verb=Identify";
+
+	@Before
+	public void setUp() {
+		connector = new HttpConnector();
+		connector.initTrustManager();
+		connector.setMaxNumberOfRetry(1);
+	}
+
+	@Test
+	@Ignore
+	public void testGetInputSource() throws CollectorServiceException {
+		System.out.println(connector.getInputSource(URL));
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/httplist/HttpListCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/httplist/HttpListCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/httplist/HttpListCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,25 @@
+package eu.dnetlib.data.collector.plugins.httplist;
+
+import java.util.Iterator;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class HttpListCollectorPlugin extends AbstractCollectorPlugin {
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		final String listAddress = interfaceDescriptor.getParams().get("listUrl");
+
+		return new Iterable<String>() {
+
+			@Override
+			public Iterator<String> iterator() {
+				return new HttpListIterator(baseUrl, listAddress);
+			}
+		};
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiIteratorTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiIteratorTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiIteratorTest.java	(revision 48025)
@@ -0,0 +1,34 @@
+package eu.dnetlib.data.collector.plugins.oai;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector;
+
+public class OaiIteratorTest {
+	
+	private static final String BASE_URL = "http://oai.d.efg.research-infrastructures.eu/oai.do";
+	private static final String FORMAT = "oai_dc";
+	private static final String SET = "d937bab1-d44c-44aa-bf7d-df5312a3b623";
+	
+	private OaiIterator oai;
+	
+	@Before
+	public void setUp() {
+		HttpConnector httpConnector = new HttpConnector();
+		httpConnector.initTrustManager();
+		oai = new OaiIterator(BASE_URL, FORMAT, SET, null, null, httpConnector);
+	}
+	
+	@Test
+	@Ignore
+	public void test() {
+		int count = 0;
+		while (oai.hasNext()) {
+			oai.next();
+			count++;
+		}
+		System.out.println("TOTAL: " + count);
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipIterator.java	(revision 48025)
@@ -0,0 +1,80 @@
+package eu.dnetlib.data.collector.plugins.archive.zip;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ZipIterator implements Iterator<String> {
+
+	/** The Constant log. */
+	private static final Log log = LogFactory.getLog(ZipIterator.class);
+
+	ZipFile zipFile;
+	Enumeration<? extends ZipEntry> entries;
+	private String current;
+
+	public ZipIterator(final String zipPath) {
+		try {
+			this.zipFile = new ZipFile(zipPath);
+			this.entries = zipFile.entries();
+			this.current = findNext();
+		} catch (IOException e) {
+			log.error("Problems opening the .zip file " + zipPath, e);
+		}
+	}
+
+	public ZipIterator(final File file) {
+		try {
+			this.zipFile = new ZipFile(file);
+			this.entries = zipFile.entries();
+			this.current = findNext();
+		} catch (IOException e) {
+			log.error("Problems opening the .zip file " + zipFile.getName(), e);
+		}
+	}
+
+	@Override
+	public boolean hasNext() {
+		return current != null;
+	}
+
+	@Override
+	public String next() {
+		String ret = new String(current);
+		current = findNext();
+		return ret;
+	}
+
+	@Override
+	public void remove() {}
+
+	private synchronized String findNext() {
+		ZipEntry entry = null;
+		while (entries.hasMoreElements() && (entry = entries.nextElement()).isDirectory()) {
+			log.debug("Skipping Zip entry " + entry.getName());
+		}
+
+		if (entry == null) {
+			return null;
+		} else {
+			log.debug("Extracting " + entry.getName());
+			try {
+				InputStream stream = zipFile.getInputStream(entry);
+				return IOUtils.toString(stream);
+			} catch (IOException e) {
+				log.error("Problems extracting entry " + entry.getName(), e);
+				return null;
+			}
+		}
+
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPluginRealTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPluginRealTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oai/OaiCollectorPluginRealTest.java	(revision 48025)
@@ -0,0 +1,44 @@
+package eu.dnetlib.data.collector.plugins.oai;
+
+import java.util.HashMap;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class OaiCollectorPluginRealTest {
+
+	private OaiCollectorPlugin oai;
+
+	private static final String BASE_URL = "http://oai.d.efg.research-infrastructures.eu/oai.do";
+	private static final String FORMAT = "oai_dc";
+	private static final String SETS = "d937bab1-d44c-44aa-bf7d-df5312a3b623, e5b14959-1e87-4c07-9f85-942c9cdd9136, 13302eb6-764a-4ed2-8d08-2a1c9526f442, 31701e97-096f-4266-81b5-30b9bc3a06b0";
+
+	@Before
+	public void setUp() {
+		oai = new OaiCollectorPlugin();
+		oai.setOaiIteratorFactory(new OaiIteratorFactory());
+	}
+
+	@Test
+	@Ignore
+	public void testCollect() throws Exception {
+		final InterfaceDescriptor iface = new InterfaceDescriptor();
+		iface.setId("123");
+		iface.setProtocol("OAI");
+		iface.setBaseUrl(BASE_URL);
+		iface.setParams(new HashMap<String, String>());
+		iface.getParams().put("format", FORMAT);
+		iface.getParams().put("set", SETS);
+
+		int count = 0;
+		for (String s : oai.collect(iface, null, null)) {
+			System.out.println(s);
+			count++;
+		}
+		System.out.println("TOTAL: " + count);
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpIteratorFactory.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpIteratorFactory.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpIteratorFactory.java	(revision 48025)
@@ -0,0 +1,20 @@
+package eu.dnetlib.data.collector.plugins.ftp;
+
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ *
+ * @author Author: Andrea Mannocci
+ *
+ */
+public class FtpIteratorFactory {
+
+	public Iterator<String> newIterator(final String baseUrl,
+										final String username,
+										final String password,
+										final boolean isRecursive,
+										final Set<String> extensionsSet) {
+		return new FtpIterator(baseUrl, username, password, isRecursive, extensionsSet);
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/sftp/SftpIteratorTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/sftp/SftpIteratorTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/sftp/SftpIteratorTest.java	(revision 48025)
@@ -0,0 +1,110 @@
+package eu.dnetlib.data.collector.plugins.sftp;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Set;
+
+import com.google.common.collect.Sets;
+import com.jcraft.jsch.*;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Created by andrea on 12/01/16.
+ */
+@Ignore
+public class SftpIteratorTest {
+
+	private static final Log log = LogFactory.getLog(SftpIteratorTest.class);
+/*
+	private String baseUrl = "sftp://fts.ec.europa.eu/H2020";
+	private String username = "openaire";
+	private String password = "I732x6854e";
+*/
+
+    private String baseUrl = "sftp://node6.t.openaire.research-infrastructures.eu/corda_h2020/";
+    private String username = "openaire";
+    private String password = "OpenDnet.";
+
+
+    private boolean isRecursive = true;
+    private Set<String> extensions = Sets.newHashSet("xml");
+
+	private int mtime = 1458471600;
+	private String mtimeStr = "Sun Mar 20 12:00:00 CET 2016";
+
+	@Ignore
+	@Test
+    public void test() {
+	    SftpIterator iterator = new SftpIterator(baseUrl, username, password, isRecursive, extensions, null);
+	    while (iterator.hasNext()) {
+            String remotePath = iterator.next();
+            System.out.println(remotePath);
+        }
+    }
+
+	@Ignore
+	@Test
+	public void timeTest() throws JSchException, SftpException, URISyntaxException {
+		URI sftpServer = new URI(baseUrl);
+		final String sftpURIScheme = sftpServer.getScheme();
+		final String sftpServerAddress = sftpServer.getHost();
+		final String remoteSftpBasePath = sftpServer.getPath();
+		JSch jsch = new JSch();
+		JSch.setConfig("StrictHostKeyChecking", "no");
+		Session sftpSession = jsch.getSession(username, sftpServerAddress);
+		sftpSession.setPassword(password);
+		sftpSession.connect();
+
+		Channel channel = sftpSession.openChannel(sftpURIScheme);
+		channel.connect();
+		ChannelSftp sftpChannel = (ChannelSftp) channel;
+		sftpChannel.cd(sftpChannel.pwd() + remoteSftpBasePath);
+		log.info("Connected to SFTP server " + sftpServerAddress);
+
+		final SftpATTRS lstat = sftpChannel.lstat("H20_OpenAire_Project_633002.xml");
+		int mtime = lstat.getMTime();
+		String mtimeStr = lstat.getMtimeString();
+		log.info("mtime int: " + mtime);
+		log.info("mtime string: " + mtimeStr);
+
+		sftpChannel.exit();
+		sftpSession.disconnect();
+
+		log.info("trying to get Date from mtimestring");
+		DateTime dt = new DateTime(mtimeStr);
+		log.info("Joda DateTime from mtimeString: " + dt.toString());
+	}
+
+	@Test
+	public void timeTestParseString() {
+		log.info("trying to get DateTime from mtimestring");
+		//DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss 'CET' yyyy");
+		DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd %");
+		DateTime dt = DateTime.parse(mtimeStr, formatter);
+		log.info("Joda DateTime from mtimeString: " + dt.toString());
+	}
+
+	@Test
+	public void testTimeFromInt() {
+		DateTime dt = new DateTime(mtime * 1000L);
+		log.info("Joda DateTime from mtimeInt: " + dt.toString());
+	}
+
+	@Test
+	public void timeTestAfter() {
+		DateTime dt = new DateTime(mtime * 1000L);
+		DateTime now = new DateTime();
+		assertFalse(now.isBefore(dt));
+		assertTrue(now.isAfter(dt));
+	}
+
+}
\ No newline at end of file
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsIterator.java	(revision 48025)
@@ -0,0 +1,133 @@
+package eu.dnetlib.data.collector.plugins.oaisets;
+
+import java.io.StringReader;
+import java.util.Iterator;
+import java.util.Queue;
+import java.util.Set;
+import java.util.concurrent.PriorityBlockingQueue;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+
+import com.google.common.collect.Sets;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector;
+import eu.dnetlib.data.collector.plugins.oai.engine.XmlCleaner;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class OaiSetsIterator implements Iterator<String> {
+
+	private static final Log log = LogFactory.getLog(OaiSetsIterator.class);
+
+	private Queue<String> queue = new PriorityBlockingQueue<String>();
+	private SAXReader reader = new SAXReader();
+
+	private String baseUrl;
+
+	private String token;
+	private boolean started;
+	private HttpConnector httpConnector;
+
+	private Set<String> setsAlreadySeen = Sets.newHashSet();
+
+	public OaiSetsIterator(final String baseUrl, final HttpConnector httpConnector) {
+		this.baseUrl = baseUrl;
+		this.started = false;
+		this.httpConnector = httpConnector;
+	}
+
+	private void verifyStarted() {
+		if (!this.started) {
+			this.started = true;
+			try {
+				this.token = firstPage();
+			} catch (CollectorServiceException e) {
+				throw new RuntimeException(e);
+			}
+		}
+	}
+
+	@Override
+	public boolean hasNext() {
+		synchronized (queue) {
+			verifyStarted();
+			return !queue.isEmpty();
+		}
+	}
+
+	@Override
+	public String next() {
+		synchronized (queue) {
+			verifyStarted();
+			final String res = queue.poll();
+			while (queue.isEmpty() && (token != null) && !token.isEmpty()) {
+				try {
+					token = otherPages(token);
+				} catch (CollectorServiceException e) {
+					throw new RuntimeException(e);
+				}
+			}
+			return res;
+		}
+	}
+
+	@Override
+	public void remove() {}
+
+	private String firstPage() throws CollectorServiceException {
+		final String url = baseUrl + "?verb=ListSets";
+		log.info("Start harvesting using url: " + url);
+		return downloadPage(url);
+	}
+
+	private String otherPages(final String resumptionToken) throws CollectorServiceException {
+		return downloadPage(baseUrl + "?verb=ListSets&resumptionToken=" + resumptionToken);
+	}
+
+	private String downloadPage(final String url) throws CollectorServiceException {
+
+		final String xml = httpConnector.getInputSource(url);
+
+		Document doc;
+		try {
+			doc = reader.read(new StringReader(xml));
+		} catch (DocumentException e) {
+			log.warn("Error parsing xml, I try to clean it: " + xml, e);
+			final String cleaned = XmlCleaner.cleanAllEntities(xml);
+			try {
+				doc = reader.read(new StringReader(cleaned));
+			} catch (DocumentException e1) {
+				throw new CollectorServiceException("Error parsing cleaned document:" + cleaned, e1);
+			}
+		}
+
+		final Node errorNode = doc.selectSingleNode("/*[local-name()='OAI-PMH']/*[local-name()='error']");
+		if (errorNode != null) {
+			final String code = errorNode.valueOf("@code");
+			if ("noRecordsMatch".equalsIgnoreCase(code.trim())) {
+				log.warn("noRecordsMatch for oai call: " + url);
+				return null;
+			} else throw new CollectorServiceException(code + " - " + errorNode.getText());
+		}
+
+		boolean sawAllSets = true;
+		for (Object o : doc.selectNodes("//*[local-name()='ListSets']/*[local-name()='set']")) {
+			String set = ((Element) o).valueOf("./*[local-name()='setSpec']");
+			if (!setsAlreadySeen.contains(set)) {
+				sawAllSets = false;
+				setsAlreadySeen.add(set);
+				queue.add(((Node) o).asXML());
+			}
+		}
+		if (sawAllSets) {
+			log.warn("URL " + baseUrl + " keeps returning the same OAI sets. Please contact the repo admin.");
+			System.out.println("URL " + baseUrl + " keeps returning the same OAI sets. Please contact the repo admin.");
+			return null;
+		} else return doc.valueOf("//*[local-name()='resumptionToken']");
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/ftp/FtpIteratorTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/ftp/FtpIteratorTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/ftp/FtpIteratorTest.java	(revision 48025)
@@ -0,0 +1,27 @@
+package eu.dnetlib.data.collector.plugins.ftp;
+
+import java.util.Set;
+
+import com.google.common.collect.Sets;
+import org.junit.Ignore;
+import org.junit.Test;
+
+@Ignore
+public class FtpIteratorTest {
+
+	private String baseUrl = "ftp://ftp.eagle.research-infrastructures.eu/content/ELTE";
+	private String username = "eaglecontent";
+	private String password = "$eagl3$CP";
+	private boolean isRecursive = true;
+	private Set<String> extensions = Sets.newHashSet("xml");
+
+	@Test
+	public void test() {
+		final FtpIterator iterator = new FtpIterator(baseUrl, username, password, isRecursive, extensions);
+
+		while (iterator.hasNext()) {
+			iterator.next();
+		}
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/httplist/HttpListIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/httplist/HttpListIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/httplist/HttpListIterator.java	(revision 48025)
@@ -0,0 +1,73 @@
+package eu.dnetlib.data.collector.plugins.httplist;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Iterator;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+
+public class HttpListIterator implements Iterator<String> {
+
+	final HttpClient client = new HttpClient();
+
+	private String baseUrl;
+	private String currentLine;
+	private BufferedReader reader;
+
+	public HttpListIterator(final String baseUrl, final String listAddress) {
+		try {
+			this.baseUrl = baseUrl;
+			this.reader = new BufferedReader(new StringReader(download(listAddress)));
+			this.currentLine = reader.readLine();
+		} catch (Exception e) {
+			throw new RuntimeException("Error creating iterator", e);
+		}
+	}
+
+	@Override
+	public synchronized boolean hasNext() {
+		return StringUtils.isNotBlank(currentLine);
+	}
+
+	@Override
+	public synchronized String next() {
+		try {
+			if (StringUtils.isNotBlank(currentLine)) {
+				return download(baseUrl + currentLine);
+			} else {
+				throw new RuntimeException("Iterator has reached the end");
+			}
+		} finally {
+			try {
+				this.currentLine = reader.readLine();
+			} catch (IOException e) {
+				throw new RuntimeException("Error obtaining next element " + currentLine, e);
+			}
+		}
+	}
+
+	private String download(final String url) {
+		try {
+			final HttpMethod method = new GetMethod(url);
+			final int responseCode = client.executeMethod(method);
+			if (responseCode == HttpStatus.SC_OK) {
+				return IOUtils.toString(new BufferedInputStream(method.getResponseBodyAsStream()));
+			} else {
+				throw new RuntimeException("Error " + responseCode + " dowloading url: " + url);
+			}
+		} catch (IOException e) {
+			throw new RuntimeException("Error dowloading url: " + url);
+		}
+	}
+
+	@Override
+	public void remove() {}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzIterable.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzIterable.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzIterable.java	(revision 48025)
@@ -0,0 +1,48 @@
+package eu.dnetlib.data.collector.plugins.archive.targz;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterators;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.XmlCleaner;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+/**
+ * The Class TarGzIterable.
+ *
+ * @author Andrea
+ */
+public class TarGzIterable implements Iterable<String> {
+
+	/** The path to tar.gz archive. */
+	private File tarGzFile;
+
+	public TarGzIterable(final InterfaceDescriptor interfaceDescriptor) throws CollectorServiceException {
+		try {
+			final String tarGzPath = interfaceDescriptor.getBaseUrl();
+			URL tarGzUrl = new URL(tarGzPath);
+			this.tarGzFile = new File(tarGzUrl.getPath());
+			if (!tarGzFile.exists()) { throw new CollectorServiceException(String.format("The base ULR %s, does not exist", tarGzFile.getPath())); }
+		} catch (MalformedURLException e) {
+			throw new CollectorServiceException("TarGz collector failed! ", e);
+		}
+	}
+
+	@Override
+	public Iterator<String> iterator() {
+		final TarGzIterator tgzIterator = new TarGzIterator(tarGzFile.getAbsolutePath());
+		return Iterators.transform(tgzIterator, new Function<String, String>() {
+
+			@Override
+			public String apply(final String inputRecord) {
+				return XmlCleaner.cleanAllEntities(inputRecord.startsWith("\uFEFF") ? inputRecord.substring(1) : inputRecord);
+			}
+		});
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpIterable.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpIterable.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpIterable.java	(revision 48025)
@@ -0,0 +1,46 @@
+package eu.dnetlib.data.collector.plugins.mongo;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.util.Iterator;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.information.collectionservice.rmi.CollectionServiceException;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class MongoDumpIterable.
+ */
+public class MongoDumpIterable implements Iterable<String> {
+
+	/** The input stream. */
+	private final FileReader inputStream;
+
+	/**
+	 * Instantiates a new mongo dump iterable.
+	 *
+	 * @param inputFile
+	 *            the input file
+	 * @throws CollectionServiceException
+	 *             the collection service exception
+	 */
+	public MongoDumpIterable(final File inputFile) throws CollectorServiceException {
+		try {
+			this.inputStream = new FileReader(inputFile);
+		} catch (FileNotFoundException e) {
+			throw new CollectorServiceException("Error unable to open inputStream", e);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see java.lang.Iterable#iterator()
+	 */
+	@Override
+	public Iterator<String> iterator() {
+		return new MongoDumpIterator(inputStream);
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsCollectorPluginTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsCollectorPluginTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsCollectorPluginTest.java	(revision 48025)
@@ -0,0 +1,61 @@
+package eu.dnetlib.data.collector.plugins.oaisets;
+
+import java.util.HashMap;
+
+import javax.annotation.Resource;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.google.common.base.Joiner;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(value = "applicationContext-OaiSetsCollectorPluginTest.xml")
+public class OaiSetsCollectorPluginTest {
+
+	private OaiSetsCollectorPlugin oaiSetsPlugin;
+	@Resource
+	OaiSetsIteratorFactory oaiSetsIteratorFactory;
+
+	private static final String BASE_URL = "http://oai.cwi.nl/oai";
+	private static final String BASE_URL_DATACITE = "http://oai.datacite.org/oai";
+
+	@Before
+	public void setUp() throws Exception {
+		oaiSetsPlugin = new OaiSetsCollectorPlugin();
+		oaiSetsPlugin.setOaiSetsIteratorFactory(oaiSetsIteratorFactory);
+	}
+
+	@Ignore
+	@Test
+	public void testCollect() throws CollectorServiceException {
+		final InterfaceDescriptor iface = new InterfaceDescriptor();
+		iface.setId("123");
+		iface.setProtocol("oai_set");
+		iface.setBaseUrl(BASE_URL);
+		iface.setParams(new HashMap<String, String>());
+
+		Iterable<String> sets = oaiSetsPlugin.collect(iface, null, null);
+		System.out.println(Joiner.on(",").join(sets));
+	}
+
+	@Ignore
+	@Test
+	public void testCollectDatacite() throws CollectorServiceException {
+		final InterfaceDescriptor iface = new InterfaceDescriptor();
+		iface.setId("123");
+		iface.setProtocol("oai_set");
+		iface.setBaseUrl(BASE_URL_DATACITE);
+		iface.setParams(new HashMap<String, String>());
+
+		Iterable<String> sets = oaiSetsPlugin.collect(iface, null, null);
+		System.out.println(Joiner.on(",").join(sets));
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/targz/TarGzIterator.java	(revision 48025)
@@ -0,0 +1,86 @@
+package eu.dnetlib.data.collector.plugins.archive.targz;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.zip.GZIPInputStream;
+
+import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
+import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class TarGzIterator implements Iterator<String> {
+
+	/** The Constant log. */
+	private static final Log log = LogFactory.getLog(TarGzIterator.class);
+
+	private TarArchiveInputStream tarInputStream;
+	private String current;
+
+	public TarGzIterator(final String tarGzPath) {
+		try {
+			this.tarInputStream = new TarArchiveInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(tarGzPath))));
+			this.current = findNext();
+		} catch (FileNotFoundException e) {
+			log.error("Tar.gz file not found: " + tarGzPath, e);
+		} catch (IOException e) {
+			log.error("Problem opening tar.gz file " + tarGzPath, e);
+		}
+	}
+
+	public TarGzIterator(final File tarGzFile) {
+		try {
+			this.tarInputStream = new TarArchiveInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(tarGzFile))));
+			this.current = findNext();
+		} catch (FileNotFoundException e) {
+			log.error("Tar.gz file not found: " + tarGzFile.getAbsolutePath(), e);
+		} catch (IOException e) {
+			log.error("Problem opening tar.gz file " + tarGzFile.getAbsolutePath(), e);
+		}
+	}
+
+	@Override
+	public boolean hasNext() {
+		return current != null;
+	}
+
+	@Override
+	public String next() {
+		String ret = new String(current);
+		current = findNext();
+		return ret;
+	}
+
+	@Override
+	public void remove() {}
+
+	private synchronized String findNext() {
+		TarArchiveEntry entry = null;
+		try {
+			while (null != (entry = tarInputStream.getNextTarEntry()) && !entry.isFile()) {
+				log.debug("Skipping TAR entry " + entry.getName());
+			}
+		} catch (IOException e) {
+			log.error("Error during tar.gz extraction", e);
+		}
+
+		if (entry == null) {
+			return null;
+		} else {
+			log.debug("Extracting " + entry.getName());
+			byte[] content = new byte[(int) entry.getSize()];
+			try {
+				tarInputStream.read(content, 0, content.length);
+				return new String(content);
+			} catch (IOException e) {
+				log.error("Impossible to extract file " + entry.getName(), e);
+				return null;
+			}
+
+		}
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/httplist/HttpListIteratorTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/httplist/HttpListIteratorTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/httplist/HttpListIteratorTest.java	(revision 48025)
@@ -0,0 +1,39 @@
+package eu.dnetlib.data.collector.plugins.httplist;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Iterator;
+
+import org.apache.commons.io.FileUtils;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class HttpListIteratorTest {
+
+	// Under test
+	private Iterator<String> iter;
+
+	@Before
+	public void setUp() throws Exception {
+		iter = new HttpListIterator("http://www.dlib.org/", "http://www.dlib.org/metadata/dlib_meta_files.txt");
+	}
+
+	@Test
+	@Ignore
+	public void testHttpListIterator() throws IOException {
+		FileUtils.forceMkdir(new File("/tmp/dlibmagazine"));
+
+		int i = 0;
+		while (iter.hasNext()) {
+			final String file = "/tmp/dlibmagazine/" + i++ + ".xml";
+			final FileWriter fw = new FileWriter(file);
+			System.out.println("Download " + file);
+			fw.append(iter.next());
+			fw.flush();
+			fw.close();
+		}
+		System.out.println("* END *");
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/mogno/MongoDumpTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/mogno/MongoDumpTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/mogno/MongoDumpTest.java	(revision 48025)
@@ -0,0 +1,32 @@
+package eu.dnetlib.data.collector.plugins.mogno;
+
+import java.io.IOException;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+
+import eu.dnetlib.data.collector.plugins.mongo.MongoDumpPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class MongoDumpTest {
+
+	@Test
+	public void test() throws CollectorServiceException, IOException {
+
+		ClassPathResource resource = new ClassPathResource("eu/dnetlib/data/collector/plugins/inputTest.json");
+
+		InterfaceDescriptor id = new InterfaceDescriptor();
+		id.setBaseUrl(resource.getFile().getAbsolutePath());
+		MongoDumpPlugin plugin = new MongoDumpPlugin();
+
+		int i = 0;
+		for (String s : plugin.collect(id, null, null)) {
+			Assert.assertNotNull(s);
+			i++;
+		}
+		Assert.assertEquals(i, 10);
+
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/archives/zip/ZipIteratorTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/archives/zip/ZipIteratorTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/archives/zip/ZipIteratorTest.java	(revision 48025)
@@ -0,0 +1,71 @@
+package eu.dnetlib.data.collector.plugins.archives.zip;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import junit.framework.Assert;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import eu.dnetlib.data.collector.plugins.archive.zip.ZipIterator;
+
+@Ignore
+public class ZipIteratorTest {
+
+	@Ignore
+	@Test
+	public void test() {
+		try {
+			int nFiles = 100;
+			File f1 = createZipArchive(nFiles);
+			iterate(nFiles, f1);
+			f1.delete();
+
+			nFiles = 2000;
+			File f2 = createZipArchive(nFiles);
+			iterate(nFiles, f2);
+			f2.delete();
+
+			nFiles = 124569;
+			File f3 = createZipArchive(nFiles);
+			iterate(nFiles, f3);
+			f3.delete();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private File createZipArchive(final int nFiles) throws IOException {
+		final StringBuilder sb = new StringBuilder();
+		sb.append("Test String");
+
+		File zip = File.createTempFile("testZip", ".zip");
+		final ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zip));
+
+		for (int i = 0; i < nFiles; i++) {
+			ZipEntry e = new ZipEntry(String.format("%d.txt", i));
+			out.putNextEntry(e);
+
+			byte[] data = sb.toString().getBytes();
+			out.write(data, 0, data.length);
+			out.closeEntry();
+		}
+
+		out.close();
+		return zip;
+	}
+
+	private void iterate(final int nFiles, final File zipFile) {
+		ZipIterator testedIterator = new ZipIterator(zipFile);
+		int counter = 0;
+		while (testedIterator.hasNext()) {
+			testedIterator.next();
+			counter++;
+		}
+		Assert.assertEquals(nFiles, counter);
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/archives/targz/TarGzIteratorTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/archives/targz/TarGzIteratorTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/archives/targz/TarGzIteratorTest.java	(revision 48025)
@@ -0,0 +1,80 @@
+package eu.dnetlib.data.collector.plugins.archives.targz;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
+import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
+import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import eu.dnetlib.data.collector.plugins.archive.targz.TarGzIterator;
+
+@Ignore
+public class TarGzIteratorTest {
+
+	@Ignore
+	@Test
+	public void test() {
+		try {
+			int nFiles = 14860;
+			File f1 = createTarGzArchive(nFiles);
+			iterate(nFiles, f1);
+			// f1.delete();
+
+			nFiles = 5971;
+			File f2 = createTarGzArchive(nFiles);
+			iterate(nFiles, f2);
+			// f2.delete();
+
+			nFiles = 198463;
+			File f3 = createTarGzArchive(nFiles);
+			iterate(nFiles, f3);
+			// f3.delete();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private File createTarGzArchive(final int nFiles) throws IOException {
+		final StringBuilder sb = new StringBuilder();
+		sb.append("Test String");
+
+		File targz = File.createTempFile("testTarGz", ".tar.gz");
+		FileOutputStream fOut = new FileOutputStream(targz);
+		BufferedOutputStream bOut = new BufferedOutputStream(fOut);
+		GzipCompressorOutputStream gzOut = new GzipCompressorOutputStream(bOut);
+		TarArchiveOutputStream tOut = new TarArchiveOutputStream(gzOut);
+
+		byte[] data = sb.toString().getBytes();
+		for (int i = 0; i < nFiles; i++) {
+			TarArchiveEntry tarEntry = new TarArchiveEntry(String.format("%d.txt", i));
+			tarEntry.setSize(data.length);
+			tOut.putArchiveEntry(tarEntry);
+
+			tOut.write(data, 0, data.length);
+			tOut.closeArchiveEntry();
+		}
+
+		tOut.close();
+		gzOut.close();
+		bOut.close();
+		fOut.close();
+		return targz;
+	}
+
+	private void iterate(final int nFiles, final File zipFile) {
+		TarGzIterator testedIterator = new TarGzIterator(zipFile);
+		int counter = 0;
+		while (testedIterator.hasNext()) {
+			testedIterator.next();
+			counter++;
+		}
+		Assert.assertEquals(nFiles, counter);
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/filesystem/FileSystemCollectorPluginTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/filesystem/FileSystemCollectorPluginTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/filesystem/FileSystemCollectorPluginTest.java	(revision 48025)
@@ -0,0 +1,119 @@
+package eu.dnetlib.data.collector.plugins.filesystem;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.FileVisitor;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import eu.dnetlib.data.collector.plugins.filesystem.FilesystemCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+@Ignore
+public class FileSystemCollectorPluginTest {
+
+	Path edh = Paths.get("/var/lib/eagle/content/EDH");
+	Path dai = Paths.get("/var/lib/eagle/content/DAI/arachne-eagle-images-v1-flat");
+	Path datacite = Paths.get("/media/andrea/xfs/datacite/output");
+
+	@Ignore
+	@Test
+	public void testCollection() throws CollectorServiceException {
+		InterfaceDescriptor descr = new InterfaceDescriptor();
+		HashMap<String, String> params = new HashMap<String, String>();
+		params.put("extensions", "xml");
+		descr.setBaseUrl("file:///var/lib/eagle/content/EDH");
+		descr.setParams(params);
+
+		FilesystemCollectorPlugin plugin = new FilesystemCollectorPlugin();
+		Iterable<String> result = plugin.collect(descr, null, null);
+
+		int counter = 0;
+		double totalTime = 0;
+		long lastTimestamp = System.currentTimeMillis();
+
+		for (String s : result) {
+			counter++;
+			if (counter % 10000 == 0) {
+				double deltaT = (System.currentTimeMillis() - lastTimestamp) / 1000.00;
+				totalTime += deltaT;
+				System.out.println("10K records collected in " + deltaT + " seconds");
+				lastTimestamp = System.currentTimeMillis();
+			}
+			Assert.assertNotNull(s);
+		}
+		System.out.println("Total " + counter + " in " + totalTime + " seconds");
+
+	}
+
+	@Ignore
+	@Test
+	public void testJavaNioDirectoryStream() throws IOException {
+		int counter = 0;
+		double totalTime = 0;
+		long lastTimestamp = System.currentTimeMillis();
+
+		Iterator<Path> pathIterator = Files.newDirectoryStream(edh).iterator();
+		while (pathIterator.hasNext()) {
+			Path next = pathIterator.next();
+			FileInputStream fileInputStream = new FileInputStream(next.toString());
+			String s = IOUtils.toString(fileInputStream);
+			counter++;
+			if (counter % 10000 == 0) {
+				double deltaT = (System.currentTimeMillis() - lastTimestamp) / 1000.00;
+				totalTime += deltaT;
+				System.out.println("10K records collected in " + deltaT + " seconds");
+				lastTimestamp = System.currentTimeMillis();
+			}
+			Assert.assertNotNull(s);
+			fileInputStream.close();
+		}
+		System.out.println("Total " + counter + " in " + totalTime + " seconds");
+	}
+
+	@Test
+	public void testJavaNioWalkTree() throws IOException {
+
+		FileVisitor<Path> fv = new SimpleFileVisitor<Path>() {
+
+			int counter = 0;
+			double totalTime = 0;
+			long lastTimestamp = System.currentTimeMillis();
+
+			@Override
+			public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {
+				FileInputStream fileInputStream = new FileInputStream(file.toString());
+				String s = IOUtils.toString(fileInputStream);
+				Assert.assertNotNull(s);
+				counter++;
+				if (counter % 10000 == 0) {
+					double deltaT = (System.currentTimeMillis() - lastTimestamp) / 1000.00;
+					totalTime += deltaT;
+					System.out.println("10K records collected in " + deltaT + " seconds");
+					lastTimestamp = System.currentTimeMillis();
+				}
+				fileInputStream.close();
+				return FileVisitResult.CONTINUE;
+			}
+		};
+
+		try {
+			Files.walkFileTree(edh, fv);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/FileGZipCollectorPluginTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/FileGZipCollectorPluginTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/plugins/FileGZipCollectorPluginTest.java	(revision 48025)
@@ -0,0 +1,42 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.util.HashMap;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class FileGZipCollectorPluginTest {
+
+	private Resource gzResource = new ClassPathResource("eu/dnetlib/data/collector/plugins/opendoar.xml.gz");
+	private InterfaceDescriptor descr;
+	private FileGZipCollectorPlugin plugin;
+
+	@Before
+	public void setUp() throws Exception {
+		descr = new InterfaceDescriptor();
+		String thePath = gzResource.getFile().getAbsolutePath();
+		descr.setBaseUrl("file://" + thePath);
+		HashMap<String, String> params = new HashMap<String, String>();
+		params.put("splitOnElement", "repository");
+		descr.setParams(params);
+		plugin = new FileGZipCollectorPlugin();
+	}
+
+	@Test
+	public void test() throws CollectorServiceException {
+		int i = 0;
+		for (String s : plugin.collect(descr, null, null)) {
+			Assert.assertTrue(s.length() > 0);
+			i++;
+			break;
+		}
+		Assert.assertTrue(i > 0);
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/ApplyXsltTest.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/ApplyXsltTest.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/java/eu/dnetlib/data/collector/ApplyXsltTest.java	(revision 48025)
@@ -0,0 +1,30 @@
+package eu.dnetlib.data.collector;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import eu.dnetlib.miscutils.functional.xml.ApplyXslt;
+
+public class ApplyXsltTest {
+
+	private final String xslt = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+			+ "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" "
+			+ "xmlns:dyn=\"http://exslt.org/dynamic\" extension-element-prefixes=\"dyn\"> " + "<xsl:param name=\"elem\" select=\"string('aa')\"/> "
+			+ "<xsl:template match=\"/\"> " + "<output>" + "<cc><xsl:value-of select=\"//*[local-name()=$elem]\" /></cc>" + "</output>"
+			+ "</xsl:template>" + "</xsl:stylesheet>";
+
+	private ApplyXslt f;
+
+	@Before
+	public void setUp() throws Exception {
+		//System.out.println(xslt);
+		f = new ApplyXslt(xslt);
+		System.out.println(f.getTransformer().getClass().getCanonicalName());
+	}
+
+	@Test
+	public void test() {
+		System.out.println(f.evaluate("<record><aa>1234</aa><bb>metadata</bb></record>"));
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/csv/testCSVwithBOM.csv
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/csv/testCSVwithBOM.csv	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/csv/testCSVwithBOM.csv	(revision 48025)
@@ -0,0 +1,6 @@
+"ID","TITLE","ABSTRACT","YEAR"
+1,"La divina commedia","AAAAAAAAAAAAAAAAAAAAAAA",2012
+2,"I Promessi Sposi","BBBBBBBBBBBBBBBBBB",2010
+3,"Il Piccolo Principe","CCCCCCCCCCCCCCCCCCCCCCCC",1990
+4,"Harry Potter","DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD",2001
+5,"Il Padrino","EEEEEEEEEEEEEEEEEE",1970
\ No newline at end of file
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/oaisets/applicationContext-OaiSetsCollectorPluginTest.xml
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/oaisets/applicationContext-OaiSetsCollectorPluginTest.xml	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/oaisets/applicationContext-OaiSetsCollectorPluginTest.xml	(revision 48025)
@@ -0,0 +1,27 @@
+<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="oaiHttpConnector"
+		class="eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector"
+		init-method="initTrustManager" />
+
+	<bean id="oaiSetsIteratorFactory"
+		class="eu.dnetlib.data.collector.plugins.oaisets.OaiSetsIteratorFactory"
+		p:httpConnector-ref="oaiHttpConnector" />
+
+	<!-- Functions -->
+	<bean id="listOaiSetsFunction" class="eu.dnetlib.data.collector.functions.ListOaiSetsFunction"
+		p:oaiSetsIteratorFactory-ref="oaiSetsIteratorFactory" />
+
+</beans>
\ No newline at end of file
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/inputTest.json
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/inputTest.json	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/inputTest.json	(revision 48025)
@@ -0,0 +1,10 @@
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f753" }, "id" : "doajarticles::c7b9020f39376b0fb2da4406b6e0798f", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::c7b9020f39376b0fb2da4406b6e0798f</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:006ba2d18b834e8f935f0d91386993bc</dri:recordIdentifier><dri:dateOfCollection>2014-11-07T09:25:14.96Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:006ba2d18b834e8f935f0d91386993bc</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-10-29T15:00:42Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOk1lZGljaW5l</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Hubungan Faktor Risiko, Status Instabilitas Mikrosatelit, dan Ekspresi P53 dengan Karsinogenesis Adenokarsinoma Kolorektal pada Orang Indonesia</dc:title><dc:identifier>10.15395/mkb.v44n4.216</dc:identifier><dc:identifier>0126-074X</dc:identifier><dc:identifier>2338-6223</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%22006ba2d18b834e8f935f0d91386993bc%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2012-12-01T00:00:00Z</dc:date><dc:relation>http://journal.fk.unpad.ac.id/index.php/mkb/article/view/216</dc:relation><dc:description>Different from developed countries, molecular characteristic of colorectal adenocarcinoma (CRC) among Indonesians in the age group of ≤40 years old is mostly similar compared to the CRC of the age group of &gt;40 years old, and both are sporadic cancers. To know the association of molecular characteristic with the risk factors of CRC, a cross sectional study was conducted to analyze the association of risk factors, microsatellite instability (MSI) and P53 expression (chromosomal Instability=CIN) status in 39 consecutive CRC patients who were eligible for this study at Dr Hasan Sadikin Hospital, from March 2009 until March 2010. They consisted of 21 male and 18 female patients. Of them, there were 17 and 22 patients with&gt;40 and≤40 years of age, respectively. The immuno-histochemistry examinations for the expression of mutated MLH1, MSH2 and p53 genes were conducted to determine the CIN and MSI status. The results showed that the CRC ≤40 years of age had 4 MSI high, 1 MSI low, and 17 MSI negative, associated with 10 P53 positives and 12 p53 negatives. By contrast, in the CRC &gt;40 years of age the MSI was low and negative in 4 and 13 cases, respectively. They were associated with 11 and 6 of p53 positive and negative status, respectively. Between the two groups, there were no significant differences with regards to the association pattern between the risk factors and their molecular characteristics (p&gt;0.05). Conclusions, majority of CRC patients among Indonesian show a molecular classification of high CIN and low MSI, and is associated with risk factors of high fat and protein, low fiber dietary intake, overweight, smoking, and low physical activitis. </dc:description><dc:creator>Kiki Lukman</dc:creator><dc:creator>Laely Yuniasari</dc:creator><dc:creator>Bethy S. Hernowo</dc:creator><dc:subject>Carcinogenesis of colorectal carcinoma</dc:subject><dc:subject>expression of P53</dc:subject><dc:subject>microstallite instability</dc:subject><dc:subject>risk factors</dc:subject><dc:type>article</dc:type><dc:subject>LCC:Medicine</dc:subject><dc:subject>LCC:R</dc:subject><dc:language>EN</dc:language><dc:language>ID</dc:language><dc:rights>CC BY-NC</dc:rights><dc:source>Majalah Kedokteran Bandung, Vol 44, Iss 4, Pp 245-252 (2012)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1415352398443 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f754" }, "id" : "doajarticles::7b9f8826a5c2d0d814f0a082cff25b38", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::7b9f8826a5c2d0d814f0a082cff25b38</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:0317d6befc194c50842c934a99659752</dri:recordIdentifier><dri:dateOfCollection>2014-11-16T09:49:58.615Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:0317d6befc194c50842c934a99659752</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-11-10T19:04:02Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkhpc3RvcnkgQW1lcmljYQ~~</setSpec><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkxhdGluIEFtZXJpY2EuIFNwYW5pc2ggQW1lcmljYQ~~</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Negócios em família: imprensa, linguagem e conceitos na província oriental (1814) = Family business:  press, language and concepts in oriental province (1814)</dc:title><dc:identifier>2178-3748</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%220317d6befc194c50842c934a99659752%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2013-01-01T00:00:00Z</dc:date><dc:relation>http://revistaseletronicas.pucrs.br/ojs/index.php/oficinadohistoriador/article/view/13028/10663</dc:relation><dc:description>\nO presente trabalho busca investigar os argumentos acerca do projeto de unificação e autonomia do Vice-Reinado do Rio da Prata, encontrados no periódico El sol de las Provincias Unidas. Com o foco principal na cidade de Montevidéu, considerada opositora a campanha comandada por políticos e líderes, principalmente de Buenos Aires. Buscaremos compreender como eram utilizados e discutidos conceitos muito presentes na imprensa periódica da época como pátria, pueblo, nação e soberania.\n</dc:description><dc:creator>Winter, Murillo Dias</dc:creator><dc:publisher>Pontifícia Universidade Católica do Rio Grande do Sul</dc:publisher><dc:subject>AMÉRICA DO SUL - HISTÓRIA</dc:subject><dc:subject>RIO DA PRATA - HISTÓRIA</dc:subject><dc:type>article</dc:type><dc:subject>LCC:History America</dc:subject><dc:subject>LCC:E-F</dc:subject><dc:subject>LCC:Latin America. Spanish America</dc:subject><dc:subject>LCC:F1201-3799</dc:subject><dc:source>Oficina do Historiador, Vol 6, Iss 2, Pp 78-90 (2013)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1416131476829 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f755" }, "id" : "doajarticles::d80e74eeb0464277194a937e4a9f8d08", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::d80e74eeb0464277194a937e4a9f8d08</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:035752633cbf4058b526b34d00c504e2</dri:recordIdentifier><dri:dateOfCollection>2014-11-16T09:49:57.894Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:035752633cbf4058b526b34d00c504e2</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-11-10T19:04:15Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkhpc3RvcnkgQW1lcmljYQ~~</setSpec><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkxhdGluIEFtZXJpY2EuIFNwYW5pc2ggQW1lcmljYQ~~</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Elites em perspectiva: uma discussão sobre hierarquias, composição da riqueza e consolidação dos grupos hegemônicos em São João del Rei = Elites in perspective:  a discussion about hierarchies, composition of wealth and consolidation of hegemonic groups in São João del Rei</dc:title><dc:identifier>2178-3748</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%22035752633cbf4058b526b34d00c504e2%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2014-01-01T00:00:00Z</dc:date><dc:relation>http://revistaseletronicas.pucrs.br/ojs/index.php/oficinadohistoriador/article/view/13282/11540</dc:relation><dc:description>\nO artigo analisa aspectos econômicos da elite colonial mineira a partir de meados do século XVIII, mediante a investigação empírica da sociedade de São João Del Rei. O comércio em São João assumiu um papel central na liquidez da economia regional, permitindo a formação de grupos hegemônicos no século XIX. Mas há ainda muitas dúvidas sobre quem era essa elite no século XVIII. Com base em pesquisa prosopográfica que reconstrói os caminhos dos homens arrolados por Domingos Nunes Vieira como os mais ricos da capitania de Minas Gerais no ano de 1756, percebemos que a elite mineira que se formou no século XVIII diferia dos padrões mais gerais para a caracterização de grupos hegemônicos em outras regiões do Brasil, no mesmo período.\n</dc:description><dc:creator>Melo, Keila Cecília de</dc:creator><dc:publisher>Pontifícia Universidade Católica do Rio Grande do Sul</dc:publisher><dc:subject>MINAS GERAIS - HISTÓRIA - PERÍODO COLONIAL, 1500-1815</dc:subject><dc:subject>COMÉRCIO - MINAS GERAIS - HISTÓRIA</dc:subject><dc:subject>ELITES - BRASIL</dc:subject><dc:type>article</dc:type><dc:subject>LCC:History America</dc:subject><dc:subject>LCC:E-F</dc:subject><dc:subject>LCC:Latin America. Spanish America</dc:subject><dc:subject>LCC:F1201-3799</dc:subject><dc:source>Oficina do Historiador, Vol 7, Iss 1, Pp 4-22 (2014)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1416131476788 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f756" }, "id" : "doajarticles::4a7e41a10b88b821ec52347d2661f62c", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::4a7e41a10b88b821ec52347d2661f62c</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:03d282ba6823426fa370fe388d17280d</dri:recordIdentifier><dri:dateOfCollection>2014-11-07T09:25:14.961Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:03d282ba6823426fa370fe388d17280d</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-10-29T15:17:30Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOk1lZGljaW5l</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Kadar Laktat Darah sebagai Prediktor Kontaminasi Bakteri pada Hernia Inguinalis Lateralis Strangulata</dc:title><dc:identifier>10.15395/mkb.v45n1.205</dc:identifier><dc:identifier>0126-074X</dc:identifier><dc:identifier>2338-6223</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%2203d282ba6823426fa370fe388d17280d%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2013-03-01T00:00:00Z</dc:date><dc:relation>http://journal.fk.unpad.ac.id/index.php/mkb/article/view/205</dc:relation><dc:description>Strangulated groin hernia is one of the acute abdomen and have to be treated immediately. Strangulated hernia will cause damage of cell integrity and barrier of intestinal mucous, which make bacterial contamination occur. Strangulated intestinal cells will have anaerobic metabolism which make the blood lactate level increased. Therefore study was conducted to know the correlation between blood lactate level and bacterial contamination in strangulated groin hernia. The study method was cross-sectional with prospective data, patients with strangulated groin hernia who came to Dr. Hasan Sadikin Hospital Bandung during May 2011–April 2012. Blood lactate level was measured when the patient came to hospital and the peritoneal fluid which came from the hernial sac was taken intraoperatively. The data were analyzed with regression logistic test. There were 30 subjects in this study, 28 males and 2 females. The average age was 58.5±12.86 years old. The average blood lactate level was 1.76±0.36 mmol/L. The most found bacterial culture was Escherichia coli. There was strong and very significance correlation between blood lactate level and bacterial contamination, r=0.817 and p=0.007 (p&lt;0.01). In conclusion, blood lactate level can be a predictor for bacterial contamination occurrence in patient with strangulated groin hernia. </dc:description><dc:creator>Anthony Pratama</dc:creator><dc:creator>Haryono Yarman</dc:creator><dc:creator>Bambang A. S. Sulthana</dc:creator><dc:subject>Bacterial contamination</dc:subject><dc:subject>blood lactate level</dc:subject><dc:subject>strangulated groin hernia</dc:subject><dc:type>article</dc:type><dc:subject>LCC:Medicine</dc:subject><dc:subject>LCC:R</dc:subject><dc:language>EN</dc:language><dc:language>ID</dc:language><dc:rights>CC BY-NC</dc:rights><dc:source>Majalah Kedokteran Bandung, Vol 45, Iss 1, Pp 44-49 (2013)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1415352398443 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f757" }, "id" : "doajarticles::fa2f0a8e42109575566a2d529ec6c590", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::fa2f0a8e42109575566a2d529ec6c590</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:070ea377bc8c44d28e04e06945a357d7</dri:recordIdentifier><dri:dateOfCollection>2014-11-07T09:25:14.588Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:070ea377bc8c44d28e04e06945a357d7</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-10-29T16:49:13Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkNvbXB1dGVyIGVuZ2luZWVyaW5nLiBDb21wdXRlciBoYXJkd2FyZQ~~</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>TDCCREC: AN EFFICIENT AND SCALABLE WEB-BASED RECOMMENDATION SYSTEM</dc:title><dc:identifier>0976-6561</dc:identifier><dc:identifier>2229-6956</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%22070ea377bc8c44d28e04e06945a357d7%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2010-10-01T00:00:00Z</dc:date><dc:relation>http://ictactjournals.in/paper/ijsc2_page_70_77.pdf</dc:relation><dc:description>Web browsers are provided with complex information space where the volume of information available to them is huge. There comes the Recommender system which effectively recommends web pages that are related to the current webpage, to provide the user with further customized reading material. To enhance the performance of the recommender systems, we include an elegant proposed web based recommendation system; Truth Discovery based Content and Collaborative RECommender (TDCCREC) which is capable of addressing scalability. Existing approaches such as Learning automata deals with usage and navigational patterns of users. On the other hand, Weighted Association Rule is applied for recommending web pages by assigning weights to each page in all the transactions. Both of them have their own disadvantages. The websites recommended by the search engines have no guarantee for information correctness and often delivers conflicting information. To solve them, content based filtering and collaborative filtering techniques are introduced for recommending web pages to the active user along with the trustworthiness of the website and confidence of facts which outperforms the existing methods. Our results show how the proposed recommender system performs better in predicting the next request of web users.</dc:description><dc:creator>K.Latha</dc:creator><dc:creator>P.Ramya</dc:creator><dc:creator>V.Sita</dc:creator><dc:creator>R.Rajaram</dc:creator><dc:subject>Recommendation</dc:subject><dc:subject>Content</dc:subject><dc:subject>Collaborative Filtering</dc:subject><dc:subject>Learning Automata</dc:subject><dc:subject>Navigation</dc:subject><dc:type>article</dc:type><dc:subject>LCC:Computer engineering. Computer hardware</dc:subject><dc:subject>LCC:TK7885-7895</dc:subject><dc:language>EN</dc:language><dc:rights>CC BY-NC-SA</dc:rights><dc:source>ICTACT Journal on Soft Computing, Vol 1, Iss 2, Pp 70-77 (2010)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1415352398423 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f758" }, "id" : "doajarticles::8a5eadce7528bb750ee6591b040b41af", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::8a5eadce7528bb750ee6591b040b41af</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:08ddf58df5464cf48970dfb2d6661b05</dri:recordIdentifier><dri:dateOfCollection>2014-11-16T09:50:01.554Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:08ddf58df5464cf48970dfb2d6661b05</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-11-10T19:03:28Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkhpc3RvcnkgQW1lcmljYQ~~</setSpec><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkxhdGluIEFtZXJpY2EuIFNwYW5pc2ggQW1lcmljYQ~~</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>História e literatura: as vozes de uma geração nos contos de Caio Fernando Abreu</dc:title><dc:identifier>2178-3748</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%2208ddf58df5464cf48970dfb2d6661b05%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2011-01-01T00:00:00Z</dc:date><dc:relation>http://revistaseletronicas.pucrs.br/ojs/index.php/oficinadohistoriador/article/viewFile/8926/6472</dc:relation><dc:description>\nO presente trabalho procura investigar um conjunto de contos do escritor Caio Fernando Abreu, publicados nos livros Ovo apunhalado e Pedras de Calcutá, como sensibilidades e percepções da geração de jovens, durante o final da década de 1960 e início dos anos de 1970. Para tanto, busca-se uma reflexão a respeito das diferenças e semelhanças entre o discurso da Literatura e da História, a fim de analisar aquela como uma porta de acesso às representações sociais da juventude brasileira que viveu o período mais repressivo da ditadura militar.\n</dc:description><dc:creator>Azevedo, Guilherme Zubaran de</dc:creator><dc:publisher>Pontifícia Universidade Católica do Rio Grande do Sul</dc:publisher><dc:subject>ABREU, CAIO FERNANDO - CRÍTICA E INTERPRETAÇÃO</dc:subject><dc:subject>LITERATURA RIO-GRANDENSE - HISTÓRIA E CRÍTICA</dc:subject><dc:subject>CONTOS RIO-GRANDENSES - HISTÓRIA E CRÍTICA</dc:subject><dc:subject>PEDRA DE CALCUTÁ - CRÍTICA E INTERPRETAÇÃO</dc:subject><dc:subject>&lt;&lt;O&gt;&gt; OVO APUNHALADO - CRÍTICA E INTERPRETAÇÃO</dc:subject><dc:subject>JUVENTUDE - ASPECTOS SOCIAIS</dc:subject><dc:type>article</dc:type><dc:subject>LCC:History America</dc:subject><dc:subject>LCC:E-F</dc:subject><dc:subject>LCC:Latin America. Spanish America</dc:subject><dc:subject>LCC:F1201-3799</dc:subject><dc:source>Oficina do Historiador, Vol 3, Iss 2, Pp 126-140 (2011)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1416131478990 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f759" }, "id" : "doajarticles::67e2d07b21b630f07b9b2cb24d801a7e", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::67e2d07b21b630f07b9b2cb24d801a7e</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:13e7e1e4b62c4d52b81ef586a996ca39</dri:recordIdentifier><dri:dateOfCollection>2014-11-07T09:25:14.962Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:13e7e1e4b62c4d52b81ef586a996ca39</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-10-29T15:20:50Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOk1lZGljaW5l</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Penurunan Tekanan Intraokular Pascabedah Katarak pada Kelompok Sudut Bilik Mata Depan Tertutup dan Terbuka</dc:title><dc:identifier>10.15395/mkb.v45n1.204</dc:identifier><dc:identifier>0126-074X</dc:identifier><dc:identifier>2338-6223</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%2213e7e1e4b62c4d52b81ef586a996ca39%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2013-03-01T00:00:00Z</dc:date><dc:relation>http://journal.fk.unpad.ac.id/index.php/mkb/article/view/204</dc:relation><dc:description>Increased crystalline lens thickness in senile cataract causing resistance to aqueous humor outflow. Increased anterior chamber depth had a positive correlation with the widening of the anterior chamber angle and decreased of intraocular pressure (IOP) after cataract extraction. The purpose of this study was to compare IOP reduction after cataract surgery between angle-closure and open-angle group. This pre-post test design study was to compare IOP after phacoemulsification cataract surgery in 26 eyes of 26 patients divided into angle-closure and open-angle groups consisting of 13 eyes each. The study was conducted in Cicendo Eye Hospital Bandung in period of March until June 2012. Patients who planned to have phacoemulsification cataract surgery were recruited consecutively. The anterior chamber angle was measured before surgery using Sussman 4-mirror goniolens. The intraocular pressure were measured before and three weeks after surgery using Goldmann aplanation tonometer. Statistical analysis was done using t test. The results indicated that IOP reduction was statistically significant greater in the angle-closure group (19.6%) compared with open-angle group (11.3%) with p=0.022. In conclusion, IOP reduction after phacoemulsification cataract surgery was greater in the angle-closure group compared with open-angle group.</dc:description><dc:creator>Rakhma Indria Hapsari</dc:creator><dc:creator>Andika Prahasta</dc:creator><dc:creator>Sutarya Enus</dc:creator><dc:subject>Anterior chamber angle</dc:subject><dc:subject>gonioscopy</dc:subject><dc:subject>intraocular pressure</dc:subject><dc:subject>phacoemulsification surgery</dc:subject><dc:subject>senile cataract</dc:subject><dc:type>article</dc:type><dc:subject>LCC:Medicine</dc:subject><dc:subject>LCC:R</dc:subject><dc:language>EN</dc:language><dc:language>ID</dc:language><dc:rights>CC BY-NC</dc:rights><dc:source>Majalah Kedokteran Bandung, Vol 45, Iss 1, Pp 56-61 (2013)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1415352398444 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f75a" }, "id" : "doajarticles::0f7b9241790570314139c3e2dc5b06ce", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::0f7b9241790570314139c3e2dc5b06ce</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:153cd7d31171413490f49500378cc50f</dri:recordIdentifier><dri:dateOfCollection>2014-11-07T09:25:14.962Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:153cd7d31171413490f49500378cc50f</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-10-29T15:14:43Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOk1lZGljaW5l</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Hubungan antara Gejala Gangguan Depresi dan Tension-Type Headache (TTH): Studi Eksploratif</dc:title><dc:identifier>10.15395/mkb.v45n1.92</dc:identifier><dc:identifier>0126-074X</dc:identifier><dc:identifier>2338-6223</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%22153cd7d31171413490f49500378cc50f%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2013-03-01T00:00:00Z</dc:date><dc:relation>http://journal.fk.unpad.ac.id/index.php/mkb/article/view/92</dc:relation><dc:description>The prevalence rate of depressive disorders is increasing, including those having comorbidity with physical illnesses. One of the medical conditions that has been related to depressive disorder is tension-type headache (TTH). This comorbidity is related to the chronic course of TTH. This research aims to know which kind of depressive symptoms are most frequently found in TTH patients and to analyze the correlation between those symptoms and the type of TTH. This was a cross sectional study on 32 TTH patients who visited the outpatient clinic of the Neurology Department of Dr. Hasan Sadikin Hospital Bandung during the period of November to December 2011 and who were diagnosed as having depressive disorder. They were examined using Hamilton Depression Rating Scale (HDRS). We correlated the scores of depressive disorder symptoms with the type of TTH, followed by mutivariable analysis to find the prevalence ratio of depressive disorder symptoms which correlated with the type of TTH. The results showed the prevalence rate of depressive disorder in TTH was 32/38 patients while the most frequent depressive disorder symptoms of the subjects were depressive mood, fatigue and psychological anxiety. Depressive mood and fatigue were positively correlated with the type of TTH (rs=0.411, p=0.019 and rs=0.379, p=0.032). Logistic regression analysis showed that only depressive mood increased the risk\nof chronic TTH with a prevalence ratio of 4.74 (IK 95% 1.24–18.02). In conclusions, depressive mood, which is the most frequent symptoms of depressive disorder, can be used in the early screening of depressive disorder in TTH patients and this symptom increased the risk of chronic TTH.</dc:description><dc:creator>Cecilia J. Setiawan</dc:creator><dc:creator> Henny Anggraini Sadeli</dc:creator><dc:creator>Tuti Wahmurti A. Sapiie</dc:creator><dc:subject>Depressive disorder</dc:subject><dc:subject>depressive disorder symptoms</dc:subject><dc:subject>tension-type headache</dc:subject><dc:type>article</dc:type><dc:subject>LCC:Medicine</dc:subject><dc:subject>LCC:R</dc:subject><dc:language>EN</dc:language><dc:language>ID</dc:language><dc:rights>CC BY-NC</dc:rights><dc:source>Majalah Kedokteran Bandung, Vol 45, Iss 1, Pp 28-34 (2013)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1415352398444 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f75b" }, "id" : "doajarticles::b480efd4102ac5d8f46e7ac11c1918f0", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::b480efd4102ac5d8f46e7ac11c1918f0</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:16d82eeb5cbd4dd5a405c44585355344</dri:recordIdentifier><dri:dateOfCollection>2014-11-07T09:25:14.962Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:16d82eeb5cbd4dd5a405c44585355344</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-10-29T14:52:58Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOk1lZGljaW5l</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Hubungan Kadar Seng Plasma dengan Derajat Penyakit Pneumonia</dc:title><dc:identifier>10.15395/mkb.v44n4.177</dc:identifier><dc:identifier>0126-074X</dc:identifier><dc:identifier>2338-6223</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%2216d82eeb5cbd4dd5a405c44585355344%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2012-12-01T00:00:00Z</dc:date><dc:relation>http://journal.fk.unpad.ac.id/index.php/mkb/article/view/177</dc:relation><dc:description>Pneumonia is a major health problem affecting children all over the world and remains a major cause of childhood morbidity and mortality in developing countries. Children with micronutrients deficiency including zinc, which might cause immune system disorder, have higher risk to have pneumonia. The aim of this study was to investigate the association between plasma zinc level and pneumonia, severe, and very severe pneumonia in children aged 2–59 months. This observational analytic with cross-sectional study was performed at the Pediatric Department of Dr. Hasan Sadikin General Hospital, Ujung Berung Hospital and Cibabat Hospital, in August to November 2009. Subjects of this study were 2–59-month-old children who meet the WHO Indonesian classification for pneumonia. Blood samples for plasma zinc examination were collected on admission. Data were analysed using exact Fisher\nand Mann-Whitney test for the association between plasma zinc level and severity of pneumonia. A total of 42 subjects were enrolled, 1 (2%) child were classified as having pneumonia, 32 (76%) children with severe, and 9 (22%) with very severe pneumonia. There were significant differences (p=0.032) in plasma zinc levels between severe and very severe pneumonia with a median of 96.685 μg/dL (57.32–195.66 μg/dL) for severe pneumonia and 80.240 μg/dL (63.0–111.84 μg/dL) for very severe pneumonia. This study shows an association between plasma zinc levels and severe and very severe pneumonia in children aged 2–59 months.</dc:description><dc:creator>Paramita Diah Winarni</dc:creator><dc:creator>Dedi Rachmadi</dc:creator><dc:creator>Nanan Sekarwana</dc:creator><dc:subject>Pneumonia</dc:subject><dc:subject>plasma zinc</dc:subject><dc:subject>immune system</dc:subject><dc:type>article</dc:type><dc:subject>LCC:Medicine</dc:subject><dc:subject>LCC:R</dc:subject><dc:language>EN</dc:language><dc:language>ID</dc:language><dc:rights>CC BY-NC</dc:rights><dc:source>Majalah Kedokteran Bandung, Vol 44, Iss 4, Pp 213-217 (2012)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1415352398444 }
+{ "_id" : { "$oid" : "54511ba803aafdc58cf9f75c" }, "id" : "doajarticles::331cdcc71cf0d019f56aad2beb23de9b", "originalId" : null, "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><oai:record xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns=\"http://namespace.openaire.eu/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\"><oai:header><dri:objIdentifier>doajarticles::331cdcc71cf0d019f56aad2beb23de9b</dri:objIdentifier><dri:recordIdentifier>oai:doaj.org/article:18f53ab64edb459dbbb48df1998fa11f</dri:recordIdentifier><dri:dateOfCollection>2014-11-16T09:50:01.932Z</dri:dateOfCollection><dri:repositoryId>fdf7cb44-c16f-4474-9d1c-00c5b1fc6f7d_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId><oaf:datasourceprefix>doajarticles</oaf:datasourceprefix><identifier xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">oai:doaj.org/article:18f53ab64edb459dbbb48df1998fa11f</identifier><datestamp xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">2014-11-10T19:03:24Z</datestamp><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkhpc3RvcnkgQW1lcmljYQ~~</setSpec><setSpec xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\">TENDOkxhdGluIEFtZXJpY2EuIFNwYW5pc2ggQW1lcmljYQ~~</setSpec></oai:header><metadata xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns=\"http://www.openarchives.org/OAI/2.0/\"><oai_dc:dc xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\"><dc:title>Memória e história oral entre os imigrantes alemães no Sul do Brasil: o caso da família Schmitt</dc:title><dc:identifier>2178-3748</dc:identifier><dc:identifier>http://doaj.org/search?source=%7B%22query%22%3A%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22id%22%3A%2218f53ab64edb459dbbb48df1998fa11f%22%7D%7D%5D%7D%7D%7D</dc:identifier><dc:date>2010-01-01T00:00:00Z</dc:date><dc:relation>http://revistaseletronicas.pucrs.br/ojs/index.php/oficinadohistoriador/article/viewFile/7752/5771</dc:relation><dc:description>\nO presente artigo analisa a imigração alemã sob a ótica da história oral no caso específico da colônia de Três Forquilhas, localizada no sul do Brasil e fundada em 1826. Nosso objetivo é compreender como uma família de imigrantes alemães narrou suas histórias e como elas foram repassadas aos seus descendentes. Essa narrativa pode ser relativizada a partir do confronto das suas informações com outros documentos. Nesse trabalho utilizaremos um documento escrito produzido algumas gerações após os eventos históricos narrados.\n</dc:description><dc:creator>Trespach, Rodrigo</dc:creator><dc:publisher>Pontifícia Universidade Católica do Rio Grande do Sul</dc:publisher><dc:subject>IMIGRAÇÃO ALEMÃ - RIO GRANDE DO SUL</dc:subject><dc:subject>RIO GRANDE DO SUL - HISTÓRIA</dc:subject><dc:type>article</dc:type><dc:subject>LCC:History America</dc:subject><dc:subject>LCC:E-F</dc:subject><dc:subject>LCC:Latin America. Spanish America</dc:subject><dc:subject>LCC:F1201-3799</dc:subject><dc:source>Oficina do Historiador, Vol 2, Iss 1, Pp 66-77 (2010)</dc:source></oai_dc:dc></metadata><about><oaf:datainfo><oaf:inferred>false</oaf:inferred><oaf:deletedbyinference>false</oaf:deletedbyinference><oaf:trust>0.9</oaf:trust><oaf:inferenceprovenance/><oaf:provenanceaction schemename=\"dnet:provenanceActions\" schemeid=\"dnet:provenanceActions\" classname=\"sysimport:crosswalk:repository\" classid=\"sysimport:crosswalk:repository\"/></oaf:datainfo></about></oai:record>", "timestamp" : 1416131479012 }
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ClasspathCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ClasspathCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ClasspathCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,19 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.io.BufferedInputStream;
+import java.net.URL;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class ClasspathCollectorPlugin extends AbstractSplittedRecordPlugin {
+
+	@Override
+	protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorServiceException {
+		try {
+			return new BufferedInputStream(getClass().getResourceAsStream(new URL(baseUrl).getPath()));
+		} catch (Exception e) {
+			throw new CollectorServiceException("Error dowloading url: " + baseUrl);
+		}
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/CollectorPluginEnumerator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/CollectorPluginEnumerator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/CollectorPluginEnumerator.java	(revision 48025)
@@ -0,0 +1,55 @@
+package eu.dnetlib.data.collector;
+
+import java.util.Collection;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
+import org.springframework.beans.factory.ListableBeanFactory;
+
+import eu.dnetlib.data.collector.plugin.CollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class CollectorPluginEnumerator implements BeanFactoryAware {
+
+	// private static final Log log = LogFactory.getLog(CollectorPluginEnumerator.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	/**
+	 * bean factory.
+	 */
+	private ListableBeanFactory beanFactory;
+
+	/**
+	 * Get all beans implementing the CollectorPlugin interface.
+	 * 
+	 * @return
+	 */
+	public Collection<CollectorPlugin> getAll() {
+		return beanFactory.getBeansOfType(CollectorPlugin.class).values();
+	}
+
+	@Override
+	public void setBeanFactory(final BeanFactory beanFactory) throws BeansException {
+		this.beanFactory = (ListableBeanFactory) beanFactory;
+	}
+
+	public ListableBeanFactory getBeanFactory() {
+		return beanFactory;
+	}
+
+	/**
+	 * Get given CollectorPlugin or throws exception.
+	 * 
+	 * @param protocol
+	 * @return
+	 * @throws CollectorServiceException
+	 */
+	public CollectorPlugin get(final String protocol) throws CollectorServiceException {
+		for (CollectorPlugin cp : getAll()) {
+			if (protocol.equalsIgnoreCase(cp.getProtocol())) {
+				return cp;
+			}
+		}
+		throw new CollectorServiceException("plugin not found for protocol: " + protocol);
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/applicationContext-dnet-modular-collector-service.xml
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/applicationContext-dnet-modular-collector-service.xml	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/applicationContext-dnet-modular-collector-service.xml	(revision 48025)
@@ -0,0 +1,30 @@
+<?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="dataCollectorService" class="eu.dnetlib.data.collector.CollectorServiceImpl"
+	      init-method="start"/>
+
+	<bean id="collectorPluginEnumerator" class="eu.dnetlib.data.collector.CollectorPluginEnumerator"/>
+
+	<jaxws:endpoint id="dataCollectorServiceEndpoint" implementor="#dataCollectorService"
+	                implementorClass="eu.dnetlib.data.collector.rmi.CollectorService" address="/dataCollector"/>
+
+	<template:instance name="serviceRegistrationManager"
+	                   t:serviceRegistrationManagerClass="eu.dnetlib.enabling.tools.registration.ValidatingServiceRegistrationManagerImpl"
+	                   t:name="dataCollectorServiceRegistrationManager" t:service="dataCollectorService"
+	                   t:endpoint="dataCollectorServiceEndpoint" t:jobScheduler="jobScheduler"
+	                   t:serviceRegistrator="blackboardServiceRegistrator"/>
+
+</beans>
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/HttpCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/HttpCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/HttpCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,28 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.io.BufferedInputStream;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.methods.GetMethod;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class HttpCollectorPlugin extends AbstractSplittedRecordPlugin {
+
+	@Override
+	protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorServiceException {
+		try {
+			final HttpClient client = new HttpClient();
+			final HttpMethod method = new GetMethod(baseUrl);
+			final int responseCode = client.executeMethod(method);
+
+			if (HttpStatus.SC_OK != responseCode) { throw new CollectorServiceException("Error " + responseCode + " dowloading url: " + baseUrl); }
+			return new BufferedInputStream(method.getResponseBodyAsStream());
+		} catch (Exception e) {
+			throw new CollectorServiceException("Error dowloading url: " + baseUrl);
+		}
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,20 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.net.URL;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class FileCollectorPlugin extends AbstractSplittedRecordPlugin {
+
+	@Override
+	protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorServiceException {
+		try {
+			return new BufferedInputStream(new FileInputStream(new URL(baseUrl).getPath()));
+		} catch (Exception e) {
+			throw new CollectorServiceException("Error reading file " + baseUrl, e);
+		}
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/CollectorServiceImpl.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/CollectorServiceImpl.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/CollectorServiceImpl.java	(revision 48025)
@@ -0,0 +1,77 @@
+package eu.dnetlib.data.collector;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+import eu.dnetlib.data.collector.plugin.CollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorService;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+import eu.dnetlib.data.collector.rmi.ProtocolDescriptor;
+import eu.dnetlib.data.collector.rmi.ProtocolParameter;
+import eu.dnetlib.data.collector.rmi.ProtocolParameterValue;
+import eu.dnetlib.enabling.resultset.IterableResultSetFactory;
+import eu.dnetlib.enabling.tools.AbstractBaseService;
+
+public class CollectorServiceImpl extends AbstractBaseService implements CollectorService {
+
+	@Resource
+	private CollectorPluginEnumerator collectorPluginEnumerator;
+
+	@Resource
+	private IterableResultSetFactory iterableResultSetFactory;
+
+	@Override
+	public W3CEndpointReference collect(final InterfaceDescriptor ifDescriptor) throws CollectorServiceException {
+		return dateRangeCollect(ifDescriptor, null, null);
+	}
+
+	@Override
+	public W3CEndpointReference dateRangeCollect(
+			final InterfaceDescriptor ifDescriptor, final String from, final String until)
+			throws CollectorServiceException {
+		final CollectorPlugin plugin = collectorPluginEnumerator.get(ifDescriptor.getProtocol());
+
+		if (!verifyParams(ifDescriptor.getParams().keySet(), Sets.newHashSet(plugin.listNameParameters()))) { throw new CollectorServiceException(
+				"Invalid parameters, valid: " + plugin.listNameParameters() + ", current: " + ifDescriptor.getParams().keySet()); }
+
+		final Iterable<String> iter = plugin.collect(ifDescriptor, from, until);
+
+		return iterableResultSetFactory.createIterableResultSet(iter);
+	}
+
+	@Override
+	public List<ProtocolDescriptor> listProtocols() {
+		final List<ProtocolDescriptor> list = Lists.newArrayList();
+		for (CollectorPlugin plugin : collectorPluginEnumerator.getAll()) {
+			list.add(plugin.getProtocolDescriptor());
+		}
+		return list;
+	}
+
+	@Override
+	public List<ProtocolParameterValue> listValidValuesForParam(final String protocol,
+			final String baseUrl,
+			final String param,
+			final Map<String, String> otherParams) throws CollectorServiceException {
+		final CollectorPlugin plugin = collectorPluginEnumerator.get(protocol);
+
+		for (ProtocolParameter pp : plugin.getProtocolDescriptor().getParams()) {
+			if (pp.getName().equals(param) && pp.isFunctionPopulated()) { return pp.getPopulateFunction().findValues(baseUrl, otherParams); }
+		}
+
+		return Lists.newArrayList();
+	}
+
+	private boolean verifyParams(final Set<String> curr, final Set<String> valid) {
+		return valid.containsAll(curr);
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/functions/ListOaiSetsFunction.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/functions/ListOaiSetsFunction.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/functions/ListOaiSetsFunction.java	(revision 48025)
@@ -0,0 +1,56 @@
+package eu.dnetlib.data.collector.functions;
+
+import java.io.StringReader;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.factory.annotation.Required;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+
+import eu.dnetlib.data.collector.plugins.oaisets.OaiSetsIteratorFactory;
+import eu.dnetlib.data.collector.rmi.ProtocolParameterValue;
+
+public class ListOaiSetsFunction implements ParamValuesFunction {
+
+	private OaiSetsIteratorFactory oaiSetsIteratorFactory;
+
+	@Override
+	public List<ProtocolParameterValue> findValues(final String baseUrl, final Map<String, String> params) {
+		final SAXReader reader = new SAXReader();
+
+		final Iterator<ProtocolParameterValue> iter = Iterators.transform(oaiSetsIteratorFactory.newIterator(baseUrl),
+				new Function<String, ProtocolParameterValue>() {
+
+					@Override
+					public ProtocolParameterValue apply(final String s) {
+						try {
+							final Document doc = reader.read(new StringReader(s));
+							final String id = doc.valueOf("//*[local-name()='setSpec']");
+							final String name = doc.valueOf("//*[local-name()='setName']");
+							return new ProtocolParameterValue(id,
+									(StringUtils.isBlank(name) || name.equalsIgnoreCase(id)) ? id : id + " - name: \"" + name + "\"");
+						} catch (final DocumentException e) {
+							throw new RuntimeException("Error in ListSets", e);
+						}
+					}
+				});
+		return Lists.newArrayList(iter);
+	}
+
+	public OaiSetsIteratorFactory getOaiSetsIteratorFactory() {
+		return oaiSetsIteratorFactory;
+	}
+
+	@Required
+	public void setOaiSetsIteratorFactory(final OaiSetsIteratorFactory oaiSetsIteratorFactory) {
+		this.oaiSetsIteratorFactory = oaiSetsIteratorFactory;
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/opendoar.xml.gz
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/opendoar.xml.gz
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/opendoar.xml.gz	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/opendoar.xml.gz	(revision 48025)

Property changes on: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/plugins/opendoar.xml.gz
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/filesystem/csv/input-quoted.tsv
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/filesystem/csv/input-quoted.tsv	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/filesystem/csv/input-quoted.tsv	(revision 48025)
@@ -0,0 +1,4 @@
+"Publication ID SNSF";"Project Number";"Peer Review Status";"Type of Publication";"Title of Publication";"Authors";"Status";"Publication Year";"ISBN";"DOI";"Import Source";"Last Change of Outputdata";"Open Access Status";"Open Access Type";"Open Access URL";"Book Title";"Publisher";"Editors";"Journal Title";"Volume";"Issue / Number";"Page from";"Page to";"Proceeding Title";"Proceeding Place";"Abstract"
+"{3F5669B1-C09F-4486-87FF-21A561C15B8A}";"20108";"Peer-reviewed";"Original article (peer-reviewed)";"MICROSTRUCTURE, LATTICE-PARAMETERS, AND SUPERCONDUCTIVITY OF {YBa$_2$(Cu$_{1-x}$Fe$_x$)$_3$O$_{7-\delta}$}}} FOR {0 $\leq$ x $\leq$ 0.33}";"Xu Y. W.,  Suenaga M.,  Tafto J.,  Sabatini R. L.,  Moodenbaugh A. R.,  Zolliker P.";"Published";"1989";"";"10.1103/PhysRevB.39.6667                                                                            ";"BibTex";"13.01.2014";"False";"";"";"";"";"";"Physical Review B";"39";"10";"6667";"6680";"";"";""
+"{12293018-B2F8-4320-A5C8-24C21A2AB7D3}";"20108";"Peer-reviewed";"Original article (peer-reviewed)";"NEUTRON-POWDER-DIFFRACTION STUDY OF NUCLEAR AND MAGNETIC-STRUCTURE IN {YBa$_2$Cu$_{3-x}$Co$_x$O$_{7+y}$}}} WITH X=0.84 AND Y=0.32";"Zolliker P.,  Cox D. E.,  Tranquada J. M.,  Shirane G.";"Published";"1988";"";"10.1103/PhysRevB.38.6575                                                                            ";"BibTex";"13.01.2014";"False";"";"";"";"";"";"Physical Review B";"38";"10";"6575";"6582";"";"";""
+"{C4B57BD5-668D-47A6-92DA-8CE1962D87DE}";"25095";"Peer-reviewed";"Original article (peer-reviewed)";"HEXAMAGNESIUM DICOBALT UNDECADEUTERIDE {Mg$_6$Co$_2$D$_{11}$}} - CONTAINING {CoD$_4^{5-}$}} AND {CoD$_5^{4-}$}} COMPLEX ANIONS CONFORMING TO THE 18-ELECTRON RULE";"Cerny R.,  Bonhomme F.,  Yvon K.,  Fischer P.,  Zolliker P.,  Cox D. E.,  Hewat A.";"Published";"1992";"";"10.1016/0925-8388(92)90537-j                                                                        ";"BibTex";"13.01.2014";"False";"";"";"";"";"";"Journal of Alloys and Compounds";"187";"1";"233";"241";"";"";""
\ No newline at end of file
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/plugins/applicationContext-dnet-modular-collector-plugins.properties
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/plugins/applicationContext-dnet-modular-collector-plugins.properties	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/plugins/applicationContext-dnet-modular-collector-plugins.properties	(revision 48025)
@@ -0,0 +1,5 @@
+collector.oai.http.defaultDelay     = 120
+collector.oai.http.readTimeOut      = 120
+collector.oai.http.maxNumberOfRetry = 6
+services.objectstore.basePathList.xquery = collection('/db/DRIVER/ServiceResources/ObjectStoreServiceResourceType')//PROPERTY[@key='basePath']/@value/string()
+
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/deploy.info
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/deploy.info	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/deploy.info	(revision 48025)
@@ -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-modular-collector-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-modular-collector-service"}
\ No newline at end of file
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/applicationContext-dnet-modular-collector-utils.xml
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/applicationContext-dnet-modular-collector-utils.xml	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/applicationContext-dnet-modular-collector-utils.xml	(revision 48025)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	   xmlns:p="http://www.springframework.org/schema/p"
+	   xmlns:http="http://cxf.apache.org/transports/http/configuration"
+	   xmlns="http://www.springframework.org/schema/beans"
+	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+
+
+                                    http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd">
+
+	<bean id="oaiHttpConnector" class="eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector"
+		init-method="initTrustManager"
+		p:defaultDelay="${collector.oai.http.defaultDelay}"
+		p:readTimeOut="${collector.oai.http.readTimeOut}"
+		p:maxNumberOfRetry="${collector.oai.http.maxNumberOfRetry}" />
+
+	<bean id="oaiIteratorFactory" class="eu.dnetlib.data.collector.plugins.oai.OaiIteratorFactory"
+		p:httpConnector-ref="oaiHttpConnector" />
+		
+	<bean id="oaiSetsIteratorFactory" class="eu.dnetlib.data.collector.plugins.oaisets.OaiSetsIteratorFactory"
+		p:httpConnector-ref="oaiHttpConnector" />
+
+	<bean id="ftpIteratorFactory" class="eu.dnetlib.data.collector.plugins.ftp.FtpIteratorFactory"/>
+
+	<bean id="sftpIteratorFactory" class="eu.dnetlib.data.collector.plugins.sftp.SftpIteratorFactory"/>
+	
+	<!-- Functions -->
+	<bean id="listOaiSetsFunction" class="eu.dnetlib.data.collector.functions.ListOaiSetsFunction"
+		p:oaiSetsIteratorFactory-ref="oaiSetsIteratorFactory" />
+	
+</beans>
\ No newline at end of file
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/filesystem/csv/input.tsv
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/filesystem/csv/input.tsv	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/eu/dnetlib/data/collector/filesystem/csv/input.tsv	(revision 48025)
@@ -0,0 +1,20 @@
+OA	PT	AU	BA	BE	GP	AF	BF	CA	TI	SO	SE	LA	DT	CT	CY	CL	SP	HO	DE	ID	AB	C1	RP	EM	RI	FU	FX	CR	NR	TC	Z9	PU	PI	PA	SN	BN	J9	JI	PD	PY	VL	IS	PN	SU	SI	MA	BP	EP	AR	DI	D2	PG	WC	SC	GA	UT
+true	J	Punta, M; Coggill, PC; Eberhardt, RY; Mistry, J; Tate, J; Boursnell, C; Pang, N; Forslund, K; Ceric, G; Clements, J; Heger, A; Holm, L; Sonnhammer, ELL; Eddy, SR; Bateman, A; Finn, RD				Punta, Marco; Coggill, Penny C.; Eberhardt, Ruth Y.; Mistry, Jaina; Tate, John; Boursnell, Chris; Pang, Ningze; Forslund, Kristoffer; Ceric, Goran; Clements, Jody; Heger, Andreas; Holm, Liisa; Sonnhammer, Erik L. L.; Eddy, Sean R.; Bateman, Alex; Finn, Robert D.			The Pfam protein families database	NUCLEIC ACIDS RESEARCH		English	Article							CRYSTAL-STRUCTURE; DOMAIN; IDENTIFICATION; ANNOTATION; HOMOLOGY; CAPSULE; REVEALS; SEARCH	Pfam is a widely used database of protein families, currently containing more than 13 000 manually curated protein families as of release 26.0. Pfam is available via servers in the UK (http://pfam.sanger.ac.uk/), the USA (http://pfam.janelia.org/) and Sweden (http://pfam.sbc.su.se/). Here, we report on changes that have occurred since our 2010 NAR paper (release 24.0). Over the last 2 years, we have generated 1840 new families and increased coverage of the UniProt Knowledgebase (UniProtKB) to nearly 80%. Notably, we have taken the step of opening up the annotation of our families to the Wikipedia community, by linking Pfam families to relevant Wikipedia pages and encouraging the Pfam and Wikipedia communities to improve and expand those pages. We continue to improve the Pfam website and add new visualizations, such as the 'sunburst' representation of taxonomic distribution of families. In this work we additionally address two topics that will be of particular interest to the Pfam community. First, we explain the definition and use of family-specific, manually curated gathering thresholds. Second, we discuss some of the features of domains of unknown function (also known as DUFs), which constitute a rapidly growing class of families within Pfam.	[Punta, Marco; Coggill, Penny C.; Eberhardt, Ruth Y.; Mistry, Jaina; Tate, John; Boursnell, Chris; Pang, Ningze; Bateman, Alex] Wellcome Trust Sanger Inst, Hinxton CB10 1SA, England; [Forslund, Kristoffer; Sonnhammer, Erik L. L.] Stockholm Univ, Dept Biochem & Biophys, Sci Life Lab, Swedish eSci Res Ctr,Stockholm Bioinformat Ctr, SE-17121 Solna, Sweden; [Ceric, Goran; Clements, Jody; Eddy, Sean R.; Finn, Robert D.] HHMI Janelia Farm Res Campus, Ashburn, VA 20147 USA; [Heger, Andreas] Univ Oxford, MRC Funct Genom Unit, Dept Physiol Anat & Genet, Oxford OX1 3QX, England; [Holm, Liisa] Univ Helsinki, Inst Biotechnol, Helsinki 00014, Finland; [Holm, Liisa] Univ Helsinki, Dept Biol & Environm Sci, FIN-00014 Helsinki, Finland	Punta, M (reprint author), Wellcome Trust Sanger Inst, Wellcome Trust Genome Campus, Hinxton CB10 1SA, England.	mp13@sanger.ac.uk		Wellcome Trust [WT077044/Z/05/Z]; BBSRC [BB/F010435/1]; Howard Hughes Medical Institute; Stockholm University; Royal Institute of Technology; Swedish Natural Sciences Research Council	Wellcome Trust (grant numbers WT077044/Z/05/Z); BBSRC Bioinformatics and Biological Resources Fund (grant numbers BB/F010435/1); Howard Hughes Medical Institute (to G. C., J.C., S. R. E and R. D. F.); Stockholm University, Royal Institute of Technology and the Swedish Natural Sciences Research Council (to K. F. and E. L. L. S.) and Systems, Web and Database administration teams at Wellcome Trust Sanger Institute (WTSI) (infrastructure support). Funding for open access charge: Wellcome Trust (grant numbers WT077044/Z/05/Z); BBSRC Bioinformatics and Biological Resources Fund (grant numbers BB/F010435/1).		29	92	94	OXFORD UNIV PRESS	OXFORD	GREAT CLARENDON ST, OXFORD OX2 6DP, ENGLAND	0305-1048		NUCLEIC ACIDS RES	Nucleic Acids Res.	JAN	2012	40	D1					D290	D301		10.1093/nar/gkr1065		12	Biochemistry & Molecular Biology	Biochemistry & Molecular Biology	869MD	WOS:000298601300043
+false	J	Wong, E; Vaaje-Kolstad, G; Ghosh, A; Hurtado-Guerrero, R; Konarev, PV; Ibrahim, AFM; Svergun, DI; Eijsink, VGH; Chatterjee, NS; van Aalten, DMF				Wong, Edmond; Vaaje-Kolstad, Gustav; Ghosh, Avishek; Hurtado-Guerrero, Ramon; Konarev, Peter V.; Ibrahim, Adel F. M.; Svergun, Dmitri I.; Eijsink, Vincent G. H.; Chatterjee, Nabendu S.; van Aalten, Daan M. F.			The Vibrio cholerae Colonization Factor GbpA Possesses a Modular Structure that Governs Binding to Different Host Surfaces	PLOS PATHOGENS		English	Article							SMALL-ANGLE SCATTERING; SERRATIA-MARCESCENS; ESCHERICHIA-COLI; CRYSTAL-STRUCTURE; EPITHELIAL-CELLS; PROTEIN CBP21; ADHESIN FIMH; CHITIN; POLYSACCHARIDE; TOXIN	Vibrio cholerae is a bacterial pathogen that colonizes the chitinous exoskeleton of zooplankton as well as the human gastrointestinal tract. Colonization of these different niches involves an N-acetylglucosamine binding protein (GbpA) that has been reported to mediate bacterial attachment to both marine chitin and mammalian intestinal mucin through an unknown molecular mechanism. We report structural studies that reveal that GbpA possesses an unusual, elongated, four-domain structure, with domains 1 and 4 showing structural homology to chitin binding domains. A glycan screen revealed that GbpA binds to GlcNAc oligosaccharides. Structure-guided GbpA truncation mutants show that domains 1 and 4 of GbpA interact with chitin in vitro, whereas in vivo complementation studies reveal that domain 1 is also crucial for mucin binding and intestinal colonization. Bacterial binding studies show that domains 2 and 3 bind to the V. cholerae surface. Finally, mouse virulence assays show that only the first three domains of GbpA are required for colonization. These results explain how GbpA provides structural/functional modular interactions between V. cholerae, intestinal epithelium and chitinous exoskeletons.	[Wong, Edmond; Hurtado-Guerrero, Ramon; Ibrahim, Adel F. M.; van Aalten, Daan M. F.] Univ Dundee, Coll Life Sci, Div Mol Microbiol, Dundee, Scotland; [Vaaje-Kolstad, Gustav; Eijsink, Vincent G. H.] Norwegian Univ Life Sci, Dept Chem Biotechnol & Food Sci, As, Norway; [Ghosh, Avishek; Chatterjee, Nabendu S.] Scheme XM, Natl Inst Cholera & Enter Dis, Div Biochem, Calcutta, India; [Konarev, Peter V.; Svergun, Dmitri I.] DESY, European Mol Biol Lab, Outstn Hamburg, D-2000 Hamburg, Germany	Wong, E (reprint author), Natl Inst Med Res, Div Mol Struct, Mill Hill, London NW7 1AA, England.	dmfvanaalten@dundee.ac.uk	Ibrahim, Adel/E-5273-2012	Wellcome Trust [WT087590MA]; MRC [G0900138]	This work was funded by a Wellcome Trust Senior Research Fellowship to DvA (WT087590MA) and an MRC Programme Grant (G0900138) to DvA. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.		52	4	4	PUBLIC LIBRARY SCIENCE	SAN FRANCISCO	1160 BATTERY STREET, STE 100, SAN FRANCISCO, CA 94111 USA	1553-7374		PLOS PATHOG	PLoS Pathog.	JAN	2012	8	1							e1002373	10.1371/journal.ppat.1002373		12	Microbiology; Parasitology; Virology	Microbiology; Parasitology; Virology	898UI	WOS:000300767100003
+true	J	Curjuric, I; Imboden, M; Nadif, R; Kumar, A; Schindler, C; Haun, M; Kronenberg, F; Kunzli, N; Phuleria, H; Postma, DS; Russi, EW; Rochat, T; Demenais, F; Probst-Hensch, NM				Curjuric, Ivan; Imboden, Medea; Nadif, Rachel; Kumar, Ashish; Schindler, Christian; Haun, Margot; Kronenberg, Florian; Kuenzli, Nino; Phuleria, Harish; Postma, Dirkje S.; Russi, Erich W.; Rochat, Thierry; Demenais, Florence; Probst-Hensch, Nicole M.			Different Genes Interact with Particulate Matter and Tobacco Smoke Exposure in Affecting Lung Function Decline in the General Population	PLOS ONE		English	Article							GENOME-WIDE ASSOCIATION; OBSTRUCTIVE PULMONARY-DISEASE; OXIDATIVE STRESS; CIGARETTE-SMOKE; AIR-POLLUTION; FOLLOW-UP; MITOCHONDRIAL LOCALIZATION; ENVIRONMENT INTERACTIONS; DUST EXPOSURE; SWISS COHORT	Background: Oxidative stress related genes modify the effects of ambient air pollution or tobacco smoking on lung function decline. The impact of interactions might be substantial, but previous studies mostly focused on main effects of single genes. Objectives: We studied the interaction of both exposures with a broad set of oxidative-stress related candidate genes and pathways on lung function decline and contrasted interactions between exposures. Methods: For 12679 single nucleotide polymorphisms (SNP5), change in forced expiratory volume in one second (FEV1), FEV1 over forced vital capacity (FEV1/FVC), and mean forced expiratory flow between 25 and 75% of the FVC (FEF25-75) was regressed on interval exposure to particulate matter < 10 mu m in diameter (PM10) or packyears smoked (a), additive SNP effects (b), and interaction terms between (a) and (b) in 669 adults with GWAS data. Interaction p-values for 152 genes and 14 pathways were calculated by the adaptive rank truncation product (ARTP) method, and compared between exposures. Interaction effect sizes were contrasted for the strongest SNPs of nominally significant genes (p(interaction) < 0.05). Replication was attempted for SNPs with MAF > 10% in 3320 SAPALDIA participants without GWAS. Results: On the SNP-level, rs2035268 in gene SNCA accelerated FEV1/FVC decline by 3.8% (p(interaction) = 2.5 x 10(-6)), and rs12190800 in PARK2 attenuated FEV1 decline by 95.1 ml p(interaction) = 9.7 x 10(-8)) over 11 years, while interacting with PM10. Genes and pathways nominally interacting with PM10 and packyears exposure differed substantially. Gene CRISP2 presented a significant interaction with PM10 (p(interaction) = 3.0 x 10(-4)) on FEV1/FVC decline. Pathway interactions were weak. Replications for the strongest SNPs in PARK2 and CRISP2 were not successful. Conclusions: Consistent with a stratified response to increasing oxidative stress, different genes and pathways potentially mediate PM10 and tobacco smoke effects on lung function decline. Ignoring environmental exposures would miss these patterns, but achieving sufficient sample size and comparability across study samples is challenging.	[Curjuric, Ivan; Imboden, Medea; Kumar, Ashish; Schindler, Christian; Kuenzli, Nino; Phuleria, Harish; Probst-Hensch, Nicole M.] Swiss Trop & Publ Hlth Inst SwissTPH, Dept Epidemiol & Publ Hlth, Basel, Switzerland; [Curjuric, Ivan; Imboden, Medea; Kumar, Ashish; Schindler, Christian; Kuenzli, Nino; Phuleria, Harish; Probst-Hensch, Nicole M.] Univ Basel, Basel, Switzerland; [Nadif, Rachel] CESP Ctr Res Epidemiol & Populat Hlth, INSERM, U1018, Resp & Environm Epidemiol Team, Villejuif, France; [Nadif, Rachel] Univ Paris 11, UMRS 1018, Villejuif, France; [Kumar, Ashish] Univ Oxford, Wellcome Trust Ctr Human Genet, Oxford, England; [Haun, Margot; Kronenberg, Florian] Innsbruck Med Univ, Dept Med Genet Mol & Clin Pharmacol, Div Genet Epidemiol, Innsbruck, Austria; [Postma, Dirkje S.] Univ Groningen, Univ Med Ctr Groningen, Dept Pulm Med & TB, Groningen, Netherlands; [Russi, Erich W.] Univ Zurich Hosp, Div Pulm Med, CH-8091 Zurich, Switzerland; [Rochat, Thierry] Univ Hosp Geneva, Div Pulm Med, Geneva, Switzerland; [Demenais, Florence] INSERM, U946, Genet Variat & Human Dis Unit, Paris, France; [Demenais, Florence] Fdn Jean Dausset, CEPH, Paris, France; [Demenais, Florence] Univ Paris Diderot, Inst Univ Hematol, Paris, France	Curjuric, I (reprint author), Swiss Trop & Publ Hlth Inst SwissTPH, Dept Epidemiol & Publ Hlth, Basel, Switzerland.	Nicole.Probst@unibas.ch	Kronenberg, Florian/B-1736-2008	Swiss National Science Foundation [33CS30_134276/1, 33CSCO-108796, 3247BO-104283, 3247BO-104288, 3247BO-104284, 3247-065896, 3100-059302, 3200-052720, 3200-042532, 4026-028099, 3233-054996, PDFMP3-123171]; Federal Office for Forest, Environment and Landscape; Federal Office of Public Health; Federal Office of Roads and Transport; canton government of Aargau; canton government of Basel-Stadt; canton government of Basel-Land; canton government of Geneva; canton government of Luzern; canton government of Ticino; canton government of Valais; canton government of Zurich; Swiss Lung League; canton Lung League of Basel Stadt; canton Lung League of Basel Landschaft; canton Lung League of Geneva; canton Lung League of Ticino; canton Lung League of Valais; canton Lung League of Zurich; Schweizerische Unfallversicherungsanstalt (SUVA); Freiwillige Akademische Gesellschaft; UBS Wealth Foundation; Talecris Biotherapeutics GmbH; Abbott Diagnostics; European Commission [018996]; Wellcome Trust [WT 084703MA]; French National Research Agency (Bio2nea project) [ANR-CES 2009]	The Swiss Study on Air Pollution and Lung and Heart Diseases in Adults (SAPALDIA) was supported by the Swiss National Science Foundation (grants no 33CS30_134276/1, 33CSCO-108796, 3247BO-104283, 3247BO-104288, 3247BO-104284, 3247-065896, 3100-059302, 3200-052720, 3200-042532, 4026-028099, 3233-054996, PDFMP3-123171), the Federal Office for Forest, Environment and Landscape, the Federal Office of Public Health, the Federal Office of Roads and Transport, the canton's government of Aargau, Basel-Stadt, Basel-Land, Geneva, Luzern, Ticino, Valais, Zurich, the Swiss Lung League, the canton's Lung League of Basel Stadt/Basel Landschaft, Geneva, Ticino, Valais and Zurich, Schweizerische Unfallversicherungsanstalt (SUVA), Freiwillige Akademische Gesellschaft, UBS Wealth Foundation, Talecris Biotherapeutics GmbH, and Abbott Diagnostics. Genotyping in the GABRIEL framework was supported by grants European Commission 018996 and Wellcome Trust WT 084703MA. Identification of pathways was supported by the French National Research Agency (Bio2nea project ANR-CES 2009). The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.I have read the journal's policy and have the following conflicts: The SAPALDIA study was supported by the UBS Wealth Foundation, Talecris Biotherapeutics GmbH, and Abbott Diagnostics in terms of unrestricted grants for personnel and genotyping. The support of these institutions did not influence the scientific work regarding study design, data collection, data analysis, interpretation of results, decision to publish, or preparation of the manuscript in any way. Also, this does not alter our adherence to all the PLoS ONE policies on sharing data and materials.		64	0	0	PUBLIC LIBRARY SCIENCE	SAN FRANCISCO	1160 BATTERY STREET, STE 100, SAN FRANCISCO, CA 94111 USA	1932-6203		PLOS ONE	PLoS One	JUL 6	2012	7	7							e40175	10.1371/journal.pone.0040175		11	Multidisciplinary Sciences	Science & Technology - Other Topics	974UB	WOS:000306461800046
+false	J	Knight, JC				Knight, Julian C.			Genomic modulators of the immune response	TRENDS IN GENETICS		English	Review						immunity; major histocompatibility complex; gene regulation; autoimmunity; immunodeficiency; leukocyte	GLOBAL GENE-EXPRESSION; WIDE ASSOCIATION; DISEASE SUSCEPTIBILITY; HLA-C; EPIGENETIC REGULATION; RHEUMATOID-ARTHRITIS; AUTOIMMUNE-DISEASES; DNA METHYLATION; COMPLEX DISEASE; INBORN-ERRORS	Our understanding of immunity has historically been informed by studying heritable mutations in both the adaptive and innate immune responses, including primary immunodeficiency and autoimmune diseases. Recent advances achieved through the application of genomic and epigenomic approaches are reshaping the study of immune dysfunction and opening up new avenues for therapeutic interventions. Moreover, applying genomic techniques to resolve functionally important genetic variation between individuals is providing new insights into immune function in health. This review describes progress in the study of rare variants and primary immunodeficiency diseases arising from whole-exome sequencing (WES), and discusses the application, success, and challenges of applying genome-wide association studies (GWAS) to disorders of immune function and how they may inform more rational use of therapeutics. In addition, the application of expression quantitative-trait mapping to immune phenotypes, progress in understanding MHC disease associations, and insights into epigenetic mechanisms at the interface of immunity and the environment are reviewed.	Univ Oxford, Wellcome Trust Ctr Human Genet, Oxford OX3 7BN, England	Knight, JC (reprint author), Univ Oxford, Wellcome Trust Ctr Human Genet, Roosevelt Dr, Oxford OX3 7BN, England.	julian@well.ox.ac.uk		Wellcome Trust [074318, 075491/Z/04]; European Research Council (ERC) under European Commission [281824]; Medical Research Council [98082]; National Institute for Health Research (NIHR) Oxford Biomedical Research Centre	Work in the laboratory of J.K. has been supported by the Wellcome Trust (074318 and 075491/Z/04 to core facilities Wellcome Trust Centre for Human Genetics), the European Research Council (ERC) under European Commission 7th Framework Programme (FP7/2007-2013)/ERC grant agreement No. 281824, the Medical Research Council (98082), and the National Institute for Health Research (NIHR) Oxford Biomedical Research Centre.		85	0	0	ELSEVIER SCIENCE LONDON	LONDON	84 THEOBALDS RD, LONDON WC1X 8RR, ENGLAND	0168-9525		TRENDS GENET	Trends Genet.	FEB	2013	29	2					74	83		10.1016/j.tig.2012.10.006		10	Genetics & Heredity	Genetics & Heredity	087EP	WOS:000314744400005
+false	J	Seden, K; Khoo, S; Back, D; Prevatt, N; Lamorde, M; Byakika-Kibwika, P; Mayito, J; Ryan, M; Merry, C				Seden, Kay; Khoo, Saye; Back, David; Prevatt, Natalie; Lamorde, Mohammed; Byakika-Kibwika, Pauline; Mayito, Jonathan; Ryan, Mairin; Merry, Concepta			Drug-drug interactions between antiretrovirals and drugs used in the management of neglected tropical diseases: important considerations in the WHO 2020 Roadmap and London Declaration on Neglected Tropical Diseases	AIDS		English	Review						drug interactions; HIV/AIDS; neglected tropical diseases; pharmacokinetics	INTRAVENOUS-SODIUM STIBOGLUCONATE; MEGLUMINE ANTIMONIATE; DENGUE VIRUS; PHARMACOKINETIC INTERACTION; CLINICAL PHARMACOKINETICS; VISCERAL LEISHMANIASIS; HEALTHY-VOLUNTEERS; IN-VITRO; LIVER; BENZNIDAZOLE	The group of infections known as the neglected tropical diseases (NTDs) collectively affect one billion people worldwide, equivalent to one-sixth of the world's population. The NTDs cause severe physical and emotional morbidity, and have a profound effect on cycles of poverty; it is estimated that NTDs account for 534 000 deaths per year. NTDs such as soil-transmitted helminth infections and the vector-borne protozoal infections leishmaniasis and trypanosomiasis occur predominantly in the most economically disadvantaged and marginalized communities. It is estimated that all low-income countries harbour at least five of the NTDs simultaneously. NTDs are neglected because they do not individually rank highly in terms of mortality data, and because they affect populations with little political voice. There is considerable geographic overlap between areas with high prevalence of NTDs and HIV, raising the possibility of complex polypharmacy and drug-drug interactions. Antiretrovirals pose a particularly high risk for potential drug-drug interactions, which may be pharmacokinetic or pharmacodynamic in nature and can result in raising or lowering plasma or tissue concentrations of co-prescribed drugs. Elevated drug concentrations may be associated with drug toxicity and lower drug concentrations may be associated with therapeutic failure. The aim of this paper is to review the currently available data on interactions between antiretrovirals and drugs used in the management of NTDs. It is intended to serve as a resource for policy makers and clinicians caring for these patients, and to support the recent WHO 2020 Roadmap and the 2012 London Declaration on NTDs. (C) 2013 Wolters Kluwer Health vertical bar Lippincott Williams & Wilkins AIDS 2013, 27:675-686	[Seden, Kay; Khoo, Saye; Back, David] Univ Liverpool, Inst Translat Med, Dept Mol & Clin Pharmacol, Liverpool L69 3GF, Merseyside, England; [Prevatt, Natalie] London Deanery, London, England; [Lamorde, Mohammed; Byakika-Kibwika, Pauline; Mayito, Jonathan; Merry, Concepta] Makerere Univ, Coll Hlth Sci, Infect Dis Inst, Kampala, Uganda; [Lamorde, Mohammed; Byakika-Kibwika, Pauline; Ryan, Mairin; Merry, Concepta] Trinity Coll Dublin, Dept Pharmacol & Therapeut, Dublin, Ireland; [Merry, Concepta] Northwestern Univ, Feinberg Sch Med, Ctr Global Hlth, Chicago, IL 60611 USA	Seden, K (reprint author), Univ Liverpool, Dept Pharmacol, Block H,1st Floor,70 Pembroke Pl, Liverpool L69 3GF, Merseyside, England.	k.seden@liv.ac.uk		Wellcome Trust [083851/Z/07/Z]; European and Developing Countries Clinical Trials Partnership grants [TA.09.40200.020, TA.11.40200.047]; Viiv; BMS; Gilead; Janssen; Merck; Boehringer-Ingelheim; Sewankambo scholarship at IDI; Gilead Foundation	We acknowledge support from a Wellcome Trust Programme Grant award: PK-PD modelling to optimize treatment for HIV, TB and malaria. (ref 083851/Z/07/Z).M.L. and P.B. are supported by European and Developing Countries Clinical Trials Partnership grants (TA.09.40200.020 and TA.11.40200.047).Transparency Declaration: D.J.B. and S.H.K. have received research funding for development of the web site www.hiv-druginteractions.org from Viiv, BMS, Gilead, Janssen, Merck, Boehringer-Ingelheim. DJB has received honoria for lectures or Advisory Boards from Viiv, BMS, Gilead, Janssen, Merck.M.L. has received grants from Janssen and is supported by the Sewankambo scholarship at IDI which is funded by Gilead Foundation.		56	0	0	LIPPINCOTT WILLIAMS & WILKINS	PHILADELPHIA	530 WALNUT ST, PHILADELPHIA, PA 19106-3621 USA	0269-9370		AIDS	Aids	MAR 13	2013	27	5					675	686		10.1097/QAD.0b013e32835ca9b4		12	Immunology; Infectious Diseases; Virology	Immunology; Infectious Diseases; Virology	098CY	WOS:000315524700001
+true	J	Mero, IL; Gustavsen, MW; Saether, HS; Flam, ST; Berg-Hansen, P; Sondergaard, HB; Jensen, PEH; Berge, T; Bjolgerud, A; Muggerud, A; Aarseth, JH; Myhr, KM; Celius, EG; Sellebjerg, F; Hillert, J; Alfredsson, L; Olsson, T; Oturai, AB; Kockum, I; Lie, BA; Andreassen, BK; Harbo, HF				Mero, Inger-Lise; Gustavsen, Marte W.; Saether, Hanne S.; Flam, Siri T.; Berg-Hansen, Pal; Sondergaard, Helle B.; Jensen, Poul Erik H.; Berge, Tone; Bjolgerud, Anja; Muggerud, Aslaug; Aarseth, Jan H.; Myhr, Kjell-Morten; Celius, Elisabeth G.; Sellebjerg, Finn; Hillert, Jan; Alfredsson, Lars; Olsson, Tomas; Oturai, Annette Bang; Kockum, Ingrid; Lie, Benedicte A.; Andreassen, Bettina Kulle; Harbo, Hanne F.		Int Multiple Sclerosis Genetics	Oligoclonal Band Status in Scandinavian Multiple Sclerosis Patients Is Associated with Specific Genetic Risk Alleles	PLOS ONE		English	Article							CEREBROSPINAL-FLUID; DIAGNOSTIC-CRITERIA; CLINICAL-FEATURES; INTERFERON-BETA; SUSCEPTIBILITY; POPULATION; HLA-DRB1; GENOMEWIDE; DISABILITY; GUIDELINES	The presence of oligoclonal bands (OCB) in cerebrospinal fluid (CSF) is a typical finding in multiple sclerosis (MS). We applied data from Norwegian, Swedish and Danish (i.e. Scandinavian) MS patients from a genome-wide association study (GWAS) to search for genetic differences in MS relating to OCB status. GWAS data was compared in 1367 OCB positive and 161 OCB negative Scandinavian MS patients, and nine of the most associated SNPs were genotyped for replication in 3403 Scandinavian MS patients. HLA-DRB1 genotypes were analyzed in a subset of the OCB positive (n = 2781) and OCB negative (n = 292) MS patients and compared to 890 healthy controls. Results from the genome-wide analyses showed that single nucleotide polymorphisms (SNPs) from the HLA complex and six other loci were associated to OCB status. In SNPs selected for replication, combined analyses showed genome-wide significant association for two SNPs in the HLA complex; rs3129871 (p = 5.7x10(-15)) and rs3817963 (p = 5.7x10(-10)) correlating with the HLA-DRB1*15 and the HLA-DRB1*04 alleles, respectively. We also found suggestive association to one SNP in the Calsyntenin-2 gene (p = 8.83x10(-7)). In HLA-DRB1 analyses HLA-DRB1*15:01 was a stronger risk factor for OCB positive than OCB negative MS, whereas HLA-DRB1*04:04 was associated with increased risk of OCB negative MS and reduced risk of OCB positive MS. Protective effects of HLA-DRB1*01:01 and HLA-DRB1*07:01 were detected in both groups. The groups were different with regard to age at onset (AAO), MS outcome measures and gender. This study confirms both shared and distinct genetic risk for MS subtypes in the Scandinavian population defined by OCB status and indicates different clinical characteristics between the groups. This suggests differences in disease mechanisms between OCB negative and OCB positive MS with implications for patient management, which need to be further studied.	[Mero, Inger-Lise; Gustavsen, Marte W.; Saether, Hanne S.; Berg-Hansen, Pal; Berge, Tone; Bjolgerud, Anja; Muggerud, Aslaug; Celius, Elisabeth G.; Harbo, Hanne F.] Oslo Univ Hosp, Dept Neurol, Oslo, Norway; [Mero, Inger-Lise; Saether, Hanne S.; Flam, Siri T.; Lie, Benedicte A.] Univ Oslo, Dept Med Genet, Oslo, Norway; [Mero, Inger-Lise; Saether, Hanne S.; Flam, Siri T.; Lie, Benedicte A.] Oslo Univ Hosp, Oslo, Norway; [Sondergaard, Helle B.; Jensen, Poul Erik H.; Sellebjerg, Finn; Oturai, Annette Bang] Rigshosp, Dept Neurol, Danish Multiple Sclerosis Ctr, DK-2100 Copenhagen, Denmark; [Berge, Tone] Univ Oslo, Inst Basic Med Sci, Oslo, Norway; [Aarseth, Jan H.; Myhr, Kjell-Morten] Norwegian Multiple Sclerosis Registry, Bergen, Norway; [Aarseth, Jan H.; Myhr, Kjell-Morten] Haukeland Hosp, Dept Neurol, Biobank, N-5021 Bergen, Norway; [Myhr, Kjell-Morten] Univ Bergen, Dept Clin Med, KG Jebsen Ctr MS Res, Bergen, Norway; [Hillert, Jan] Karolinska Inst, Dept Clin Neurosci, Multiple Sclerosis Res Grp, Ctr Mol Med, Stockholm, Sweden; [Alfredsson, Lars] Karolinska Inst, Inst Environm Med, S-10401 Stockholm, Sweden; [Olsson, Tomas; Kockum, Ingrid] Karolinska Inst, Dept Clin Neurosci, Neuroimmunol Res Grp, Stockholm, Sweden; [Andreassen, Bettina Kulle] Univ Oslo, Inst Clin Med, Dept Clin Mol Biol & Lab Sci EpiGen, Oslo, Norway; [Andreassen, Bettina Kulle] Univ Oslo, Inst Basic Med Sci, Dept Biostat, Oslo, Norway; [Gustavsen, Marte W.; Berg-Hansen, Pal; Bjolgerud, Anja; Muggerud, Aslaug; Harbo, Hanne F.] Univ Oslo, Inst Clin Med, Oslo, Norway	Harbo, HF (reprint author), Oslo Univ Hosp, Dept Neurol, Oslo, Norway.	h.f.harbo@medisin.uio.no		South-Eastern Norway Regional Health Authority; Research Council of Norway; Odd Fellow MS society; Danish Multiple Sclerosis Society; Swedish Medical Research Council; AFA foundation; Knut and Alice and Wallenbergs foundations; Council for Working Life and Social Research; Wellcome Trust, as part of the Wellcome Trust Case Control Consortium2 project [085475/B/08/Z, 085475/Z/08/Z]	The current study is funded by grants from the South-Eastern Norway Regional Health Authority, the Research Council of Norway, the Odd Fellow MS society, the Danish Multiple Sclerosis Society, the Swedish Medical Research Council, the AFA foundation, Knut and Alice and Wallenbergs foundations and Council for Working Life and Social Research. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.We thank all patients and healthy controls for their participation. The International Multiple Sclerosis Genetics Consortium and the Wellcome Trust Case Control Consortium2 provided the genotypes used in the screening phase of this study. We acknowledge the collaboration and principal funding for the genome-wide study provided by the Wellcome Trust, as part of the Wellcome Trust Case Control Consortium2 project (085475/B/08/Z and 085475/Z/08/Z). We thank all contributors to the collection of samples and clinical data in the Norwegian MS Registry and Biobank. The Norwegian Bone Marrow Donor Registry, Rikshospitalet, Oslo University Hospital are acknowledged for providing Norwegian controls. The Centre for Integrative Genetics; CIGENE, Norwegian University of Life Sciences (UMB) Aas is thanked for performing Sequenom analyses.		42	0	0	PUBLIC LIBRARY SCIENCE	SAN FRANCISCO	1160 BATTERY STREET, STE 100, SAN FRANCISCO, CA 94111 USA	1932-6203		PLOS ONE	PLoS One	MAR 5	2013	8	3							e58352	10.1371/journal.pone.0058352		9	Multidisciplinary Sciences	Science & Technology - Other Topics	099RC	WOS:000315637900131
+false	J	Perugorria, MJ; Murphy, LB; Fullard, N; Chakraborty, JB; Vyrla, D; Wilson, CL; Oakley, F; Mann, J; Mann, DA				Perugorria, Maria J.; Murphy, Lindsay B.; Fullard, Nicola; Chakraborty, Jayashree B.; Vyrla, Dimitra; Wilson, Caroline L.; Oakley, Fiona; Mann, Jelena; Mann, Derek A.			Tumor progression locus 2/Cot is required for activation of extracellular regulated kinase in liver injury and toll-like receptorinduced TIMP-1 gene transcription in hepatic stellate cells in mice	HEPATOLOGY		English	Article							LPS-STIMULATED MACROPHAGES; FACTOR-KAPPA-B; TISSUE INHIBITOR; SIGNAL-TRANSDUCTION; MAP KINASE; TNF-ALPHA; FIBROSIS; EXPRESSION; RESPONSES; CIRRHOSIS	Toll-like receptors (TLRs) function as key regulators of liver fibrosis and are able to modulate the fibrogenic actions of nonparenchymal liver cells. The fibrogenic signaling events downstream of TLRs on Kupffer cells (KCs) and hepatic stellate cells (HSCs) are poorly defined. Here, we describe the MAP3K tumor progression locus 2 (Tpl2) as being important for the activation of extracellular regulated kinase (ERK) signaling in KCs and HSCs responding to stimulation of TLR4 and TLR9. KCs lacking Tpl2 display defects with TLR induction of cytokines interleukin (IL)-1, IL-10, and IL-23. tpl2/ HSCs were unable to increase expression of fibrogenic genes IL-1 and tissue inhibitor of metalloproteinase 1 (TIMP-1), with the latter being the result of defective stimulation of TIMP-1 promoter activity by TLRs. To determine the in vivo relevance of Tpl2 signaling in liver fibrosis, we compared the fibrogenic responses of wild-type (WT) and tpl2/ mice in three distinct models of chronic liver injury. In the carbon tetrachloride and methionine-cholinedeficient diet models, we observed a significant reduction in fibrosis in mice lacking Tpl2, compared to WT controls. However, in the bile duct ligation model, there was no effect of tpl2 deletion, which may reflect a lesser role for HSCs in wounding response to biliary injury. Conclusion: We conclude that Tpl2 is an important signal transducer for TLR activation of gene expression in KCs and HSCs by the ERK pathway and that suppression of its catalytic activity may be a route toward suppressing fibrosis caused by hepatocellular injuries. (HEPATOLOGY 2013)	[Perugorria, Maria J.; Murphy, Lindsay B.; Fullard, Nicola; Chakraborty, Jayashree B.; Wilson, Caroline L.; Oakley, Fiona; Mann, Jelena; Mann, Derek A.] Newcastle Univ, Inst Cellular Med, Fac Med Sci, Newcastle Upon Tyne NE2 4HH, Tyne & Wear, England; [Vyrla, Dimitra] Univ Crete, Sch Med, Iraklion, Crete, Greece	Mann, DA (reprint author), Newcastle Univ, Inst Cellular Med, Fac Med Sci, 4th Floor,William Leech Bldg,Framlington Pl, Newcastle Upon Tyne NE2 4HH, Tyne & Wear, England.	derek.mann@ncl.ac.uk		Wellcome Trust [WT086755MA]; European Commission [223151]	"The present study was supported by the Wellcome Trust (grant no.: WT086755MA) and a European Commission FP7 program grant ""INFLA-CARE"" (EC contract no.: 223151; http://inflacare.imbb.forth.gr/) (both to D.A.M.). The authors thank Dr. Steven C Ley (MRC National Institute for Medical Research, London, UK) for the generous gift of Tpl2<SUP>-/-</SUP> mice."		40	0	0	WILEY-BLACKWELL	HOBOKEN	111 RIVER ST, HOBOKEN 07030-5774, NJ USA	0270-9139		HEPATOLOGY	Hepatology	MAR	2013	57	3					1238	1249		10.1002/hep.26108		12	Gastroenterology & Hepatology	Gastroenterology & Hepatology	099TG	WOS:000315644200043
+false	J	Lopes, MC; Hysi, PG; Verhoeven, VJM; Macgregor, S; Hewitt, AW; Montgomery, GW; Cumberland, P; Vingerling, JR; Young, TL; van Duijn, CM; Oostra, B; Uitterlinden, AG; Rahi, JS; Mackey, DA; Klaver, CCW; Andrew, T; Hammond, CJ				Lopes, Margarida C.; Hysi, Pirro G.; Verhoeven, Virginie J. M.; Macgregor, Stuart; Hewitt, Alex W.; Montgomery, Grant W.; Cumberland, Phillippa; Vingerling, Johannes R.; Young, Terri L.; van Duijn, Cornelia M.; Oostra, Ben; Uitterlinden, Andre G.; Rahi, Jugnoo S.; Mackey, David A.; Klaver, Caroline C. W.; Andrew, Toby; Hammond, Christopher J.			Identification of a Candidate Gene for Astigmatism	INVESTIGATIVE OPHTHALMOLOGY & VISUAL SCIENCE		English	Article							GENOME-WIDE ASSOCIATION; REFRACTIVE ERROR; EYE DEVELOPMENT; SUSCEPTIBILITY LOCUS; CORNEAL ASTIGMATISM; SCHOOL-CHILDREN; SONIC HEDGEHOG; HUMAN-DISEASES; IMPUTED DATA; MYOPIA	PURPOSE. Astigmatism is a common refractive error that reduces vision, where the curvature and refractive power of the cornea in one meridian are less than those of the perpendicular axis. It is a complex trait likely to be influenced by both genetic and environmental factors. Twin studies of astigmatism have found approximately 60% of phenotypic variance is explained by genetic factors. This study aimed to identify susceptibility loci for astigmatism. METHODS. We performed a meta-analysis of seven genome-wide association studies that included 22,100 individuals of European descent, where astigmatism was defined as the number of diopters of cylinder prescription, using fixed effect inverse variance-weighted methods. RESULTS. A susceptibility locus was identified with lead single nucleotide polymorphism rs3771395 on chromosome 2p13.3 (meta-analysis, P = 1.97 x 10(-7)) in the VAX2 gene. VAX2 plays an important role in the development of the dorsoventral axis of the eye. Animal studies have shown a gradient in astigmatism along the vertical plane, with corresponding changes in refraction, particularly in the ventral field. CONCLUSIONS. This finding advances the understanding of refractive error, and provides new potential pathways to be evaluated with regard to the development of astigmatism. (Invest Ophthalmol Vis Sci. 2013;54:1260-1267) DOI:10.1167/iovs.12-10463	[Lopes, Margarida C.; Hysi, Pirro G.; Andrew, Toby; Hammond, Christopher J.] Kings Coll London, Dept Twin Res & Genet Epidemiol, St Thomas Hosp, London WC2R 2LS, England; [Verhoeven, Virginie J. M.; Vingerling, Johannes R.; Klaver, Caroline C. W.] Erasmus MC, Dept Ophthalmol, Rotterdam, Netherlands; [Verhoeven, Virginie J. M.; Vingerling, Johannes R.; van Duijn, Cornelia M.; Oostra, Ben; Uitterlinden, Andre G.; Klaver, Caroline C. W.] Erasmus MC, Dept Epidemiol, Rotterdam, Netherlands; [Macgregor, Stuart; Montgomery, Grant W.] Queensland Inst Med Res, Brisbane, Qld 4006, Australia; [Hewitt, Alex W.] Univ Melbourne, Ctr Eye Res Australia, Royal Victorian Eye & Ear Hosp, Melbourne, Vic, Australia; [Cumberland, Phillippa] UCL, Ulverscroft Vis Res Grp, London, England; [Cumberland, Phillippa; Rahi, Jugnoo S.] UCL, MRC, Ctr Epidemiol Child Hlth, Inst Child Hlth, London, England; [Rahi, Jugnoo S.] UCL, Inst Ophthalmol, London, England; [Young, Terri L.] Duke Univ, Ctr Human Genet, Durham, NC USA; [Mackey, David A.] Univ Western Australia, Lions Eye Inst, Ctr Ophthalmol & Visual Sci, Perth, WA 6009, Australia	Hammond, CJ (reprint author), Kings Coll London, St Thomas Hosp Campus,3rd Floor South Wing Block, London SE1 7EH, England.	chris.hammond@kcl.ac.uk		European Union MyEuropia Marie Curie Research Training Network [MRTN-CT-2006-034021]; Guide Dogs for the Blind Association; EU FP7 [HEALTH-F2-2008-201865-GEFOS]; European Network of Genetic and Genomic Epidemiology [HEALTH-F4-2007-201413]; FP-5 GenomEUtwin Project [QLG2-CT-2002-01254]; US National Institutes of Health/National Eye Institute Grant [1RO1EY018246]; NIH Center for Inherited Disease Research; National Institute for Health Research comprehensive Biomedical Research Centre; St. Thomas' National Health Service Foundation Trust; King's College London; Netherlands Organisation of Scientific Research; Erasmus Medical Center; Netherlands Organization for Health Research and Development; UitZicht; Research Institute for Diseases in the Elderly; European Commission Directorate General XII; Municipality of Rotterdam; Netherlands Genomics Initiative; Lijf en Leven; MD Fonds; Henkes; Oogfonds; Stichting Wetenschappelijk Onderzoek Het Oogziekenhuis; Swart van Essen; Blindenhulp; Landelijke Stichting voor Blinden en Slechtzienden; Rotterdamse Vereniging voor Blindenbelangen; OOG Foundation; Algemene Nederlandse Vereniging ter Voorkoming van Blindheid; Rotterdam Eye Institute; Australian National Health and Medical Research Council; Clifford Craig Medical Research Trust; Ophthalmic Research Institute of Australia; American Health Assistance Foundation; Peggy and Leslie Cranbourne Foundation; Foundation for Children; NHMRC project Grant [350415]; Jack Brockhoff Foundation; NEI project Grant [RO1 EY 018246-01]; NHMRC Medical Genomics grant; NEI/NIH project grant; Netherlands Scientific Organization [NWO 480-05-003]; Medical Research Council's Health of the Public grant; Wellcome Trust [083478]; Institute of Child Health, University College London from the National Institute for Health Research as Specialist Biomedical Research Centres; Institute of Ophthalmology from the National Institute for Health Research as Specialist Biomedical Research Centres; Great Ormond Street hospital; Moorfields hospital; Ulverscroft Vision Research Group; Bevordering van Volkskracht	The TwinsUK study is supported by European Union MyEuropia Marie Curie Research Training Network (MRTN-CT-2006-034021), Wellcome Trust, Guide Dogs for the Blind Association, EU FP7 (HEALTH-F2-2008-201865-GEFOS), European Network of Genetic and Genomic Epidemiology (HEALTH-F4-2007-201413), FP-5 GenomEUtwin Project (QLG2-CT-2002-01254), and US National Institutes of Health/National Eye Institute Grant 1RO1EY018246; genotyping was supported by NIH Center for Inherited Disease Research. Also supported by a National Institute for Health Research comprehensive Biomedical Research Centre award to Guy's and St. Thomas' National Health Service Foundation Trust in partnership with King's College London. Rotterdam and ERF studies are supported by Netherlands Organisation of Scientific Research, Erasmus Medical Center, Netherlands Organization for Health Research and Development, UitZicht, Research Institute for Diseases in the Elderly, European Commission Directorate General XII, Municipality of Rotterdam, Netherlands Genomics Initiative, Lijf en Leven, MD Fonds, Henkes, Oogfonds, Stichting Wetenschappelijk Onderzoek Het Oogziekenhuis, Swart van Essen, Bevordering van Volkskracht, Blindenhulp, Landelijke Stichting voor Blinden en Slechtzienden, Rotterdamse Vereniging voor Blindenbelangen, OOG Foundation, Algemene Nederlandse Vereniging ter Voorkoming van Blindheid, and Rotterdam Eye Institute. Australian Twin Registry is supported by an Australian National Health and Medical Research Council enabling grant (2004-2009), Clifford Craig Medical Research Trust, Ophthalmic Research Institute of Australia, American Health Assistance Foundation, Peggy and Leslie Cranbourne Foundation, Foundation for Children, NHMRC project Grant 350415 (2005-2007), Jack Brockhoff Foundation, and NEI project Grant RO1 EY 018246-01 (2007-2010). Genotyping for the Australian sample was funded in part by an NHMRC Medical Genomics grant and in part by an NEI/NIH project grant, performed by CIDR. Australian sample imputation analyses were carried out with the Genetic Cluster computer and were supported by the Netherlands Scientific Organization (NWO 480-05-003). The 1958 British cohort study is supported by Medical Research Council's Health of the Public grant, and genome-wide association studies were funded by project Grant 083478 from Wellcome Trust (JSR); analyses were carried out at the Institute of Child Health, University College London, and Institute of Ophthalmology, both of which receive support from the National Institute for Health Research as Specialist Biomedical Research Centres in partnership respectively with Great Ormond Street and Moorfields hospitals. Supported also by Ulverscroft Vision Research Group (PC). Sponsors and funding organizations had no role in the design or conduct of this research.		48	0	0	ASSOC RESEARCH VISION OPHTHALMOLOGY INC	ROCKVILLE	12300 TWINBROOK PARKWAY, ROCKVILLE, MD 20852-1606 USA	0146-0404		INVEST OPHTH VIS SCI	Invest. Ophthalmol. Vis. Sci.	FEB	2013	54	2					1260	1267		10.1167/iovs.12-10463		8	Ophthalmology	Ophthalmology	100BS	WOS:000315670300044
+false	J	Malone, IB; Cash, D; Ridgway, GR; MacManus, DG; Ourselin, S; Fox, NC; Schott, JM				Malone, Ian B.; Cash, David; Ridgway, Gerard R.; MacManus, David G.; Ourselin, Sebastien; Fox, Nick C.; Schott, Jonathan M.			MIRIAD-Public release of a multiple time point Alzheimer's MR imaging dataset	NEUROIMAGE		English	Article						Alzheimer's; MRI; Longitudinal; Imaging; Database	ATROPHY MEASUREMENT TECHNIQUES; SERIAL MRI; ACCURACY ASSESSMENT; CORTICAL THICKNESS; CEREBRAL ATROPHY; BRAIN ATROPHY; DISEASE; DIAGNOSIS; VOXEL; RATES	The Minimal Interval Resonance Imaging in Alzheimer's Disease (MIRIAD) dataset is a series of longitudinal volumetric T1 MRI scans of 46 mild-moderate Alzheimer's subjects and 23 controls. It consists of 708 scans conducted by the same radiographer with the same scanner and sequences at intervals of 2, 6, 14, 26, 38 and 52 weeks, 18 and 24 months from baseline, with accompanying information on gender, age and Mini Mental State Examination (MMSE) scores. Details of the cohort and imaging results have been described in peer-reviewed publications, and the data are here made publicly available as a common resource for researchers to develop, validate and compare techniques, particularly for measurement of longitudinal volume change in serially acquired MR. (c) 2013 Elsevier Inc. All rights reserved.	[Malone, Ian B.; Cash, David; Ourselin, Sebastien; Fox, Nick C.; Schott, Jonathan M.] UCL Inst Neurol, Dementia Res Ctr, London WC1N 3BG, England; [Cash, David; Ourselin, Sebastien] UCL, Ctr Med Image Comp, London WC1E 6BT, England; [MacManus, David G.] UCL Inst Neurol, NMR Res Unit, London WC1N 3BG, England; [Ridgway, Gerard R.] UCL Inst Neurol, Wellcome Trust Ctr Neuroimaging, London WC1N 3BG, England	Schott, JM (reprint author), UCL Inst Neurol, Dementia Res Ctr, Queen Sq, London WC1N 3BG, England.	j.schott@ucl.ac.uk	Schott, Jonathan/A-9065-2011; Ridgway, Gerard/F-5145-2010	UK Alzheimer's Society; GlaxoSmithKline; Medical Research Council; EPSRC [EP/H046410/1]; Comprehensive Biomedical Research Centre (CBRC) Strategic Investment Award [168]; Medical Research Council [MR/J014257/1]; National Institute for Health Research (NIHR) Biomedical Research Unit in Dementia based at University College London Hospitals (UCLH), University College London (UCL); Wellcome Trust [091593/Z/10/Z]	This dataset is made available through the support of the UK Alzheimer's Society. The original data collection was funded through an unrestricted educational grant from GlaxoSmithKline and funding from the UK Alzheimer's Society (to Dr Schott) and the Medical Research Council (to Professor Fox). Professor Ourselin receives funding from the EPSRC (EP/H046410/1) and the Comprehensive Biomedical Research Centre (CBRC) Strategic Investment Award (Ref. 168). Dr Ridgway is supported by the Medical Research Council [grant number MR/J014257/1]. This work was supported by the National Institute for Health Research (NIHR) Biomedical Research Unit in Dementia based at University College London Hospitals (UCLH), University College London (UCL). The views expressed are those of the authors and not necessarily those of the NHS, the NIHR or the Department of Health. The Dementia Research Centre is an Alzheimer's Research UK (ARUK) Coordinating Centre. The Wellcome Trust Centre for Neuroimaging is supported by core funding from the Wellcome Trust [grant number 091593/Z/10/Z].		37	0	0	ACADEMIC PRESS INC ELSEVIER SCIENCE	SAN DIEGO	525 B ST, STE 1900, SAN DIEGO, CA 92101-4495 USA	1053-8119		NEUROIMAGE	Neuroimage	APR 15	2013	70						33	36		10.1016/j.neuroimage.2012.12.044		4	Neurosciences; Neuroimaging; Radiology, Nuclear Medicine & Medical Imaging	Neurosciences & Neurology; Radiology, Nuclear Medicine & Medical Imaging	100LX	WOS:000315703800004
+false	J	de Haas, B; Schwarzkopf, DS; Urner, M; Rees, G				de Haas, Benjamin; Schwarzkopf, D. Samuel; Urner, Maren; Rees, Geraint			Auditory modulation of visual stimulus encoding in human retinotopic cortex	NEUROIMAGE		English	Article						Multisensory; Audio-visual; V2; Decoding; MVPA; fMRI	MULTISENSORY INTERACTIONS; AUDIOVISUAL INTEGRATION; NEURONAL OSCILLATIONS; UNIMODAL NEURONS; INFORMATION; AREAS; PERCEPTION; ATTENTION; RESPONSES; CORTICES	Sounds can modulate visual perception as well as neural activity in retinotopic cortex. Most studies in this context investigated how sounds change neural amplitude and oscillatory phase reset in visual cortex. However, recent studies in macaque monkeys show that congruence of audio-visual stimuli also modulates the amount of stimulus information carried by spiking activity of primary auditory and visual neurons. Here, we used naturalistic video stimuli and recorded the spatial patterns of functional MRI signals in human retinotopic cortex to test whether the discriminability of such patterns varied with the presence and congruence of co-occurring sounds. We found that incongruent sounds significantly impaired stimulus decoding from area V2 and there was a similar trend for V3. This effect was associated with reduced inter-trial reliability of patterns (i.e. higher levels of noise), but was not accompanied by any detectable modulation of overall signal amplitude. We conclude that sounds modulate naturalistic stimulus encoding in early human retinotopic cortex without affecting overall signal amplitude. Subthreshold modulation, oscillatory phase reset and dynamic attentional modulation are candidate neural and cognitive mechanisms mediating these effects. (C) 2013 Elsevier Inc. All rights reserved.	UCL Inst Cognit Neurosci, London WC1N 3BG, England; UCL, Wellcome Trust Ctr Neuroimaging, London WC1N 3AR, England	de Haas, B (reprint author), UCL, Inst Cognit Neurosci, Alexandra House,17 Queen Sq, London WC1N 3AR, England.	benjamin.haas.09@ucl.ac.uk		Wellcome Trust [091593/Z/10/Z]	This work was funded by the Wellcome Trust. The Wellcome Trust Centre for Neuroimaging is supported by core funding from the Wellcome Trust 091593/Z/10/Z. We thank Martin Hebart for helpful comments and support staff for help with scanning. Jon Driver provided valuable input to the design of this study.		55	0	0	ACADEMIC PRESS INC ELSEVIER SCIENCE	SAN DIEGO	525 B ST, STE 1900, SAN DIEGO, CA 92101-4495 USA	1053-8119		NEUROIMAGE	Neuroimage	APR 15	2013	70						258	267		10.1016/j.neuroimage.2012.12.061		10	Neurosciences; Neuroimaging; Radiology, Nuclear Medicine & Medical Imaging	Neurosciences & Neurology; Radiology, Nuclear Medicine & Medical Imaging	100LX	WOS:000315703800026
+false	J	Mohammadi, S; Freund, P; Feiweier, T; Curt, A; Weiskopf, N				Mohammadi, Siawoosh; Freund, Patrick; Feiweier, Thorsten; Curt, Armin; Weiskopf, Nikolaus			The impact of post-processing on spinal cord diffusion tensor imaging	NEUROIMAGE		English	Article						DTI; Fractional anisotropy; Spinal cord; Eddy current and motion correction; Robust fitting	WHITE-MATTER; EDDY-CURRENT; IN-VIVO; WALLERIAN DEGENERATION; WEIGHTED MRI; 3 T; ECHO; INJURY; FIELD; REORGANIZATION	Diffusion tensor imaging (DTI) provides information about the microstructure in the brain and spinal cord. While new neuroimaging techniques have significantly advanced the accuracy and sensitivity of DTI of the brain, the quality of spinal cord DTI data has improved less. This is in part due to the small size of the spinal cord (ca. 1 cm diameter) and more severe instrumental (e.g. eddy current) and physiological (e.g. cardiac pulsation) artefacts present in spinal cord DTI. So far, the improvements in image quality and resolution have resulted from cardiac gating and new acquisition approaches (e.g. reduced field-of-view techniques). The use of retrospective correction methods is not well established for spinal cord DTI. The aim of this paper is to develop an improved post-processing pipeline tailored for DTI data of the spinal cord with increased quality. For this purpose, we compared two eddy current and motion correction approaches using three-dimensional affine (3D-affine) and slice-wise registrations. We also introduced a new robust-tensor-fitting method that controls for whole-volume outliers. Although in general 3D-affine registration improves data quality, occasionally it can lead to misregistrations and biassed tensor estimates. The proposed robust tensor fitting reduced misregistiation-related bias and yielded more reliable tensor estimates. Overall, the combination of slice-wise motion correction, eddy current correction, and robust tensor fitting yielded the best results. It increased the contrast-to-noise ratio (CNR) in FA maps by about 30% and reduced intra-subject variation in fractional anisotropy (FA) maps by 18%. The higher quality of FA maps allows for a better distinction between grey and white matter without increasing scan time and is compatible with any multi-directional DTI acquisition scheme. (c) 2013 Elsevier Inc. All rights reserved.	[Mohammadi, Siawoosh; Freund, Patrick; Weiskopf, Nikolaus] UCL, Wellcome Trust Ctr Neuroimaging, UCL Inst Neurol, London WC1N 3BG, England; [Freund, Patrick] UCL, Dept Brain Repair & Rehabil, UCL Inst Neurol, London, England; [Freund, Patrick; Curt, Armin] Univ Zurich, Univ Zurich Hosp, Spinal Cord Injury Ctr Balgrist, Zurich, Switzerland; [Feiweier, Thorsten] Siemens AG, Healthcare Sect, D-91052 Erlangen, Germany	Mohammadi, S (reprint author), UCL, Wellcome Trust Ctr Neuroimaging, UCL Inst Neurol, London WC1N 3BG, England.	siawoosh.mohammadi@ucl.ac.uk	Weiskopf, Nikolaus/B-9357-2008	Wellcome Trust [091593/Z/10/Z]; Swiss Paraplegic Research, Nottwil, Switzerland; Deutsche Forschungsgemeinschaft (DFG) [MO 2397/1-1]	The Wellcome Trust Centre for Neuroimaging is supported by core funding from the Wellcome Trust 091593/Z/10/Z. This work was supported by the Wellcome Trust and Swiss Paraplegic Research, Nottwil, Switzerland. SM was supported by the Deutsche Forschungsgemeinschaft (DFG, MO 2397/1-1). Open access to the publication was supported by the Wellcome Trust.		74	0	0	ACADEMIC PRESS INC ELSEVIER SCIENCE	SAN DIEGO	525 B ST, STE 1900, SAN DIEGO, CA 92101-4495 USA	1053-8119		NEUROIMAGE	Neuroimage	APR 15	2013	70						377	385		10.1016/j.neuroimage.2012.12.058		9	Neurosciences; Neuroimaging; Radiology, Nuclear Medicine & Medical Imaging	Neurosciences & Neurology; Radiology, Nuclear Medicine & Medical Imaging	100LX	WOS:000315703800037
+true	J	Walker, RW; Jusabani, A; Aris, E; Gray, WK; Mugusi, F; Swai, M; Alberti, KG; Unwin, N				Walker, R. W.; Jusabani, A.; Aris, E.; Gray, W. K.; Mugusi, F.; Swai, M.; Alberti, K. G.; Unwin, N.			Correlates of short- and long-term case fatality within an incident stroke population in Tanzania	SAMJ SOUTH AFRICAN MEDICAL JOURNAL		English	Article							ACUTE ISCHEMIC-STROKE; RISK-FACTORS; MORTALITY; PREDICTORS; SURVIVAL; RECURRENCE; SEVERITY; BURDEN; RATES; DEATH	Background. This study aimed to identify correlates of case fatality within an incident stroke population in rural Tanzania. Methods. Stroke patients, identified by the Tanzanian Stroke Incidence Project, underwent a full examination and assessment around the time of incident stroke. Records were made of demographic data, blood pressure, pulse rate and rhythm, physical function (Barthel index), neurological status (communication, swallowing, vision, muscle activity, sensation), echocardiogram, chest X-ray and computed tomography (CT) head scan. Cases were followed up over the next 3 - 6 years. Results. In 130 incident cases included in this study, speech, language and swallowing problems, reduced muscle power, and reduced physical function were all significantly correlated with case fatality at 28 days and 3 years. Age was significantly correlated with case fatality at 3 years, but not at 28 days post-stroke. Smoking history was the only significant correlate of case fatality at 28 days that pre-dated the incident stroke. All other significant correlates were measures of neurological recovery from stroke. Conclusions. This is the first published study of the correlates of post-stroke case fatality in sub-Saharan Africa (SSA) from an incident stroke population. Case fatality was correlated with the various motor impairments resulting from the incident stroke. Improving post-stroke care may help to reduce stroke case fatality in SSA. S Afr Med J 2013;103(2):107-112. DOI:10.7196/SAMJ.5793	[Walker, R. W.; Gray, W. K.] N Tyneside Gen Hosp, Newcastle Upon Tyne, Tyne & Wear, England; [Walker, R. W.; Unwin, N.] Newcastle Univ, Inst Hlth & Soc, Newcastle Upon Tyne NE1 7RU, Tyne & Wear, England; [Jusabani, A.; Swai, M.] Kilimanjaro Christian Med Ctr, Moshi, Tanzania; [Aris, E.; Mugusi, F.] Muhimbili Univ Hosp, Dept Neurol, Dar Es Salaam, Tanzania; [Alberti, K. G.] Univ London Imperial Coll Sci Technol & Med, Dept Endocrinol & Metab, London, England; [Unwin, N.] Univ W Indies, Fac Med Sci, Bridgetown, Barbados	Walker, RW (reprint author), N Tyneside Gen Hosp, Newcastle Upon Tyne, Tyne & Wear, England.	richard.walker@nhct.nhs.uk		Wellcome Trust [066939]	This work was funded by a grant from the Wellcome Trust (grant number 066939).		28	0	0	SA MEDICAL ASSOC	PRETORIA	BLOCK F CASTLE WALK CORPORATE PARK, NOSSOB STREET, ERASMUSKLOOF EXT3, PRETORIA, 0002, SOUTH AFRICA	0256-9574		SAMJ S AFR MED J	SAMJ S. Afr. Med. J.	FEB	2013	103	2					107	112		10.7196/SAMJ.5793		6	Medicine, General & Internal	General & Internal Medicine	101GV	WOS:000315764100018
+false	J	Loebbermann, J; Durant, L; Thornton, H; Johansson, C; Openshaw, PJ				Loebbermann, Jens; Durant, Lydia; Thornton, Hannah; Johansson, Cecilia; Openshaw, Peter J.			Defective immunoregulation in RSV vaccine-augmented viral lung disease restored by selective chemoattraction of regulatory T cells	PROCEEDINGS OF THE NATIONAL ACADEMY OF SCIENCES OF THE UNITED STATES OF AMERICA		English	Article						chemokines; lung infection; bronchiolitis	SYNCYTIAL VIRUS-INFECTION; CHEMOKINE RECEPTORS; MICE; INFLAMMATION; RECRUITMENT; EXPRESSION; RESPONSES; CHILDREN; IMMUNITY; PROFILE	Human trials of formaldehyde-inactivated respiratory syncytial virus (FI-RSV) vaccine in 1966-1967 caused disastrous worsening of disease and death in infants during subsequent natural respiratory syncytial virus (RSV) infection. The reasons behind vaccine-induced augmentation are only partially understood, and fear of augmentation continues to hold back vaccine development. We now show that mice vaccinated with FI-RSV show enhanced local recruitment of conventional CD4(+) T cells accompanied by a profound loss of regulatory T cells (Tregs) in the airways. This loss of Tregs was so complete that additional depletion of Tregs (in transgenic depletion of regulatory T-cell mice) produced no additional disease enhancement. Transfer of conventional CD4(+) T cells from FI-RSV-vaccinated mice into naive RSV-infected recipients also caused a reduction in airway Treg responses; boosting Tregs with IL-2 immune complexes failed to restore normal levels of Tregs or to ameliorate disease. However, delivery of chemokine ligands (CCL) 17/22 via the airway selectively recruited airway Tregs and attenuated vaccine-augmented disease, reducing weight loss and inhibiting local recruitment of pathogenic CD4(+) T cells. These findings reveal an unexpected mechanism of vaccine-induced disease augmentation and indicate that selective chemoattraction of Tregs into diseased sites may offer a novel approach to the modulation of tissue-specific inflammation.	[Loebbermann, Jens; Durant, Lydia; Thornton, Hannah; Johansson, Cecilia; Openshaw, Peter J.] Univ London Imperial Coll Sci Technol & Med, Fac Med, Natl Heart & Lung Inst, Ctr Resp Infect,Dept Resp Med, London W2 1PG, England	Openshaw, PJ (reprint author), Univ London Imperial Coll Sci Technol & Med, Fac Med, Natl Heart & Lung Inst, Ctr Resp Infect,Dept Resp Med, London W2 1PG, England.	p.openshaw@imperial.ac.uk		Centre of Respiratory Infections; Medical Research Council (MRC); Asthma UK Centre in Allergic Mechanisms of Asthma, Wellcome Trust Programme [087805/Z/08/Z]; MRC [G0800311]	We thank T. Sparwasser for providing DEREG mice and K. Webster and J. Sprent for providing protocols and advice on the preparation and administration of the IL-2 complexes. We also thank S. Makris for help with experiments. This work was supported by the Centre of Respiratory Infections, the Medical Research Council (MRC) and Asthma UK Centre in Allergic Mechanisms of Asthma, Wellcome Trust Programme 087805/Z/08/Z (P.J.O.), and MRC career development award, Grant G0800311 (to C.J.).		31	0	0	NATL ACAD SCIENCES	WASHINGTON	2101 CONSTITUTION AVE NW, WASHINGTON, DC 20418 USA	0027-8424		P NATL ACAD SCI USA	Proc. Natl. Acad. Sci. U. S. A.	FEB 19	2013	110	8					2987	2992		10.1073/pnas.1217580110		6	Multidisciplinary Sciences	Science & Technology - Other Topics	103YC	WOS:000315954400078
+false	J	Hambleton, S; Goodbourn, S; Young, DF; Dickinson, P; Mohamad, SMB; Valappil, M; McGovern, N; Cant, AJ; Hackett, SJ; Ghazal, P; Morgan, NV; Randall, RE				Hambleton, Sophie; Goodbourn, Stephen; Young, Dan F.; Dickinson, Paul; Mohamad, Siti M. B.; Valappil, Manoj; McGovern, Naomi; Cant, Andrew J.; Hackett, Scott J.; Ghazal, Peter; Morgan, Neil V.; Randall, Richard E.			STAT2 deficiency and susceptibility to viral illness in humans	PROCEEDINGS OF THE NATIONAL ACADEMY OF SCIENCES OF THE UNITED STATES OF AMERICA		English	Article						measles vaccine; viruses; rare diseases	HERPES-SIMPLEX ENCEPHALITIS; ALPHA/BETA-INTERFERON; TARGETED DISRUPTION; VIRUS ENCEPHALITIS; SIGNALING PATHWAY; TLR3 DEFICIENCY; INBORN-ERRORS; HOST-DEFENSE; V-PROTEIN; IFN-BETA	Severe infectious disease in children may be a manifestation of primary immunodeficiency. These genetic disorders represent important experiments of nature with the capacity to elucidate nonredundant mechanisms of human immunity. We hypothesized that a primary defect of innate antiviral immunity was responsible for unusually severe viral illness in two siblings; the proband developed disseminated vaccine strain measles following routine immunization, whereas an infant brother died after a 2-d febrile illness from an unknown viral infection. Patient fibroblasts were indeed abnormally permissive for viral replication in vitro, associated with profound failure of type I IFN signaling and absence of STAT2 protein. Sequencing of genomic DNA and RNA revealed a homozygous mutation in intron 4 of STAT2 that prevented correct splicing in patient cells. Subsequently, other family members were identified with the same genetic lesion. Despite documented infection by known viral pathogens, some of which have been more severe than normal, surviving STAT2-deficient individuals have remained generally healthy, with no obvious defects in their adaptive immunity or developmental abnormalities. These findings imply that type I IFN signaling [through interferon-stimulated gene factor 3 (ISGF3)] is surprisingly not essential for host defense against the majority of common childhood viral infections.	[Hambleton, Sophie; Mohamad, Siti M. B.; McGovern, Naomi; Cant, Andrew J.] Newcastle Univ, Inst Cellular Med, Primary Immunodeficiency Grp, Newcastle Upon Tyne NE2 4HH, Tyne & Wear, England; [Hambleton, Sophie; Cant, Andrew J.] Great North Childrens Hosp, Pediat Immunol Serv, Newcastle Upon Tyne NE1 4LP, Tyne & Wear, England; [Goodbourn, Stephen] Univ London, Div Biomed Sci, London SW17 0RE, England; [Young, Dan F.; Randall, Richard E.] Univ St Andrews, Sch Biol, St Andrews KY16 9TS, Fife, Scotland; [Dickinson, Paul; Ghazal, Peter] Univ Edinburgh, Div Pathway Med, Edinburgh EH16 4SB, Midlothian, Scotland; [Mohamad, Siti M. B.] Univ Sains Malaysia, Adv Med & Dent Inst, Usm Penang 11800, Malaysia; [Valappil, Manoj] Royal Victoria Infirm, Hlth Protect Agcy, Newcastle Upon Tyne NE1 4LP, Tyne & Wear, England; [Hackett, Scott J.] Heartlands Hosp, Pediat Immunol Dept, Birmingham B9 5SS, W Midlands, England; [Morgan, Neil V.] Univ Birmingham, Inst Biomed Res, Ctr Cardiovasc Sci, Birmingham B15 2TT, W Midlands, England	Hambleton, S (reprint author), Newcastle Univ, Inst Cellular Med, Primary Immunodeficiency Grp, Newcastle Upon Tyne NE2 4HH, Tyne & Wear, England.	sophie.hambleton@ncl.ac.uk; rer@st-andrews.ac.uk		Medical Research Council [G0701897]; Bubble Foundation; Wellcome Trust [AL087751/B, 087751/A/08/Z]	We thank the subjects' families for their trust, our many colleagues in National Health Service hospitals and laboratories who contributed to patient care, and Catherine Thompson and colleagues at the Respiratory Virus Unit, Health Protection Agency (London, United Kingdom), where influenza serology was assessed. This work was supported by Medical Research Council Fellowship G0701897 (to S. H.), the Bubble Foundation (S. H.), and Wellcome Trust Grants AL087751/B (to S. G.) and 087751/A/08/Z (to R.E.R.).		46	0	0	NATL ACAD SCIENCES	WASHINGTON	2101 CONSTITUTION AVE NW, WASHINGTON, DC 20418 USA	0027-8424		P NATL ACAD SCI USA	Proc. Natl. Acad. Sci. U. S. A.	FEB 19	2013	110	8					3053	3058		10.1073/pnas.1220098110		6	Multidisciplinary Sciences	Science & Technology - Other Topics	103YC	WOS:000315954400089
+true	J	Gupta, A; Wood, R; Kaplan, R; Bekker, LG; Lawn, SD				Gupta, Ankur; Wood, Robin; Kaplan, Richard; Bekker, Linda-Gail; Lawn, Stephen D.			Prevalent and Incident Tuberculosis Are Independent Risk Factors for Mortality among Patients Accessing Antiretroviral Therapy in South Africa	PLOS ONE		English	Article							HIV-ASSOCIATED TUBERCULOSIS; IMMUNE RECONSTITUTION DISEASE; SUB-SAHARAN AFRICA; PULMONARY TUBERCULOSIS; TREATMENT PROGRAM; INFECTED PATIENTS; EARLY OUTCOMES; RURAL UGANDA; ADULTS; DETERMINANTS	Background: Patients with prevalent or incident tuberculosis (TB) in antiretroviral treatment (ART) programmes in sub-Saharan Africa have high mortality risk. However, published data are contradictory as to whether TB is a risk factor for mortality that is independent of CD4 cell counts and other patient characteristics. Methods/Findings: This observational ART cohort study was based in Cape Town, South Africa. Deaths from all causes were ascertained among patients receiving ART for up to 8 years. TB diagnoses and 4-monthly CD4 cell counts were recorded. Mortality rates were calculated and Poisson regression models were used to calculate incidence rate ratios (IRR) and identify risk factors for mortality. Of 1544 patients starting ART, 464 patients had prevalent TB at baseline and 424 developed incident TB during a median of 5.0 years follow-up. Most TB diagnoses (73.6%) were culture-confirmed. A total of 208 (13.5%) patients died during ART and mortality rates were 8.84 deaths/100 person-years during the first year of ART and decreased to 1.14 deaths/100 person-years after 5 years. In multivariate analyses adjusted for baseline and time-updated risk factors, both prevalent and incident TB were independent risk factors for mortality (IRR 1.7 [95% CI, 1.2-2.3] and 2.7 [95% CI, 1.9-3.8], respectively). Adjusted mortality risks were higher in the first 6 months of ART for those with prevalent TB at baseline (IRR 2.33; 95% CI, 1.5-3.5) and within the 6 months following diagnoses of incident TB (IRR 3.8; 95% CI, 2.6-5.7). Conclusions: Prevalent TB at baseline and incident TB during ART were strongly associated with increased mortality risk. This effect was time-dependent, suggesting that TB and mortality are likely to be causally related and that TB is not simply an epiphenomenon among highly immunocompromised patients. Strategies to rapidly diagnose, treat and prevent TB prior to and during ART urgently need to be implemented.	[Gupta, Ankur; Lawn, Stephen D.] London Sch Hyg & Trop Med, Dept Clin Res, Fac Infect & Trop Dis, London WC1, England; [Wood, Robin; Kaplan, Richard; Bekker, Linda-Gail; Lawn, Stephen D.] Univ Cape Town, Desmond Tutu HIV Ctr, Inst Infect Dis & Mol Med, Fac Hlth Sci, ZA-7925 Cape Town, South Africa	Lawn, SD (reprint author), London Sch Hyg & Trop Med, Dept Clin Res, Fac Infect & Trop Dis, London WC1, England.	stephen.lawn@lshtm.ac.uk		Wellcome Trust, London, UK [074641]; International Epidemiologic Database to Evaluate Aids; National Institute of Allergy and Infectious Diseases (NIAID) [5U01AI069924-02]; National Institutes of Health (NIH) [5R01AI058736-02]; USAID Right to Care [CA 674 A 00 08 0000 700]; South African Centre for Epidemiological Modelling and Analysis (SACEMA); Cost-Effectiveness of Preventing AIDS Complications (CEPAC)	SDL is funded by the Wellcome Trust, London, UK with grant number 074641. RW was funded in part by the International Epidemiologic Database to Evaluate Aids with a grant from the National Institute of Allergy and Infectious Diseases (NIAID: 5U01AI069924-02); Cost-Effectiveness of Preventing AIDS Complications (CEPAC) funded by the National Institutes of Health (NIH, 5R01AI058736-02); USAID Right to Care (CA 674 A 00 08 0000 700) and the South African Centre for Epidemiological Modelling and Analysis (SACEMA). The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.		47	0	0	PUBLIC LIBRARY SCIENCE	SAN FRANCISCO	1160 BATTERY STREET, STE 100, SAN FRANCISCO, CA 94111 USA	1932-6203		PLOS ONE	PLoS One	FEB 13	2013	8	2							e55824	10.1371/journal.pone.0055824		8	Multidisciplinary Sciences	Science & Technology - Other Topics	104DM	WOS:000315970300054
+true	J	Munro, PRT; Rigon, L; Ignatyev, K; Lopez, FCM; Dreossi, D; Speller, RD; Olivo, A				Munro, Peter R. T.; Rigon, Luigi; Ignatyev, Konstantin; Lopez, Frances C. M.; Dreossi, Diego; Speller, Robert D.; Olivo, Alessandro			A quantitative, non-interferometric X-ray phase contrast imaging technique	OPTICS EXPRESS		English	Article							SYNCHROTRON-RADIATION; RETRIEVAL; ABSORPTION; SYSTEMS; MAMMOGRAPHY; TOMOGRAPHY; ALGORITHMS; SCATTERING; OBJECTS	We present a quantitative, non-interferometric, X-ray differential phase contrast imaging technique based on the edge illumination principle. We derive a novel phase retrieval algorithm which requires only two images to be acquired and verify the technique experimentally using synchrotron radiation. The technique is useful for planar imaging but is expected to be important for quantitative phase tomography also. The properties and limitations of the technique are studied in detail. (C) 2013 Optical Society of America	[Munro, Peter R. T.] Univ Western Australia, Sch Elect Elect & Comp Engn, Opt Biomed Engn Lab, Crawley, WA 6009, Australia; [Munro, Peter R. T.] Univ Western Australia, Ctr Microscopy Characterisat & Anal, Crawley, WA 6009, Australia; [Rigon, Luigi; Lopez, Frances C. M.] Ist Nazl Fis Nucl, Sez Trieste, I-34127 Trieste, Italy; [Ignatyev, Konstantin; Speller, Robert D.; Olivo, Alessandro] UCL, Dept Med Phys & Bioengn, London WC1E 6BT, England; [Lopez, Frances C. M.] Univ Trieste, Dept Phys, I-34127 Trieste, Italy; [Dreossi, Diego] Sincrotrone Trieste SCpA, I-34012 Trieste, TS, Italy	Munro, PRT (reprint author), Univ Western Australia, Sch Elect Elect & Comp Engn, Opt Biomed Engn Lab, 35 Stirling Highway, Crawley, WA 6009, Australia.	peter.munro@uwa.edu.au		UK Engineering and Physical Sciences Research Council [EP/G004250/1, EP/I021884/1]; Wellcome Trust [085856/Z/08/Z]; Australian Research Council [DE120101331]; Prof. Giulio Brautti PhD Memorial Fellowship	This work was funded by the UK Engineering and Physical Sciences Research Council (EP/G004250/1 and EP/I021884/1). K. I. was supported by the Wellcome Trust (085856/Z/08/Z) and P. M. is supported by a Discovery Early Career Research Award from the Australian Research Council (DE120101331). F. L. is supported by the Prof. Giulio Brautti PhD Memorial Fellowship. We would like to thank the personnel from the Elettra synchrotron and the University of Trieste working on the SYRMEP beamline for assistance with obtaining the experimental results.		44	1	1	OPTICAL SOC AMER	WASHINGTON	2010 MASSACHUSETTS AVE NW, WASHINGTON, DC 20036 USA	1094-4087		OPT EXPRESS	Opt. Express	JAN 14	2013	21	1					647	661				15	Optics	Optics	104JF	WOS:000315988100089
+false	J	Longstaff, C; Varju, I; Sotonyi, P; Szabo, L; Krumrey, M; Hoell, A; Bota, A; Varga, Z; Komorowicz, E; Kolev, K				Longstaff, Colin; Varju, Imre; Sotonyi, Peter; Szabo, Laszlo; Krumrey, Michael; Hoell, Armin; Bota, Attila; Varga, Zoltan; Komorowicz, Erzsebet; Kolev, Krasimir			Mechanical Stability and Fibrinolytic Resistance of Clots Containing Fibrin, DNA, and Histones	JOURNAL OF BIOLOGICAL CHEMISTRY		English	Article							NEUTROPHIL EXTRACELLULAR TRAPS; DEEP-VEIN THROMBOSIS; TISSUE-PLASMINOGEN ACTIVATOR; STREPTOCOCCUS-PYOGENES; INNATE IMMUNITY; PLATELET; COAGULATION; GENERATION; RELEASE; BLOOD	Neutrophil extracellular traps are networks of DNA and associated proteins produced by nucleosome release from activated neutrophils in response to infection stimuli and have recently been identified as key mediators between innate immunity, inflammation, and hemostasis. The interaction of DNA and histones with a number of hemostatic factors has been shown to promote clotting and is associated with increased thrombosis, but little is known about the effects of DNA and histones on the regulation of fibrin stability and fibrinolysis. Here we demonstrate that the addition of histone-DNA complexes to fibrin results in thicker fibers (increase in median diameter from 84 to 123 nm according to scanning electron microscopy data) accompanied by improved stability and rigidity (the critical shear stress causing loss of fibrin viscosity increases from 150 to 376 Pa whereas the storage modulus of the gel increases from 62 to 82 pascals according to oscillation rheometric data). The effects of DNA and histones alone are subtle and suggest that histones affect clot structure whereas DNA changes the way clots are lysed. The combination of histones + DNA significantly prolongs clot lysis. Isothermal titration and confocal microscopy studies suggest that histones and DNA bind large fibrin degradation products with 191 and 136 nM dissociation constants, respectively, interactions that inhibit clot lysis. Heparin, which is known to interfere with the formation of neutrophil extracellular traps, appears to prolong lysis time at a concentration favoring ternary histone-DNA-heparin complex formation, and DNase effectively promotes clot lysis in combination with tissue plasminogen activator.	[Longstaff, Colin] Natl Inst Biol Stand & Controls, Haemostasis Sect, Potters Bar EN6 3QG, Herts, England; [Varju, Imre; Komorowicz, Erzsebet; Kolev, Krasimir] Semmelweis Univ Med, Dept Med Biochem, H-1094 Budapest, Hungary; [Sotonyi, Peter] Semmelweis Univ Med, Dept Vasc Surg, H-1122 Budapest, Hungary; [Szabo, Laszlo] Hungarian Acad Sci, Res Ctr Nat Sci, Inst Mat & Environm Chem, H-1025 Budapest, Hungary; [Bota, Attila; Varga, Zoltan] Hungarian Acad Sci, Res Ctr Nat Sci, Inst Mol Pharmacol, Dept Biol Nanochem, H-1025 Budapest, Hungary; [Krumrey, Michael] PTB, D-10587 Berlin, Germany; [Hoell, Armin] HZB, D-14109 Berlin, Germany	Longstaff, C (reprint author), Natl Inst Biol Stand & Controls, Biotherapeut Grp, S Mimms EN6 3QG, Herts, England.	colin.longstaff@nibsc.hpa.org.uk		Wellcome Trust [083174]; Hungarian Scientific Research Fund [OTKA 75430, 83023]; German Academic Exchange Service [DAAD A/12/01760]	This work was supported by Wellcome Trust Grant 083174, Hungarian Scientific Research Fund Grants OTKA 75430 and 83023, and German Academic Exchange Service Grant DAAD A/12/01760.		37	0	0	AMER SOC BIOCHEMISTRY MOLECULAR BIOLOGY INC	BETHESDA	9650 ROCKVILLE PIKE, BETHESDA, MD 20814-3996 USA	0021-9258		J BIOL CHEM	J. Biol. Chem.	MAR 8	2013	288	10					6946	6956		10.1074/jbc.M112.404301		11	Biochemistry & Molecular Biology	Biochemistry & Molecular Biology	104NY	WOS:000316002400017
+false	J	Whiteman, P; de Madrid, BH; Taylor, P; Li, DM; Heslop, R; Viticheep, N; Tan, JZ; Shimizu, H; Callaghan, J; Masiero, M; Li, JL; Banham, AH; Harris, AL; Lea, SM; Redfield, C; Baron, M; Handford, PA				Whiteman, Pat; de Madrid, Beatriz Hernandez; Taylor, Paul; Li, Demin; Heslop, Rebecca; Viticheep, Nattnee; Tan, Joyce Zi; Shimizu, Hideyuki; Callaghan, Juliana; Masiero, Massimo; Li, Ji Liang; Banham, Alison H.; Harris, Adrian L.; Lea, Susan M.; Redfield, Christina; Baron, Martin; Handford, Penny A.			Molecular Basis for Jagged-1/Serrate Ligand Recognition by the Notch Receptor	JOURNAL OF BIOLOGICAL CHEMISTRY		English	Article							HUMAN FACTOR-IX; DROSOPHILA-MELANOGASTER; PROTEOLYTIC ACTIVATION; FRINGE; DOMAIN; BINDING; MODULATION; ANTIBODIES; CLEAVAGE; JAGGED1	We have mapped a Jagged/Serrate-binding site to specific residues within the 12th EGF domain of human and Drosophila Notch. Two critical residues, involved in a hydrophobic interaction, provide a ligand-binding platform and are adjacent to a Fringe-sensitive residue that modulates Notch activity. Our data suggest that small variations within the binding site fine-tune ligand specificity, which may explain the observed sequence heterogeneity in mammalian Notch paralogues, and should allow the development of paralogue-specific ligand-blocking antibodies. As a proof of principle, we have generated a Notch-1-specific monoclonal antibody that blocks binding, thus paving the way for antibody tools for research and therapeutic applications.	[Whiteman, Pat; Taylor, Paul; Heslop, Rebecca; Viticheep, Nattnee; Callaghan, Juliana; Redfield, Christina; Handford, Penny A.] Univ Oxford, Dept Biochem, Oxford OX1 3QU, England; [de Madrid, Beatriz Hernandez; Shimizu, Hideyuki; Baron, Martin] Univ Manchester, Fac Life Sci, Manchester M13 9PT, Lancs, England; [Tan, Joyce Zi; Lea, Susan M.] Univ Oxford, Sir William Dunn Sch Pathol, Oxford OX1 3RE, England; [Li, Demin; Masiero, Massimo; Banham, Alison H.] Univ Oxford, Nuffield Dept Clin Lab Sci, Oxford Natl Inst Hlth Res NIHR, Biomed Res Ctr,John Radcliffe Hosp, Oxford OX3 9DU, England; [Masiero, Massimo; Li, Ji Liang; Harris, Adrian L.] Univ Oxford, Weatherall Inst Mol Med, Mol Oncol Labs, Dept Oncol,John Radcliffe Hosp, Oxford OX3 9DU, England	Handford, PA (reprint author), Univ Oxford, Dept Biochem, S Parks Rd, Oxford OX1 3QU, England.	penny.handford@bioch.ox.ac.uk	Lea, Susan/B-7678-2009	Wellcome Trust [087928, 079440]; Cancer Research UK [A10702]; Biotechnology and Biological Sciences Research Council	This work was supported by The Wellcome Trust Grants 087928 (to P. A. H., S. M. L., and M. B.) and 079440 (to C. R.), Cancer Research UK Programme Grant A10702 (to A. H. B., A. L. H., P. H., and S. M. L.), and Biotechnology and Biological Sciences Research Council studentship (to P. T.).		35	0	0	AMER SOC BIOCHEMISTRY MOLECULAR BIOLOGY INC	BETHESDA	9650 ROCKVILLE PIKE, BETHESDA, MD 20814-3996 USA	0021-9258		J BIOL CHEM	J. Biol. Chem.	MAR 8	2013	288	10					7305	7312		10.1074/jbc.M112.428854		8	Biochemistry & Molecular Biology	Biochemistry & Molecular Biology	104NY	WOS:000316002400050
+false	J	Sarell, CJ; Woods, LA; Su, YC; Debelouchina, GT; Ashcroft, AE; Griffin, RG; Stockley, PG; Radford, SE				Sarell, Claire J.; Woods, Lucy A.; Su, Yongchao; Debelouchina, Galia T.; Ashcroft, Alison E.; Griffin, Robert G.; Stockley, Peter G.; Radford, Sheena E.			Expanding the Repertoire of Amyloid Polymorphs by Co-polymerization of Related Protein Precursors	JOURNAL OF BIOLOGICAL CHEMISTRY		English	Article							FIBRIL FORMATION; ROTATING SOLIDS; NEUTRAL PH; ALZHEIMERS-DISEASE; MASS-SPECTROMETRY; ALPHA-SYNUCLEIN; H/D-EXCHANGE; IN-VITRO; A-BETA; BETA(2)-MICROGLOBULIN	Amyloid fibrils can be generated from proteins with diverse sequences and folds. Although amyloid fibrils assembled in vitro commonly involve a single protein precursor, fibrils formed in vivo can contain more than one protein sequence. How fibril structure and stability differ in fibrils composed of single proteins (homopolymeric fibrils) from those generated by co-polymerization of more than one protein sequence (heteropolymeric fibrils) is poorly understood. Here we compare the structure and stability of homo and heteropolymeric fibrils formed from human beta(2)-microglobulin and its truncated variant Delta N6. We use an array of approaches (limited proteolysis, magic angle spinning NMR, Fourier transform infrared spectroscopy, and fluorescence) combined with measurements of thermodynamic stability to characterize the different fibril types. The results reveal fibrils with different structural properties, different side-chain packing, and strikingly different stabilities. These findings demonstrate how co-polymerization of related precursor sequences can expand the repertoire of structural and thermodynamic polymorphism in amyloid fibrils to an extent that is greater than that obtained by polymerization of a single precursor alone.	[Sarell, Claire J.; Woods, Lucy A.; Ashcroft, Alison E.; Stockley, Peter G.; Radford, Sheena E.] Univ Leeds, Astbury Ctr Struct Mol Biol, Leeds LS2 9JT, W Yorkshire, England; [Sarell, Claire J.; Woods, Lucy A.; Ashcroft, Alison E.; Stockley, Peter G.; Radford, Sheena E.] Univ Leeds, Sch Mol & Cellular Biol, Leeds LS2 9JT, W Yorkshire, England; [Su, Yongchao; Griffin, Robert G.] MIT, Dept Chem, Cambridge, MA 02139 USA; [Su, Yongchao; Griffin, Robert G.] MIT, Francis Bitter Magnet Lab, Cambridge, MA 02139 USA; [Debelouchina, Galia T.] Princeton Univ, Dept Chem, Princeton, NJ 08544 USA	Radford, SE (reprint author), Univ Leeds, Astbury Ctr Struct Mol Biol, Leeds LS2 9JT, W Yorkshire, England.	s.e.radford@leeds.ac.uk		National Institutes of Health [EB003151, EB002026]; Medical Research Council [G0900958]; Wellcome Trust [075099/Z/04/Z]; NMR [094232]; Biotechnology and Biological Sciences Research Council, Swindon, United Kingdom [BB/526502/1, BB/E012558/I]	This work was supported, in whole or in part, by National Institutes of Health Grants EB003151 and EB002026. This work was also supported by Medical Research Council Grant G0900958, the Wellcome Trust (grant code 075099/Z/04/Z (LCT Premier, mass spectrometry facility) and NMR (094232)), and the Biotechnology and Biological Sciences Research Council, Swindon, United Kingdom (BB/526502/1) (BB/E012558/I, for the Synapt HDMS).		61	0	0	AMER SOC BIOCHEMISTRY MOLECULAR BIOLOGY INC	BETHESDA	9650 ROCKVILLE PIKE, BETHESDA, MD 20814-3996 USA	0021-9258		J BIOL CHEM	J. Biol. Chem.	MAR 8	2013	288	10					7327	7337		10.1074/jbc.M112.447524		11	Biochemistry & Molecular Biology	Biochemistry & Molecular Biology	104NY	WOS:000316002400052
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/log4j.properties
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/log4j.properties	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/test/resources/log4j.properties	(revision 48025)
@@ -0,0 +1,10 @@
+### Root Level ###
+log4j.rootLogger=DEBUG, CONSOLE
+
+### Configuration for the CONSOLE appender ###
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d %c - %m%n
+org.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger
+log4j.logger.eu.dnetlib.data.collector.plugins.sftp=DEBUG
+
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FilesystemIterable.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FilesystemIterable.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FilesystemIterable.java	(revision 48025)
@@ -0,0 +1,139 @@
+package eu.dnetlib.data.collector.plugins.filesystem;
+
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+import com.ximpleware.*;
+import eu.dnetlib.data.collector.plugins.oai.engine.XmlCleaner;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.json.JSONObject;
+import org.json.XML;
+
+/**
+ * The Class FilesystemIterable.
+ *
+ * @author Sandro, Michele, Andrea
+ */
+public class FilesystemIterable implements Iterable<String> {
+
+	/**
+	 * The Constant log.
+	 */
+	private static final Log log = LogFactory.getLog(FilesystemIterable.class);
+
+	/**
+	 * The base dir.
+	 */
+	private File baseDir;
+
+	/**
+	 * The extensions.
+	 */
+	private String extensions;
+
+	/**
+	 * File format (json / xml)
+	 **/
+	private String fileFormat = "xml";
+
+	private List<String> supportedFormats = Lists.newArrayList("xml", "json");
+
+	private boolean setObjIdentifierFromFileName = false;
+
+	/**
+	 * Instantiates a new filesystem iterable.
+	 *
+	 * @param descriptor the descriptor
+	 * @throws CollectorServiceException the collector service exception
+	 */
+	public FilesystemIterable(final InterfaceDescriptor descriptor) throws CollectorServiceException {
+		try {
+			final String baseUrl = descriptor.getBaseUrl();
+			URL basePath = new URL(baseUrl);
+			this.baseDir = new File(basePath.getPath());
+			if (!baseDir.exists()) { throw new CollectorServiceException(String.format("The base ULR %s, does not exist", basePath.getPath())); }
+			this.extensions = descriptor.getParams().get("extensions");
+			if (descriptor.getParams().containsKey("fileFormat")) fileFormat = descriptor.getParams().get("fileFormat");
+			if (!supportedFormats.contains(fileFormat))
+				throw new CollectorServiceException("File format " + fileFormat + " not supported. Supported formats are: " + StringUtils
+						.join(supportedFormats, ','));
+			if (descriptor.getParams().containsKey("setObjIdentifierFromFileName")) {
+				setObjIdentifierFromFileName = Boolean.parseBoolean(descriptor.getParams().get("setObjIdentifierFromFileName"));
+			}
+		} catch (MalformedURLException e) {
+			throw new CollectorServiceException("Filesystem collector failed! ", e);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see java.lang.Iterable#iterator()
+	 */
+	@Override
+	public Iterator<String> iterator() {
+		final FileSystemIterator fsi = new FileSystemIterator(baseDir.getAbsolutePath(), extensions);
+		return Iterators.transform(fsi, inputFileName -> {
+			FileInputStream fileInputStream = null;
+			try {
+				fileInputStream = new FileInputStream(inputFileName);
+				final String s = IOUtils.toString(fileInputStream);
+				if (fileFormat.equalsIgnoreCase("json")) {
+					JSONObject json = new JSONObject(s);
+					JSONObject obj = new JSONObject();
+					if (setObjIdentifierFromFileName) {
+						obj.put("header", new JSONObject().put("objIdentifier", FilenameUtils.getBaseName(inputFileName)));
+					}
+					obj.put("metadata", json);
+					log.debug(obj.toString());
+					return XML.toString(obj, "record");
+				}
+				String cleanedXML = XmlCleaner.cleanAllEntities(s.startsWith("\uFEFF") ? s.substring(1) : s);
+				if (setObjIdentifierFromFileName) {
+					return addObjIdentifier(cleanedXML, FilenameUtils.getBaseName(inputFileName));
+				} else return cleanedXML;
+			} catch (VTDException e) {
+				log.error("Cannot process with VTD to set the objIdentifier " + inputFileName);
+				return "";
+			} catch (Exception e) {
+				log.error("Unable to read " + inputFileName);
+				return "";
+			} finally {
+				if (fileInputStream != null) {
+					try {
+						fileInputStream.close();
+					} catch (IOException e) {
+						log.error("Unable to close inputstream for  " + inputFileName);
+					}
+				}
+			}
+		});
+	}
+
+	private String addObjIdentifier(String xml, String objidentifier) throws VTDException, IOException {
+		VTDGen vg = new VTDGen(); // Instantiate VTDGen
+		XMLModifier xm = new XMLModifier(); //Instantiate XMLModifier
+		vg.setDoc(xml.getBytes("UTF-8"));
+		vg.parse(false);
+		VTDNav vn = vg.getNav();
+		xm.bind(vn);
+		if (vn.toElement(VTDNav.ROOT)) {
+			xm.insertBeforeElement("<record><header><objIdentifier>" + objidentifier + "</objIdentifier></header><metadata>");
+			xm.insertAfterElement("</metadata></record>");
+		}
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		xm.output(baos);
+		return baos.toString("UTF-8");
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FilesystemCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FilesystemCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesystem/FilesystemCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,23 @@
+package eu.dnetlib.data.collector.plugins.filesystem;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+/**
+ *
+ * @author andrea
+ *
+ */
+public class FilesystemCollectorPlugin extends AbstractCollectorPlugin {
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		if (baseUrl == null || baseUrl.isEmpty()) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+		return new FilesystemIterable(interfaceDescriptor);
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileCSVCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileCSVCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileCSVCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,149 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+
+import org.apache.commons.io.input.BOMInputStream;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+/**
+ * Please use eu.dnetlib.data.collector.plugins.HttpCSVCollectorPlugin instead
+ */
+@Deprecated
+public class FileCSVCollectorPlugin extends AbstractCollectorPlugin {
+
+	private static final Log log = LogFactory.getLog(FileCSVCollectorPlugin.class);
+
+	class FileCSVIterator implements Iterator<String> {
+
+		private String next;
+
+		private BufferedReader reader;
+
+		private String separator;
+		private String quote;
+
+		public FileCSVIterator(final BufferedReader reader, final String separator, final String quote) {
+			this.reader = reader;
+			this.separator = separator;
+			this.quote = quote;
+			next = calculateNext();
+		}
+
+		@Override
+		public boolean hasNext() {
+			return next != null;
+		}
+
+		@Override
+		public String next() {
+			final String s = next;
+			next = calculateNext();
+			return s;
+		}
+
+		private String calculateNext() {
+			try {
+				final Document document = DocumentHelper.createDocument();
+				final Element root = document.addElement("csvRecord");
+
+				String newLine = reader.readLine();
+
+				// FOR SOME FILES IT RETURN NULL ALSO IF THE FILE IS NOT READY DONE
+				if (newLine == null) {
+					newLine = reader.readLine();
+				}
+				if (newLine == null) {
+					log.info("there is no line, closing RESULT SET");
+
+					reader.close();
+					return null;
+				}
+				final String[] currentRow = newLine.split(separator);
+
+				if (currentRow != null) {
+
+					for (int i = 0; i < currentRow.length; i++) {
+						final String hAttribute = (headers != null) && (i < headers.length) ? headers[i] : "column" + i;
+
+						final Element row = root.addElement("column");
+						if (i == identifierNumber) {
+							row.addAttribute("isID", "true");
+						}
+						final String value = StringUtils.isBlank(quote) ? currentRow[i] : StringUtils.strip(currentRow[i], quote);
+
+						row.addAttribute("name", hAttribute).addText(value);
+					}
+					return document.asXML();
+				}
+			} catch (final IOException e) {
+				log.error("Error calculating next csv element", e);
+			}
+			return null;
+		}
+
+		@Override
+		public void remove() {
+			throw new UnsupportedOperationException();
+		}
+
+	}
+
+	private String[] headers = null;
+	private int identifierNumber;
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+		final String header = interfaceDescriptor.getParams().get("header");
+		final String separator = StringEscapeUtils.unescapeJava(interfaceDescriptor.getParams().get("separator"));
+		final String quote = interfaceDescriptor.getParams().get("quote");
+
+		identifierNumber = Integer.parseInt(interfaceDescriptor.getParams().get("identifier"));
+		URL u = null;
+		try {
+			u = new URL(interfaceDescriptor.getBaseUrl());
+		} catch (final MalformedURLException e1) {
+			throw new CollectorServiceException(e1);
+		}
+		final String baseUrl = u.getPath();
+
+		log.info("base URL = " + baseUrl);
+
+		try {
+
+			final BufferedReader br = new BufferedReader(new InputStreamReader(new BOMInputStream(new FileInputStream(baseUrl))));
+
+			if ((header != null) && "true".equals(header.toLowerCase())) {
+				final String[] tmpHeader = br.readLine().split(separator);
+				if (StringUtils.isNotBlank(quote)) {
+					int i = 0;
+					headers = new String[tmpHeader.length];
+					for (final String h : tmpHeader) {
+						headers[i] = StringUtils.strip(h, quote);
+						i++;
+					}
+				} else headers = tmpHeader;
+			}
+			return () -> new FileCSVIterator(br, separator, quote);
+		} catch (final Exception e) {
+			throw new CollectorServiceException(e);
+		}
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/engine/HttpConnector.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/engine/HttpConnector.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/engine/HttpConnector.java	(revision 48025)
@@ -0,0 +1,190 @@
+package eu.dnetlib.data.collector.plugins.oai.engine;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.CookieHandler;
+import java.net.CookieManager;
+import java.net.CookiePolicy;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.GeneralSecurityException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.List;
+import java.util.Map;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import eu.dnetlib.data.collector.plugin.CollectorPluginErrorLogList;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+/**
+ * @author jochen, michele, andrea
+ *
+ */
+public class HttpConnector {
+
+	private static final Log log = LogFactory.getLog(HttpConnector.class);
+
+	private int maxNumberOfRetry = 6;
+	private int defaultDelay = 120; // seconds
+	private int readTimeOut = 120; // seconds
+	private String userAgent = "Mozilla/5.0 (compatible; OAI-Harvester; +http://www.openaire.eu)";
+
+    public HttpConnector(){
+    	CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); 
+    }
+    
+	/**
+	 * @param requestUrl
+	 * @return the content of the downloaded resource
+	 * @throws CollectorServiceException
+	 */
+	public String getInputSource(final String requestUrl) throws CollectorServiceException {
+		return attemptDownload(requestUrl, 1, new CollectorPluginErrorLogList());
+	}
+
+	private String attemptDownload(final String requestUrl, final int retryNumber, final CollectorPluginErrorLogList errorList)
+			throws CollectorServiceException {
+
+		if (retryNumber > maxNumberOfRetry) { throw new CollectorServiceException("Max number of retries exceeded. Cause: \n " + errorList); }
+
+		log.debug("Downloading " + requestUrl + " - try: " + retryNumber);
+		try {
+			InputStream input = null;
+
+			try {
+				final HttpURLConnection urlConn = (HttpURLConnection) new URL(requestUrl).openConnection();
+				urlConn.setInstanceFollowRedirects(false);
+				urlConn.setReadTimeout(readTimeOut * 1000);
+                                urlConn.addRequestProperty("User-Agent", userAgent);
+
+				if (log.isDebugEnabled()) {
+					logHeaderFields(urlConn);
+				}
+
+				int retryAfter = obtainRetryAfter(urlConn.getHeaderFields());
+				if (retryAfter > 0) {
+					log.warn("waiting and repeating request after " + retryAfter + " sec.");
+					Thread.sleep(retryAfter * 1000);
+					errorList.add("503 Service Unavailable");
+					return attemptDownload(requestUrl, retryNumber + 1, errorList);
+				} else if ((urlConn.getResponseCode() == HttpURLConnection.HTTP_MOVED_PERM) || (urlConn.getResponseCode() == HttpURLConnection.HTTP_MOVED_TEMP)) {
+					final String newUrl = obtainNewLocation(urlConn.getHeaderFields());
+					log.info("The requested url has been moved to " + newUrl);
+					errorList.add(String.format("%s %s. Moved to: %s", urlConn.getResponseCode(), urlConn.getResponseMessage(), newUrl));
+					return attemptDownload(newUrl, retryNumber + 1, errorList);
+				} else if (urlConn.getResponseCode() != HttpURLConnection.HTTP_OK) {
+					log.error(String.format("HTTP error: %s %s", urlConn.getResponseCode(), urlConn.getResponseMessage()));
+					Thread.sleep(defaultDelay * 1000);
+					errorList.add(String.format("%s %s", urlConn.getResponseCode(), urlConn.getResponseMessage()));
+					return attemptDownload(requestUrl, retryNumber + 1, errorList);
+				} else {
+					input = urlConn.getInputStream();
+					return IOUtils.toString(input);
+				}
+			} catch (IOException e) {
+				log.error("error while retrieving from http-connection occured: " + e, e);
+				Thread.sleep(defaultDelay * 1000);
+				errorList.add(e.getMessage());
+				return attemptDownload(requestUrl, retryNumber + 1, errorList);
+			} finally {
+				IOUtils.closeQuietly(input);
+			}
+		} catch (InterruptedException e) {
+			throw new CollectorServiceException(e);
+		}
+	}
+
+	private void logHeaderFields(final HttpURLConnection urlConn) throws IOException {
+		log.debug("StatusCode: " + urlConn.getResponseMessage());
+
+		for (Map.Entry<String, List<String>> e : urlConn.getHeaderFields().entrySet()) {
+			if (e.getKey() != null) {
+				for (String v : e.getValue()) {
+					log.debug("  key: " + e.getKey() + " - value: " + v);
+				}
+			}
+		}
+	}
+
+	private int obtainRetryAfter(final Map<String, List<String>> headerMap) {
+		for (String key : headerMap.keySet()) {
+			if ((key != null) && key.toLowerCase().equals("retry-after") && (headerMap.get(key).size() > 0) && NumberUtils.isNumber(headerMap.get(key).get(0))) { return Integer
+					.parseInt(headerMap.get(key).get(0)) + 10; }
+		}
+		return -1;
+	}
+
+	private String obtainNewLocation(final Map<String, List<String>> headerMap) throws CollectorServiceException {
+		for (String key : headerMap.keySet()) {
+			if ((key != null) && key.toLowerCase().equals("location") && (headerMap.get(key).size() > 0)) { return headerMap.get(key).get(0); }
+		}
+		throw new CollectorServiceException("The requested url has been MOVED, but 'location' param is MISSING");
+	}
+
+	/**
+	 * register for https scheme; this is a workaround and not intended for the use in trusted environments
+	 *
+	 * @throws NoSuchAlgorithmException
+	 * @throws KeyManagementException
+	 */
+	public void initTrustManager() {
+		final X509TrustManager tm = new X509TrustManager() {
+
+			@Override
+			public void checkClientTrusted(final X509Certificate[] xcs, final String string) throws CertificateException {}
+
+			@Override
+			public void checkServerTrusted(final X509Certificate[] xcs, final String string) throws CertificateException {}
+
+			@Override
+			public X509Certificate[] getAcceptedIssuers() {
+				return null;
+			}
+		};
+		try {
+			final SSLContext ctx = SSLContext.getInstance("TLS");
+			ctx.init(null, new TrustManager[] { tm }, null);
+			HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
+		} catch (GeneralSecurityException e) {
+			log.fatal(e);
+			throw new IllegalStateException(e);
+		}
+	}
+
+	public int getMaxNumberOfRetry() {
+		return maxNumberOfRetry;
+	}
+
+	public void setMaxNumberOfRetry(final int maxNumberOfRetry) {
+		this.maxNumberOfRetry = maxNumberOfRetry;
+	}
+
+	public int getDefaultDelay() {
+		return defaultDelay;
+	}
+
+	public void setDefaultDelay(final int defaultDelay) {
+		this.defaultDelay = defaultDelay;
+	}
+
+	public int getReadTimeOut() {
+		return readTimeOut;
+	}
+
+	public void setReadTimeOut(final int readTimeOut) {
+		this.readTimeOut = readTimeOut;
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiIteratorFactory.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiIteratorFactory.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oai/OaiIteratorFactory.java	(revision 48025)
@@ -0,0 +1,25 @@
+package eu.dnetlib.data.collector.plugins.oai;
+
+import java.util.Iterator;
+
+import org.springframework.beans.factory.annotation.Required;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector;
+
+public class OaiIteratorFactory {
+
+	private HttpConnector httpConnector;
+
+	public Iterator<String> newIterator(final String baseUrl, final String mdFormat, final String set, final String fromDate, final String untilDate) {
+		return new OaiIterator(baseUrl, mdFormat, set, fromDate, untilDate, httpConnector);
+	}
+
+	public HttpConnector getHttpConnector() {
+		return httpConnector;
+	}
+
+	@Required
+	public void setHttpConnector(HttpConnector httpConnector) {
+		this.httpConnector = httpConnector;
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/sftp/SftpCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,71 @@
+package eu.dnetlib.data.collector.plugins.sftp;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import com.google.common.base.Splitter;
+import com.google.common.collect.Sets;
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+/**
+ * Created by andrea on 11/01/16.
+ */
+public class SftpCollectorPlugin extends AbstractCollectorPlugin {
+
+    private SftpIteratorFactory sftpIteratorFactory;
+
+    @Override
+    public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String toDate)
+            throws CollectorServiceException {
+        final String baseUrl = interfaceDescriptor.getBaseUrl();
+        final String username = interfaceDescriptor.getParams().get("username");
+        final String password = interfaceDescriptor.getParams().get("password");
+        final String recursive = interfaceDescriptor.getParams().get("recursive");
+        final String extensions = interfaceDescriptor.getParams().get("extensions");
+
+        if ((baseUrl == null) || baseUrl.isEmpty()) {
+            throw new CollectorServiceException("Param 'baseurl' is null or empty");
+        }
+        if ((username == null) || username.isEmpty()) {
+            throw new CollectorServiceException("Param 'username' is null or empty");
+        }
+        if ((password == null) || password.isEmpty()) {
+            throw new CollectorServiceException("Param 'password' is null or empty");
+        }
+        if ((recursive == null) || recursive.isEmpty()) {
+            throw new CollectorServiceException("Param 'recursive' is null or empty");
+        }
+        if ((extensions == null) || extensions.isEmpty()) {
+            throw new CollectorServiceException("Param 'extensions' is null or empty");
+        }
+        if (fromDate != null && !fromDate.matches("\\d{4}-\\d{2}-\\d{2}")) { throw new CollectorServiceException("Invalid date (YYYY-MM-DD): " + fromDate); }
+
+        // final int fromDateIntSeconds =
+
+        return new Iterable<String>() {
+
+            boolean isRecursive = "true".equals(recursive);
+
+            Set<String> extensionsSet = parseSet(extensions);
+
+            @Override
+            public Iterator<String> iterator() {
+                return getSftpIteratorFactory().newIterator(baseUrl, username, password, isRecursive, extensionsSet, fromDate);
+            }
+
+            private Set<String> parseSet(final String extensions) {
+                return Sets.newHashSet(Splitter.on(",").omitEmptyStrings().trimResults().split(extensions));
+            }
+        };
+    }
+
+    public SftpIteratorFactory getSftpIteratorFactory() {
+        return sftpIteratorFactory;
+    }
+
+    public void setSftpIteratorFactory(SftpIteratorFactory sftpIteratorFactory) {
+        this.sftpIteratorFactory = sftpIteratorFactory;
+    }
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpIterator.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpIterator.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/ftp/FtpIterator.java	(revision 48025)
@@ -0,0 +1,181 @@
+package eu.dnetlib.data.collector.plugins.ftp;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceRuntimeException;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPFile;
+import org.apache.commons.net.ftp.FTPReply;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Set;
+
+/**
+ *
+ * @author Author: Andrea Mannocci
+ *
+ */
+public class FtpIterator implements Iterator<String> {
+
+	private static final Log log = LogFactory.getLog(FtpIterator.class);
+
+	private static final int MAX_RETRIES = 5;
+	private static final int DEFAULT_TIMEOUT = 30000;
+	private static final long BACKOFF_MILLIS = 10000;
+
+	private FTPClient ftpClient;
+	private String ftpServerAddress;
+	private String remoteFtpBasePath;
+	private String username;
+	private String password;
+	private boolean isRecursive;
+	private Set<String> extensionsSet;
+
+	private Queue<String> queue;
+
+	public FtpIterator(final String baseUrl, final String username, final String password, final boolean isRecursive,
+			final Set<String> extensionsSet) {
+		this.username = username;
+		this.password = password;
+		this.isRecursive = isRecursive;
+		this.extensionsSet = extensionsSet;
+		try {
+			URL server = new URL(baseUrl);
+			this.ftpServerAddress = server.getHost();
+			this.remoteFtpBasePath = server.getPath();
+		} catch (MalformedURLException e1) {
+			throw new CollectorServiceRuntimeException("Malformed URL exception " + baseUrl);
+		}
+
+		connectToFtpServer();
+		initializeQueue();
+	}
+
+	private void connectToFtpServer() {
+		ftpClient = new FTPClient();
+		ftpClient.setDefaultTimeout(DEFAULT_TIMEOUT);
+		ftpClient.setDataTimeout(DEFAULT_TIMEOUT);
+		ftpClient.setConnectTimeout(DEFAULT_TIMEOUT);
+		try {
+			ftpClient.connect(ftpServerAddress);
+
+			// try to login
+			if (!ftpClient.login(username, password)) {
+				ftpClient.logout();
+				throw new CollectorServiceRuntimeException("Unable to login to FTP server " + ftpServerAddress);
+			}
+			int reply = ftpClient.getReplyCode();
+			if (!FTPReply.isPositiveCompletion(reply)) {
+				ftpClient.disconnect();
+				throw new CollectorServiceRuntimeException("Unable to connect to FTP server " + ftpServerAddress);
+			}
+
+			ftpClient.enterLocalPassiveMode();
+			log.info("Connected to FTP server " + ftpServerAddress);
+			log.info(String.format("FTP collecting from %s with recursion = %s", remoteFtpBasePath, isRecursive));
+		} catch (IOException e) {
+			throw new CollectorServiceRuntimeException("Unable to connect to FTP server " + ftpServerAddress);
+		}
+	}
+
+	private void disconnectFromFtpServer() {
+		try {
+			if (ftpClient.isConnected()) {
+				ftpClient.logout();
+				ftpClient.disconnect();
+			}
+		} catch (IOException e) {
+			log.error("Failed to logout & disconnect from the FTP server", e);
+		}
+	}
+
+	private void initializeQueue() {
+		queue = new LinkedList<String>();
+		listDirectoryRecursive(remoteFtpBasePath, "");
+	}
+
+	private void listDirectoryRecursive(final String parentDir, final String currentDir) {
+		String dirToList = parentDir;
+		if (!currentDir.equals("")) {
+			dirToList += "/" + currentDir;
+		}
+		FTPFile[] subFiles;
+		try {
+			subFiles = ftpClient.listFiles(dirToList);
+			if ((subFiles != null) && (subFiles.length > 0)) {
+				for (FTPFile aFile : subFiles) {
+					String currentFileName = aFile.getName();
+					if (currentFileName.equals(".") || currentFileName.equals("..")) {
+						// skip parent directory and directory itself
+						continue;
+					}
+					if (aFile.isDirectory()) {
+						if (isRecursive) {
+							listDirectoryRecursive(dirToList, currentFileName);
+						}
+					} else {
+						// test the file for extensions compliance and, just in case, add it to the list.
+						for (String ext : extensionsSet) {
+							if (currentFileName.endsWith(ext)) {
+								queue.add(dirToList + "/" + currentFileName);
+							}
+						}
+					}
+				}
+			}
+		} catch (IOException e) {
+			throw new CollectorServiceRuntimeException("Unable to list FTP remote folder", e);
+		}
+	}
+
+	@Override
+	public boolean hasNext() {
+		if (queue.isEmpty()) {
+			disconnectFromFtpServer();
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	@Override
+	public String next() {
+		String nextRemotePath = queue.remove();
+		int nRepeat = 0;
+		while (nRepeat < MAX_RETRIES) {
+			try {
+				OutputStream baos = new ByteArrayOutputStream();
+				if (!ftpClient.isConnected()) {
+					connectToFtpServer();
+				}
+				ftpClient.retrieveFile(nextRemotePath, baos);
+
+				log.debug(String.format("Collected file from FTP: %s%s", ftpServerAddress, nextRemotePath));
+				return baos.toString();
+			} catch (IOException e) {
+				nRepeat++;
+				log.warn(String.format("An error occurred [%s] for %s%s, retrying.. [retried %s time(s)]", e.getMessage(), ftpServerAddress, nextRemotePath,
+						nRepeat));
+				disconnectFromFtpServer();
+				try {
+					Thread.sleep(BACKOFF_MILLIS);
+				} catch (InterruptedException e1) {
+					log.error(e1);
+				}
+			}
+		}
+		throw new CollectorServiceRuntimeException(String.format("Impossible to retrieve FTP file %s after %s retries. Aborting FTP collection.", nextRemotePath, nRepeat));
+	}
+
+	@Override
+	public void remove() {
+		throw new UnsupportedOperationException();
+	}
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesfrommetadata/FilesFromMetadataCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesfrommetadata/FilesFromMetadataCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/filesfrommetadata/FilesFromMetadataCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,27 @@
+/**
+ *
+ */
+package eu.dnetlib.data.collector.plugins.filesfrommetadata;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+
+/**
+ * @author sandro
+ *
+ */
+public class FilesFromMetadataCollectorPlugin extends AbstractCollectorPlugin {
+
+	/**
+	 * {@inheritDoc}
+	 * @see eu.dnetlib.data.collector.plugin.CollectorPlugin#collect(eu.dnetlib.data.collector.rmi.InterfaceDescriptor, java.lang.String, java.lang.String)
+	 */
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor arg0, final String arg1, final String arg2) throws CollectorServiceException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsIteratorFactory.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsIteratorFactory.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/oaisets/OaiSetsIteratorFactory.java	(revision 48025)
@@ -0,0 +1,26 @@
+package eu.dnetlib.data.collector.plugins.oaisets;
+
+import java.util.Iterator;
+
+import org.springframework.beans.factory.annotation.Required;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.HttpConnector;
+
+public class OaiSetsIteratorFactory {
+	
+	private HttpConnector httpConnector;
+
+	public Iterator<String> newIterator(String baseUrl) {
+		return new OaiSetsIterator(baseUrl, httpConnector);
+	}
+	
+	public HttpConnector getHttpConnector() {
+		return httpConnector;
+	}
+
+	@Required
+	public void setHttpConnector(HttpConnector httpConnector) {
+		this.httpConnector = httpConnector;
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/mongo/MongoDumpPlugin.java	(revision 48025)
@@ -0,0 +1,23 @@
+package eu.dnetlib.data.collector.plugins.mongo;
+
+import java.io.File;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+public class MongoDumpPlugin extends AbstractCollectorPlugin {
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		if (baseUrl == null || baseUrl.isEmpty()) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+		final File f = new File(baseUrl);
+		if (f.exists() == false) { throw new CollectorServiceException("the file at url " + baseUrl + " does not exists"); }
+
+		return new MongoDumpIterable(f);
+
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipIterable.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipIterable.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/archive/zip/ZipIterable.java	(revision 48025)
@@ -0,0 +1,48 @@
+package eu.dnetlib.data.collector.plugins.archive.zip;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterators;
+
+import eu.dnetlib.data.collector.plugins.oai.engine.XmlCleaner;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+
+/**
+ *
+ * @author Andrea
+ *
+ */
+public class ZipIterable implements Iterable<String> {
+
+	/** The path to .zip archive. */
+	private File zipFile;
+
+	public ZipIterable(final InterfaceDescriptor interfaceDescriptor) throws CollectorServiceException {
+		try {
+			final String zipPath = interfaceDescriptor.getBaseUrl();
+			URL zipUrl = new URL(zipPath);
+			this.zipFile = new File(zipUrl.getPath());
+			if (!zipFile.exists()) { throw new CollectorServiceException(String.format("The base ULR %s, does not exist", zipFile.getPath())); }
+		} catch (MalformedURLException e) {
+			throw new CollectorServiceException("Zip collector failed! ", e);
+		}
+	}
+
+	@Override
+	public Iterator<String> iterator() {
+		final ZipIterator zipIterator = new ZipIterator(zipFile.getAbsolutePath());
+		return Iterators.transform(zipIterator, new Function<String, String>() {
+
+			@Override
+			public String apply(final String inputRecord) {
+				return XmlCleaner.cleanAllEntities(inputRecord.startsWith("\uFEFF") ? inputRecord.substring(1) : inputRecord);
+			}
+		});
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileGZipCollectorPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileGZipCollectorPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/FileGZipCollectorPlugin.java	(revision 48025)
@@ -0,0 +1,23 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.net.URL;
+import java.util.zip.GZIPInputStream;
+
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+
+public class FileGZipCollectorPlugin extends AbstractSplittedRecordPlugin {
+
+	@Override
+	protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorServiceException {
+
+		try {
+			GZIPInputStream stream = new GZIPInputStream(new FileInputStream(new URL(baseUrl).getPath()));
+			return new BufferedInputStream(stream);
+		} catch (Exception e) {
+			throw new CollectorServiceException(e);
+		}
+	}
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/AbstractSplittedRecordPlugin.java
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/AbstractSplittedRecordPlugin.java	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/java/eu/dnetlib/data/collector/plugins/AbstractSplittedRecordPlugin.java	(revision 48025)
@@ -0,0 +1,38 @@
+package eu.dnetlib.data.collector.plugins;
+
+import java.io.BufferedInputStream;
+import java.util.Iterator;
+
+import org.apache.commons.lang.StringUtils;
+
+import eu.dnetlib.data.collector.plugin.AbstractCollectorPlugin;
+import eu.dnetlib.data.collector.rmi.CollectorServiceException;
+import eu.dnetlib.data.collector.rmi.InterfaceDescriptor;
+import eu.dnetlib.miscutils.iterators.xml.XMLIterator;
+
+public abstract class AbstractSplittedRecordPlugin extends AbstractCollectorPlugin {
+
+	@Override
+	public Iterable<String> collect(final InterfaceDescriptor interfaceDescriptor, final String fromDate, final String untilDate)
+			throws CollectorServiceException {
+		final String baseUrl = interfaceDescriptor.getBaseUrl();
+		final String element = interfaceDescriptor.getParams().get("splitOnElement");
+
+		if (StringUtils.isBlank(baseUrl)) { throw new CollectorServiceException("Param 'baseurl' is null or empty"); }
+
+		if (StringUtils.isBlank(element)) { throw new CollectorServiceException("Param 'splitOnElement' is null or empty"); }
+
+		final BufferedInputStream bis = getBufferedInputStream(baseUrl);
+
+		return new Iterable<String>() {
+
+			@Override
+			public Iterator<String> iterator() {
+				return new XMLIterator(element, bis);
+			}
+		};
+	}
+
+	abstract protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorServiceException;
+
+}
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/plugins/applicationContext-dnet-modular-collector-plugins.xml
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/plugins/applicationContext-dnet-modular-collector-plugins.xml	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/plugins/applicationContext-dnet-modular-collector-plugins.xml	(revision 48025)
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	   xmlns:p="http://www.springframework.org/schema/p"
+	   xmlns:http="http://cxf.apache.org/transports/http/configuration"
+	   xmlns="http://www.springframework.org/schema/beans"
+	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+
+
+                                    http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd">
+
+	<bean id="oaiCollectorPlugin" class="eu.dnetlib.data.collector.plugins.oai.OaiCollectorPlugin"
+		p:oaiIteratorFactory-ref="oaiIteratorFactory">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="OAI">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="format" />
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="set" p:populateFunction-ref="listOaiSetsFunction" p:type="LIST" p:optional="true" />					
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+		
+	<bean id="oaiSetsCollectorPlugin" class="eu.dnetlib.data.collector.plugins.oaisets.OaiSetsCollectorPlugin"
+		p:oaiSetsIteratorFactory-ref="oaiSetsIteratorFactory">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="oai_sets" />
+		</property>
+	</bean>
+
+	<bean id="httpCollectorPlugin" class="eu.dnetlib.data.collector.plugins.HttpCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="http">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="splitOnElement" />
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+	
+	<bean id="fileCollectorPlugin" class="eu.dnetlib.data.collector.plugins.FileCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="file">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="splitOnElement" />
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+	
+	<bean id="classpathCollectorPlugin" class="eu.dnetlib.data.collector.plugins.ClasspathCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="classpath">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="splitOnElement" />
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+	
+	<bean id="csvFileCollectorPlugin" class="eu.dnetlib.data.collector.plugins.FileCSVCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="fileCSV">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="header" />
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="separator" />
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="identifier" />
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="quote" />
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+	
+	<bean id="httpCSVCollectorPlugin" class="eu.dnetlib.data.collector.plugins.HttpCSVCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="httpCSV">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="separator" />					
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="identifier" />					
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="quote" />					
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+
+	<bean id="ftp2CollectorPlugin" class="eu.dnetlib.data.collector.plugins.ftp.FtpCollectorPlugin"
+		  p:ftpIteratorFactory-ref="ftpIteratorFactory">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="ftp">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="username" />					
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="password" />					
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="recursive" p:type="BOOLEAN" />
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="extensions" p:type="LIST" />					
+					</list>
+				</property>
+			</bean>
+		</property>
+	</bean>
+
+	<bean id="sftpCollectorPlugin" class="eu.dnetlib.data.collector.plugins.sftp.SftpCollectorPlugin"
+		  p:sftpIteratorFactory-ref="sftpIteratorFactory">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="sftp">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							  p:name="username"/>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							  p:name="password"/>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							  p:name="recursive" p:type="BOOLEAN"/>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							  p:name="extensions" p:type="LIST"/>
+					</list>
+				</property>
+			</bean>
+		</property>
+	</bean>
+	
+	<bean id="filesystemCollectorPlugin" class="eu.dnetlib.data.collector.plugins.filesystem.FilesystemCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="filesystem">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="extensions" p:type="LIST" p:optional="true"/>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+						      p:name="fileFormat" p:optional="true" />
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+						      p:name="setObjIdentifierFromFileName" p:optional="true" p:type="BOOLEAN"/>
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+	
+	
+	<bean id="filesFromMetadataCollectorPlugin" class="eu.dnetlib.data.collector.plugins.filesfrommetadata.FilesFromMetadataCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="files_from_metadata">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+						      p:name="basePath" p:optional="false">
+							<property name="populateFunction">
+								<bean class="eu.dnetlib.data.collector.plugins.filesfrommetadata.PopulateFileDownloadBasePath"/>
+							</property>
+						</bean>
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+
+
+	<bean id="filesFromMDStoreCollectorPlugin" class="eu.dnetlib.data.collector.plugins.filesfrommetadata.FilesFromMetadataCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="files_from_mdstore">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+						      p:name="basePath" p:optional="true">
+							<property name="populateFunction">
+								<bean class="eu.dnetlib.data.collector.plugins.filesfrommetadata.PopulateFileDownloadBasePath"/>
+							</property>
+						</bean>
+					</list>
+				</property>
+			</bean>
+		</property>
+	</bean>
+	
+	
+	<bean id="mongoImportPlugin" class="eu.dnetlib.data.collector.plugins.mongo.MongoDumpPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="mongoDump" />
+				
+			
+		</property>
+	</bean>
+	
+	<bean id="targzCollectorPlugin" class="eu.dnetlib.data.collector.plugins.archive.targz.TarGzCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="targz" />
+				
+		</property>
+	</bean>
+	
+	<bean id="zipCollectorPlugin" class="eu.dnetlib.data.collector.plugins.archive.zip.ZipCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="zip" />
+		</property>
+	</bean>
+	
+	<bean id="gzipFileCollectorPlugin" class="eu.dnetlib.data.collector.plugins.FileGZipCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="fileGzip">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="splitOnElement" />
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+	
+	<bean id="httpListCollectorPlugin" class="eu.dnetlib.data.collector.plugins.httplist.HttpListCollectorPlugin">
+		<property name="protocolDescriptor">
+			<bean class="eu.dnetlib.data.collector.rmi.ProtocolDescriptor" p:name="httpList">
+				<property name="params">
+					<list>
+						<bean class="eu.dnetlib.data.collector.rmi.ProtocolParameter"
+							p:name="listUrl" />
+					</list>
+				</property>			
+			</bean>
+		</property>
+	</bean>
+</beans>
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11/src/main/resources/eu/dnetlib/data/collector/applicationContext-dnet-modular-collector-service.properties
===================================================================
Index: modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11
===================================================================
--- modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11	(nonexistent)
+++ modules/dnet-modular-collector-service/tags/dnet-modular-collector-service-3.3.11	(revision 48025)

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