<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="saveCaseService" class="com.armedia.acm.plugins.casefile.service.SaveCaseServiceImpl">
        <property name="caseFileDao" ref="caseFileDao"/>
        <property name="pipelineManager" ref="caseFilePipelineManager"/>
        <property name="ecmFileService" ref="ecmFileService"/>
        <property name="holidayConfigurationService" ref="holidayConfigurationService"/>
     </bean>

    <bean id="caseFilePipelineManager" class="com.armedia.acm.services.pipeline.PipelineManager">
        <property name="preSaveHandlers">
            <list value-type="com.armedia.acm.services.pipeline.handler.PipelineHandler">
                <ref bean="caseFileSetCreatorHandler"/>
            </list>
        </property>
        <property name="postSaveHandlers">
            <list value-type="com.armedia.acm.services.pipeline.handler.PipelineHandler">
                <ref bean="caseFileDueDateHandler"/>
                <ref bean="caseFileRulesHandler"/>
                <ref bean="caseFileContainerHandler"/>
                <ref bean="caseFileEcmFolderHandler"/>
                <ref bean="caseFileOutlookHandler"/>
                <ref bean="caseFileFolderStructureHandler"/>
                <ref bean="caseFileUploadAttachmentsHandler"/>
                <ref bean="caseFileStartBusinessProcessIfNeededHandler"/>
                <ref bean="casefileDocumentHandler"/>
            </list>
        </property>
    </bean>

    <!-- pre-save handlers -->
    <bean id="caseFileSetCreatorHandler" class="com.armedia.acm.plugins.casefile.pipeline.presave.CaseFileSetCreatorHandler"/>

    <bean id="caseFileContainerHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileContainerHandler">
        <property name="fileParticipantService" ref="fileParticipantService"/>
    </bean>
    <bean id="caseFileEcmFolderHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileEcmFolderHandler">
        <property name="ecmFileService" ref="ecmFileService"/>
    </bean>
    <bean id="caseFileOutlookHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileOutlookHandler">
        <property name="autoCreateFolderForCaseFile" value="#{caseConfig.autoCreateCalendarFolder}"/>
        <property name="outlookContainerCalendarService" ref="outlookContainerService"/>
        <property name="calendarAdminService" ref="outlookCalendarAdminServiceExtension"/>
    </bean>
    <bean id="caseFileFolderStructureHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileFolderStructureHandler">
        <property name="folderStructureAsString" value="#{caseConfig.folderStructure}"/>
        <property name="ecmFileService" ref="ecmFileService"/>
        <property name="acmFolderService" ref="acmFolderService"/>
    </bean>
    <bean id="caseFileStartBusinessProcessIfNeededHandler"
        class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileStartBusinessProcessIfNeededHandler">
        <property name="startBusinessProcessBusinessRule" ref="caseFileStartBusinessProcessBusinessRule"/>
        <property name="acmBpmnService" ref="processDefinitionManagementService"/>
    </bean>

    <bean id="pdfCasefileDocumentGenerator"
        class="com.armedia.acm.plugins.casefile.service.PDFCasefileDocumentGenerator"
        parent="pdfDocumentGenerator">
    </bean>

    <bean id="casefileDocumentHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CasefileDocumentHandler"
        parent="pdfCasefileDocumentGenerator">
        <property name="formsTypeCheckService" ref="formsTypeCheckService"/>
        <property name="dao" ref="caseFileDao"/>
    </bean>
    
    <bean id="caseFileAssignmentHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileAssignmentHandler">
        <property name="acmAssignmentDao" ref="acmAssignmentDao"/>
        <property name="acmObjectHistoryEventPublisher" ref="acmObjectHistoryEventPublisher"/>
    </bean>

    <bean id="caseFileUploadAttachmentsHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileUploadAttachmentsHandler">
        <property name="ecmFileService" ref="ecmFileService"/>
    </bean>

    <bean id="caseFileDueDateHandler" class="com.armedia.acm.plugins.casefile.pipeline.postsave.CaseFileDueDateHandler">
        <property name="holidayConfigurationService" ref="holidayConfigurationService"/>
    </bean>
</beans>
