<?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>
