<?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:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- simple logging handler -->
    <bean id="ecmEventHandler" class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmEventHandler"/>

    <bean id="ecmFolderCreatedEventHandler" class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmFolderCreatedEventHandler">
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="folderDao" ref="acmFolderDao"/>
        <property name="folderService" ref="acmFolderService"/>
        <property name="fileParticipantService" ref="fileParticipantService"/>
        <property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
    </bean>

    <bean id="ecmFileCreatedEventHandler" class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmFileCreatedEventHandler">
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="folderService" ref="acmFolderService"/>
        <property name="fileService" ref="ecmFileService"/>
        <property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
    </bean>

    <bean id="ecmFileMovedEventHandler" class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmFileFolderMovedEventHandler">
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="fileService" ref="ecmFileService"/>
        <property name="folderService" ref="acmFolderService"/>
        <property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
    </bean>

    <bean id="ecmFileCopiedEventHandler" class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmFileFolderCopiedEventHandler">
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="fileDao" ref="ecmFileDao"/>
        <property name="fileService" ref="ecmFileService"/>
        <property name="folderService" ref="acmFolderService"/>
        <property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
    </bean>

    <bean id="ecmFileFolderRenamedEventHandler" class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmFileFolderRenamedEventHandler">
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="folderService" ref="acmFolderService"/>
        <property name="fileService" ref="ecmFileService"/>
        <property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
    </bean>

    <bean id="ecmFileFolderMetadataUpdatedEventHandler"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmFileFolderMetadataUpdatedEventHandler">
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="folderDao" ref="acmFolderDao"/>
        <property name="fileDao" ref="ecmFileDao"/>
        <property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
        <property name="updateMetadataConfig" ref="updateMetadataConfig"/>
    </bean>

    <bean id="ecmNodeDeletedEventHandler" class="com.armedia.acm.plugins.ecm.service.sync.impl.EcmNodeDeletedEventHandler">
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="fileService" ref="ecmFileService"/>
        <property name="folderService" ref="acmFolderService"/>
        <property name="folderAndFilesUtils" ref="folderAndFilesUtils"/>
    </bean>

    <bean id="alfrescoSyncScheduledJobDescriptor" class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoSyncScheduledBean"
          parent="acmJobDescriptor">
        <property name="alfrescoSyncService" ref="arkcase-alfrescoSyncService"/>
        <property name="alfrescoSyncConfig" ref="alfrescoSyncConfig"/>
    </bean>

    <bean id="arkcase-alfrescoSyncService" class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoSyncService">
        <property name="auditApplicationRestClient" ref="arkcase-auditApplicationRestClient"/>
        <property name="auditApplications">
            <map>
                <entry key="AuditArkCaseExtractors" value-ref="arkcase-nodeServiceCreateReader"/>
                <entry key="AuditArkCaseCreate" value-ref="arkcase-fileFolderServiceCreateReader"/>
                <entry key="AuditArkCaseDeleteExtractors" value-ref="arkcase-nodeServiceDeleteReader"/>
                <entry key="AuditArkCaseMoveFrom" value-ref="arkcase-fileFolderServiceMoveReader"/>
                <entry key="AuditArkCaseCopy" value-ref="arkcase-copyServiceCopyReader"/>
                <entry key="AuditArkCaseRename" value-ref="arkcase-fileFolderServiceRenameReader"/>
                <entry key="AuditArkCaseMetadata" value-ref="arkcase-nodeServiceMetadataUpdateReader"/>
            </map>
        </property>
    </bean>

    <bean id="arkcase-nodeServiceCreateReader"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoNodeServiceCreateNodeAuditResponseReader"/>
    <bean id="arkcase-nodeServiceDeleteReader"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoNodeServiceDeleteNodeAuditResponseReader"/>
    <bean id="arkcase-fileFolderServiceCreateReader"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoFileFolderServiceCreateAuditResponseReader"/>
    <bean id="arkcase-fileFolderServiceMoveReader"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoFileFolderServiceMoveAuditResponseReader"/>
    <bean id="arkcase-copyServiceCopyReader"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoCopyServiceCopyAuditResponseReader"/>
    <bean id="arkcase-fileFolderServiceRenameReader"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoFileFolderServiceRenameAuditResponseReader"/>
    <bean id="arkcase-nodeServiceMetadataUpdateReader"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoNodeServiceUpdateMetadataAuditResponseReader"/>

    <bean id="arkcase-auditApplicationRestClient"
          class="com.armedia.acm.plugins.ecm.service.sync.impl.AlfrescoAuditApplicationRestClient">
        <property name="alfrescoSyncConfig" ref="alfrescoSyncConfig"/>
    </bean>

    <bean id="alfrescoSyncConfig" class="com.armedia.acm.plugins.ecm.service.sync.AlfrescoSyncConfig" scope="refresh">
        <aop:scoped-proxy/>
    </bean>
</beans>