<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <!-- Importer and Exporter Components -->

    <bean id="viewParser" class="org.alfresco.repo.importer.view.ViewParser">
        <property name="namespaceService">
            <ref bean="namespaceService" />
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService" />
        </property>
    </bean>

    <bean id="importerComponent" class="org.alfresco.repo.importer.ImporterComponent">
        <!-- For now, hard-wire the view parser -->
        <property name="namespaceService">
            <ref bean="NamespaceService" />
        </property>
        <property name="dictionaryService">
            <ref bean="DictionaryService" />
        </property>
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="contentService">
            <ref bean="ContentService" />
        </property>
        <property name="ruleService">
            <ref bean="RuleService" />
        </property>
        <property name="permissionService">
        	<ref bean="PermissionService" />
        </property>
        <property name="authorityService">
        	<ref bean="AuthorityService" />
        </property>
        <property name="authenticationService">
        	<ref bean="AuthenticationService" />
        </property>
        <property name="viewParser">
            <ref bean="viewParser" />
        </property>
        <property name="behaviourFilter">
            <ref bean="policyBehaviourFilter" />
        </property>
        <property name="searchService">
            <ref bean="searchService" />
        </property>
        <property name="ownableService">
        	<ref bean="ownableService" />
        </property>
    </bean>

    <bean id="exporterComponent" class="org.alfresco.repo.exporter.ExporterComponent">
        <property name="namespaceService">
            <ref bean="NamespaceService" />
        </property>
        <property name="dictionaryService">
            <ref bean="DictionaryService" />
        </property>
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
        <property name="searchService">
            <ref bean="SearchService" />
        </property>
        <property name="contentService">
            <ref bean="ContentService" />
        </property>
        <property name="descriptorService">
            <ref bean="DescriptorService" />
        </property>
        <property name="authenticationService">
            <ref bean="AuthenticationService" />
        </property>
        <property name="permissionService">
            <ref bean="PermissionService" />
        </property>
    </bean>

	<bean id="repositoryExporterComponent" class="org.alfresco.repo.exporter.RepositoryExporterComponent">
		<property name="exporterService">
			<ref bean="ExporterService" />
		</property>
		<property name="mimetypeService">
			<ref bean="mimetypeService" />
		</property>
		<property name="fileFolderService">
			<ref bean="FileFolderService" />
		</property>
		<property name="nodeService">
			<ref bean="NodeService" />
		</property>
        <property name="systemExporter">
            <ref bean="systemExporterImporter" />
        </property>
		<property name="stores">
            <list>
                <props>
                    <prop key="storeRef">system://system</prop>
                    <prop key="packageName">system</prop>
                </props>
                <props>
                    <prop key="storeRef">${alfresco_user_store.store}</prop>
                    <prop key="packageName">users</prop>
                </props>
                <props>
                    <prop key="storeRef">${spaces.store}</prop>
                    <prop key="packageName">spaces</prop>
                </props>
                <props>
                    <prop key="storeRef">${spaces.archive.store}</prop>
                    <prop key="packageName">spaces_archive</prop>
                </props>
                <props>
                    <prop key="storeRef">workspace://lightWeightVersionStore</prop>
                    <prop key="packageName">versions</prop>
                </props>
            </list>
		</property>
	</bean>

    <bean id="systemExporterImporter" class="org.alfresco.repo.importer.system.SystemExporterImporter">
      <property name="nodeService">
         <ref bean="nodeService" />
      </property>      
      <property name="patchDao">
         <ref bean="patchDaoComponent" />
      </property>
      <property name="versionDao">
         <ref bean="versionCounterDaoComponent" />
      </property>
    </bean>
    

    <!-- System Info Importer -->
    
    <bean id="systemInfoImporter" class="org.alfresco.repo.importer.system.SystemInfoBootstrap" abstract="true">
        <property name="transactionService">
            <ref bean="transactionComponent"/>
        </property>
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
        <property name="authenticationComponent">
            <ref bean="authenticationComponent" />
        </property>
        <property name="systemImporter">
            <ref bean="systemExporterImporter" />
        </property>
        <property name="mustNotExistStoreUrls">
            <list>
                <value>${system.store}</value>
            </list>
        </property>
    </bean>

	<!-- General Repository Store Importer -->

    <bean id="storeImporter" class="org.alfresco.repo.importer.ImporterBootstrap" abstract="true">
        <property name="transactionService">
            <ref bean="transactionComponent"/>
        </property>
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
        <property name="importerService">
            <ref bean="importerComponent"/>
        </property>
        <property name="namespaceService">
            <ref bean="namespaceService"/>
        </property>
        <property name="authenticationComponent">
            <ref bean="authenticationComponent" />
        </property>
        <property name="allowWrite">
            <value>${server.transaction.allow-writes}</value>
        </property>
        <!-- To specify a locale other than the system default, uncomment the following
        <property name="locale">
            <value>en_GB</value>
        </property>
        -->
	</bean>


	<!--  -->
	<!--  Store specific Importers -->
	<!--  -->
	
    <bean id="userStoreImporter" parent="storeImporter" abstract="true">
        <property name="storeUrl">
            <value>${alfresco_user_store.store}</value>
        </property>
        <property name="configuration">
            <props>
                <prop key="alfresco_user_store.system_container.childname">${alfresco_user_store.system_container.childname}</prop>
                <prop key="alfresco_user_store.user_container.childname">${alfresco_user_store.user_container.childname}</prop>
                <prop key="alfresco_user_store.authorities_container.childname">${alfresco_user_store.authorities_container.childname}</prop>
            </props>
        </property>
    </bean>

    <bean id="systemStoreImporter" parent="storeImporter" abstract="true">
        <property name="storeUrl">
            <value>${system.store}</value>
        </property>
        <property name="mustNotExistStoreUrls">
            <list>
                <value>${spaces.store}</value>
            </list>
        </property>
        <property name="configuration">
            <props>
                <prop key="version.major">${version.major}</prop>
                <prop key="version.minor">${version.minor}</prop>
                <prop key="version.revision">${version.revision}</prop>
                <prop key="version.build">${version.build}</prop>
                <prop key="version.label">${version.label}</prop>
                <prop key="version.schema">${version.schema}</prop>
                <prop key="version.edition">${version.edition}</prop>
                <prop key="system.descriptor.childname">${system.descriptor.childname}</prop>
                <prop key="system.descriptor.current.childname">${system.descriptor.current.childname}</prop>
            </props>
        </property>
    </bean>

    <bean id="spacesArchiveStoreImporter" parent="storeImporter" abstract="true">
        <property name="storeUrl">
            <value>${spaces.archive.store}</value>
        </property>
        <property name="mustNotExistStoreUrls">
            <list>
                <value>${spaces.archive.store}</value>
            </list>
        </property>
<!--        
        <property name="configuration">
            <props>
            </props>
        </property>
-->
    </bean>

    <bean id="spacesStoreImporter" parent="storeImporter" abstract="true">
        <property name="storeUrl">
            <value>${spaces.store}</value>
        </property>
        <property name="configuration">
            <props>
                <prop key="spaces.company_home.childname">${spaces.company_home.childname}</prop>
                <prop key="spaces.guest_home.childname">${spaces.guest_home.childname}</prop>
                <prop key="system.system_container.childname">${system.system_container.childname}</prop>
                <prop key="system.people_container.childname">${system.people_container.childname}</prop>
                <prop key="spaces.dictionary.childname">${spaces.dictionary.childname}</prop>
                <prop key="spaces.templates.childname">${spaces.templates.childname}</prop>
                <prop key="spaces.templates.content.childname">${spaces.templates.content.childname}</prop>
                <prop key="spaces.templates.email.childname">${spaces.templates.email.childname}</prop>
                <prop key="spaces.savedsearches.childname">${spaces.savedsearches.childname}</prop>
                <prop key="spaces.scripts.childname">${spaces.scripts.childname}</prop>
            </props>
        </property>
    </bean>

    <bean id="versionStoreImporter" parent="storeImporter" abstract="true">
        <property name="storeUrl">
            <value>workspace://lightWeightVersionStore</value>
        </property>
    </bean>

</beans>
