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

    <context:annotation-config/>

    <bean id="dataUpdateDao" class="com.armedia.acm.services.dataupdate.dao.AcmDataUpdateDao"/>

    <bean id="dataUpdateService" class="com.armedia.acm.services.dataupdate.service.AcmDataUpdateService">
        <property name="dataUpdateDao" ref="dataUpdateDao"/>
    </bean>

    <bean id="userIdGroupNameDomainUpdateDao" class="com.armedia.acm.services.dataupdate.dao.UserIdGroupNameDomainUpdateDao"/>

    <bean id="groupUuidUpdateDao" class="com.armedia.acm.services.dataupdate.dao.GroupUUIDUpdateDao"/>

    <bean id="acmDataUpdateManager" class="com.armedia.acm.services.dataupdate.service.AcmDataUpdateManager">
        <property name="dataUpdateExecutors">
            <list>
                <ref bean="userIdGroupNameDomainUpdateExecutor"/>
                <ref bean="groupRemoveUUIDExecutor"/>
                <ref bean="fileFolderParticipantsUpdateExecutor"/>
                <ref bean="triggerSolrUpdateExecutor"/>
                <ref bean="userRootFolderAccessUpdateExecutor"/>
                <ref bean="outlookFolderCreatorPasswordMd5ToSha256UpdateExecutor"/>
                <ref bean="triggerCostsheetSolrUpdateExecutor"/>
                <ref bean="triggerTimesheetSolrUpdateExecutor"/>
                <ref bean="triggerBusinessProcessSolrUpdateExecutor"/>
                <ref bean="documentRepositoryParticipantTypesUpdateExecutor"/>
                <ref bean="solrReindexAssignedObjectsExecutor"/>
                <ref bean="groupAscendantsStringUpdateExecutor"/>
                <ref bean="ocrSystemUserUpdateExecutor"/>
                <ref bean="transcribeSystemUserUpdateExecutor"/>
                <ref bean="solrReindexEcmFileExecutor"/>
                <ref bean="configurationServerRuntimeMigrationExecutor"/>
                <ref bean="solrReindexNotificationsExecutor"/>
                <ref bean="solrReindexPersonExecutor"/>
                <ref bean="acmGroupSolrReindexExecutor"/>
                <ref bean="cmisRepositoryRecycleBinContainerExecutor"/>
                <ref bean="createTaskFolderStructureInParentObjectUpdateExecutor"/>
                <ref bean="updateDueDateOnTasksExecutor"/>
                <ref bean="solrReindexCaseComplaintDocumentRepositoryExecutor"/>
                <ref bean="solrReindexOrganizationExecutor"/>
                <ref bean="createPersonFromExistingUsersExecutor"/>
                <ref bean="solrReindexTaskExecutor" />
                <ref bean="solrReindexCaseFileExecutor" />
                <ref bean="solrReindexConsultationExecutor" />
                <ref bean="createAlfrescoAndRmFoldersExecutor" />
            </list>
        </property>
        <property name="dataUpdateService" ref="dataUpdateService"/>
    </bean>

    <bean id="userRootFolderAccessUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.UserRootFolderAccessUpdateExecutor">
        <property name="fileParticipantService" ref="fileParticipantService"/>
        <property name="containerDao" ref="acmContainerFolderDao"/>
        <property name="arkPermissionEvaluator" ref="arkPermissionEvaluator"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
    </bean>

    <bean id="fileFolderParticipantsUpdateExecutor"
          class="com.armedia.acm.services.dataupdate.service.FileFolderParticipantsUpdateExecutor">
        <property name="contextHolder" ref="acmContextHolder"/>
        <property name="fileParticipantService" ref="fileParticipantService"/>
        <property name="fileDao" ref="ecmFileDao"/>
        <property name="folderDao" ref="acmFolderDao"/>
        <property name="arkPermissionEvaluator" ref="arkPermissionEvaluator"/>
    </bean>

    <bean id="cmisRepositoryRecycleBinContainerExecutor"
          class="com.armedia.acm.services.dataupdate.service.CmisRepositoryRecycleBinContainerExecutor">
        <property name="recycleBinItemService" ref="recycleBinItemServiceImpl"/>
    </bean>

    <bean id="userIdGroupNameDomainUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.UserIdGroupNameDomainUpdateExecutor">
        <property name="userDao" ref="userJpaDao"/>
        <property name="groupDao" ref="groupDao"/>
        <property name="userIdGroupNameDomainUpdateDao" ref="userIdGroupNameDomainUpdateDao"/>
        <property name="contextHolder" ref="acmContextHolder"/>
        <property name="ldapSyncService" ref="ldapSyncService"/>
    </bean>

    <bean id="groupRemoveUUIDExecutor" class="com.armedia.acm.services.dataupdate.service.GroupRemoveUUIDExecutor">
        <property name="groupDao" ref="groupDao"/>
        <property name="uuidUpdateDao" ref="groupUuidUpdateDao"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
    </bean>
    <bean id="solrReindexService" class="com.armedia.acm.services.dataupdate.service.SolrReindexService">
        <property name="schedulerService" ref="acmSchedulerService"/>
    </bean>

    <bean id="triggerSolrUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.TriggerSolrUpdateExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="triggerTimesheetSolrUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.TriggerTimesheetSolrUpdateExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="triggerCostsheetSolrUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.TriggerCostsheetSolrUpdateExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="triggerBusinessProcessSolrUpdateExecutor"
          class="com.armedia.acm.services.dataupdate.service.TriggerBusinessProcessSolrUpdateExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="documentRepositoryParticipantTypesUpdateExecutor"
          class="com.armedia.acm.services.dataupdate.service.DocumentRepositoryParticipantTypesUpdateExecutor">
        <property name="documentDao" ref="documentRepositoryDao"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
    </bean>

    <bean id="configurationServerRuntimeMigrationExecutor"
          class="com.armedia.acm.services.dataupdate.service.RolesGroupsRuntimeMigrationExecutor">
        <property name="collectionPropertiesConfigurationService" ref="collectionPropertiesConfigurationService"/>
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
        <property name="configurationContainer" ref="configurationContainer"/>
        <property name="jsonUnmarshaller" ref="jsonUnmarshaller"/>
    </bean>

    <bean id="solrReindexAssignedObjectsExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexAssignedObjectsExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
        <property name="packages" value="#{dataSourceConfig.jpaModelPackages}"/>
    </bean>

    <bean id="groupAscendantsStringUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.GroupAscendantsStringUpdateExecutor">
        <property name="groupDao" ref="groupDao"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
    </bean>

    <bean id="ocrSystemUserUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.OCRSystemUserUpdateExecutor">
        <property name="userDao" ref="userJpaDao"/>
    </bean>

    <bean id="transcribeSystemUserUpdateExecutor" class="com.armedia.acm.services.dataupdate.service.TranscribeSystemUserUpdateExecutor">
        <property name="userDao" ref="userJpaDao"/>
    </bean>

    <bean id="solrReindexEcmFileExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexEcmFileExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="solrReindexNotificationsExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexNotificationsExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="solrReindexPersonExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexPersonExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="acmGroupSolrReindexExecutor" class="com.armedia.acm.services.dataupdate.service.AcmGroupSolrReindexExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="createTaskFolderStructureInParentObjectUpdateExecutor"
          class="com.armedia.acm.services.dataupdate.service.CreateTaskFolderStructureInParentObjectUpdateExecutor">
        <property name="acmTaskService" ref="acmTaskService"/>
        <property name="acmFolderDao" ref="acmFolderDao"/>
        <property name="taskDao" ref="acmTaskDao"/>
    </bean>

    <bean id="updateDueDateOnTasksExecutor"
          class="com.armedia.acm.services.dataupdate.service.UpdateDueDateOnTasksExecutor">
        <property name="taskDao" ref="acmTaskDao"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="solrReindexCaseComplaintDocumentRepositoryExecutor"
          class="com.armedia.acm.services.dataupdate.service.SolrReindexCaseComplaintDocumentRepositoryExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="solrReindexOrganizationExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexOrganizationExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
    </bean>

    <bean id="createPersonFromExistingUsersExecutor"
          class="com.armedia.acm.services.dataupdate.service.CreatePersonFromExistingUsersExecutor">
        <property name="solrReindexService" ref="solrReindexService"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="personDao" ref="acmPersonDao"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
    </bean>

    <bean id="solrReindexTaskExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexTaskExecutor">
        <property name="solrReindexService" ref="solrReindexService" />
    </bean>

    <bean id="solrReindexCaseFileExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexCaseFileExecutor">
        <property name="solrReindexService" ref="solrReindexService" />
    </bean>

    <bean id="solrReindexConsultationExecutor" class="com.armedia.acm.services.dataupdate.service.SolrReindexConsultationExecutor">
          <property name="solrReindexService" ref="solrReindexService" />
    </bean>

    <bean id="createAlfrescoAndRmFoldersExecutor" class="com.armedia.acm.services.dataupdate.service.CreateAlfrescoAndRmFoldersExecutor">
        <property name="ecmFileService" ref="ecmFileService" />
        <property name="ecmFileConfig" ref="ecmFileConfig" />
        <property name="alfrescoRecordsService" ref="alfrescoRecordsService" />
    </bean>

</beans>
