<?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="wfNodeSelection" class="eu.dnetlib.msro.workflows.nodes.sel.SelectiveNode"
		scope="prototype" />
		
	<!-- IS -->
	<bean id="wfNodeValidateProfiles"
		class="eu.dnetlib.msro.workflows.nodes.is.ValidateProfilesJobNode"
		scope="prototype" />

	<!-- Datasources -->
	<bean id="wfNodeSetProviderInfo"
		class="eu.dnetlib.msro.workflows.nodes.info.SetProviderInfoJobNode"
		scope="prototype" />

	<bean id="wfNodeValidateDatasource"
		class="eu.dnetlib.msro.workflows.nodes.repohi.ValidateDatasourceJobNode"
		scope="prototype" />
		
	<bean id="wfNodeVerifyDatasource"
		class="eu.dnetlib.msro.workflows.nodes.repohi.VerifyDatasourceJobNode"
		scope="prototype" />

	<bean id="wfNodeCreateObjectStore"
		class="eu.dnetlib.msro.workflows.nodes.repohi.CreateObjectStoreJobNode"
		scope="prototype" />

	<bean id="wfNodeDropContentObjectStore"
	      class="eu.dnetlib.msro.workflows.nodes.objectStore.DropContentObjectStoreJobNode"
	      scope="prototype"/>
		
	<!-- Unpack -->
	<bean id="wfNodeUnpack" 
		class="eu.dnetlib.msro.workflows.nodes.unpack.UnpackJobNode"
		p:resultSetClientFactory-ref="resultSetClientFactory"
		p:iterableResultSetFactory-ref="iterableResultSetFactory" 
		scope="prototype" />
	
	<!--  ObjectStore -->
	<bean id="wfNodeDownloadIntoObjectStore"
		class="eu.dnetlib.msro.workflows.nodes.objectStore.DownloadIntoObjectStoreJobNode"
		scope="prototype" 
		p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory"
		p:resultSetClientFactory-ref="resultSetClientFactory"
		p:iterableResultSetFactory-ref="iterableResultSetFactory"  />
	<bean id ="wfNodeDeleteObjectStore" class= "eu.dnetlib.msro.workflows.nodes.repobye.DeleteObjectStoreJobNode"
		scope="prototype" />

	<bean id="wfNodeRetrieveURLS"
		class="eu.dnetlib.msro.workflows.nodes.objectStore.RetrieveURLSJobNode"
		p:xpathMetadataId="${msro.wf.nodes.download.xpathMetadataId}"
		scope="prototype" />
		
	<!-- Download Service -->
	<bean id="wfNodeRetrieveMdStoreId" class ="eu.dnetlib.msro.workflows.nodes.objectStore.RetrieveMdStoreId"
		p:metadataFormat="${msro.wf.nodes.mdstoreSearch.format}"
		p:interpretation="${msro.wf.nodes.mdstoreSearch.interpretation}"
		scope="prototype"
	/>
	
	<bean id ="wfNodeDownloadFromMetadata" class="eu.dnetlib.msro.workflows.nodes.download.DownloadFromMetadataJobNode"		
		scope="prototype" />
		
	<bean id ="wfNodeUpdateObjectStoreSize" class="eu.dnetlib.msro.workflows.nodes.objectStore.UpdateObjectStoreSizeJobNode"		
		scope="prototype" />
	
	<!-- Collector service -->
	<bean id="wfNodeCollectRecords"
		class="eu.dnetlib.msro.workflows.nodes.collect.CollectRecordsJobNode"
		scope="prototype" />
		
	<bean id="wfNodeDateRangeCollectRecords"
		class="eu.dnetlib.msro.workflows.nodes.collect.DateRangeCollectRecordsJobNode"
		scope="prototype" />
	
	<bean id="wfNodeFindDateRangeForIncrementalHarvesting" 
		class="eu.dnetlib.msro.workflows.nodes.collect.FindDateRangeForIncrementalHarvestingJobNode" 
		scope="prototype"/>
	
	<bean id="wfNodeMdBuilder"
		class="eu.dnetlib.msro.workflows.nodes.transform.MdBuilderJobNode"
		p:xsltMappedResultSetFactory-ref="xsltResultSetFactory"
		p:mdBuilderTemplateXslt="${msro.wf.nodes.mdbuilder.xslt.template}"
		scope="prototype" />

	<!-- Transform -->
	<bean id="wfNodeTransform"
		class="eu.dnetlib.msro.workflows.nodes.transform.TransformJobNode"
		scope="prototype" />
		
	<bean id="wfNodeApplyXslt"
		class="eu.dnetlib.msro.workflows.nodes.transform.ApplyXsltJobNode"
		p:xsltMappedResultSetFactory-ref="xsltResultSetFactory"
		scope="prototype" />	
		
	<bean id="wfNodeGroovy"
		class="eu.dnetlib.msro.workflows.nodes.transform.GroovyJobNode"
		p:mappedResultSetFactory-ref="xsltResultSetFactory"
		scope="prototype" />
	
		
	<bean id="wfNodeClean"
		class="eu.dnetlib.msro.workflows.nodes.transform.CleanJobNode"
		scope="prototype" />		
	
	<!-- Index -->
	<bean id="wfNodeUpdateIndex" class="eu.dnetlib.msro.workflows.nodes.index.UpdateIndexJobNode"
		scope="prototype" 
		p:layoutToRecordStylesheet="classpath:/eu/dnetlib/msro/workflows/xslt/layoutToRecordStylesheet.xsl"
		p:xsltRSFactory-ref="xsltResultSetFactory"
		p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory"
		p:defaultIndexId="${service.msro.index.defaultIndex}"  />

	<bean id="wfNodeCreateIndex" class="eu.dnetlib.msro.workflows.nodes.index.CreateIndexJobNode"
		scope="prototype" p:defaultBackendId="${service.msro.index.defaultIndex}" />
		
	<bean id="wfNodeDeleteIndex" class="eu.dnetlib.msro.workflows.nodes.index.DeleteIndexJobNode"
		scope="prototype" p:defaultIndexId="${service.msro.index.defaultIndex}" />	
		
	<bean id="wfNodePrepareCreateIndex"
		class="eu.dnetlib.msro.workflows.nodes.index.PrepareCreateIndexJobNode"
		scope="prototype" />
	
	<!-- Database -->
	<bean id="wfNodeUpdateDb" class="eu.dnetlib.msro.workflows.nodes.db.UpdateDbJobNode"
		scope="prototype" p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory" />

	<bean id="wfNodeQueryDb" class="eu.dnetlib.msro.workflows.nodes.db.QueryDbJobNode"
		scope="prototype" />

	<bean id="wfNodeExecuteSql" class="eu.dnetlib.msro.workflows.nodes.db.ExecuteSqlJobNode"
		scope="prototype" />

	<bean id="wfNodeExecuteSqlFromEnv" class="eu.dnetlib.msro.workflows.nodes.db.ExecuteSqlFromEnvJobNode"
	      scope="prototype"/>

	<!-- MDStore -->
	<bean id="wfNodeCreateMDStore"
		class="eu.dnetlib.msro.workflows.nodes.repohi.CreateMDStoreJobNode"
		scope="prototype" />

	<bean id="wfNodeStoreMDStoreRecords"
		class="eu.dnetlib.msro.workflows.nodes.mdstore.StoreMDStoreRecordsJobNode"
		scope="prototype" p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory" />

	<bean id="wfNodeFetchMDStoreRecords"
		class="eu.dnetlib.msro.workflows.nodes.mdstore.FetchMDStoreRecordsJobNode"
		scope="prototype" />
		
	<bean id="wfNodeFetchMultipleMDStoreRecords"
		class="eu.dnetlib.msro.workflows.nodes.mdstore.FetchMultipleMDStores"
		scope="prototype" />

	<bean id="wfNodeMDStoreToApiExtraField"
		class="eu.dnetlib.msro.workflows.nodes.info.MDStoreToApiExtraFieldJobNode"
		scope="prototype" />
		
	<bean id="wfNodeObjectStoreToApiExtraField"
		class="eu.dnetlib.msro.workflows.nodes.info.ObjectStoreToApiExtraFieldJobNode"
		scope="prototype" />
		
	<bean id="wfNodeRemoveApiExtraFields"
		class="eu.dnetlib.msro.workflows.nodes.info.RemoveApiExtraFieldsJobNode"
		scope="prototype" />
		
	<bean id="wfNodeSetFormatInfo"
		class="eu.dnetlib.msro.workflows.nodes.SetFormatInfoJobNode"
		scope="prototype" />
		
	<bean id="wfNodeSetEnvParameter"
		class="eu.dnetlib.msro.workflows.nodes.SetEnvParameterJobNode"
		scope="prototype" />
		
</beans>
