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

    <bean id="addCorrespondenceTemplate" class="com.armedia.acm.plugins.admin.web.api.AddCorrespondenceTemplatesAPI"></bean>

    <bean id="downloadCorrespondenceTemplate" class="com.armedia.acm.plugins.admin.web.api.TemplateDownloadControllerAPI">
        <property name="correspondenceFolderName" value="${user.home}/.arkcase/acm/correspondenceTemplates"/>
        <property name="emailTemplateFolderName" value="${user.home}/.arkcase/acm/templates"/>
    </bean>

    <bean id="listCorrespondenceTemplates" class="com.armedia.acm.plugins.admin.web.api.ListAllTemplatesControllerAPI"></bean>

    <bean id="correspondenceTemplateController" class="com.armedia.acm.plugins.admin.web.api.CorrespondenceTemplateAPIController">
        <property name="correspondenceService" ref="correspondenceService"/>
        <property name="correspondenceFolderName" value="${user.home}/.arkcase/acm/correspondenceTemplates"/>
        <property name="emailTemplatesFolderName" value="${user.home}/.arkcase/acm/templates"/>
    </bean>

    <bean id="correspondenceMergeFieldController" class="com.armedia.acm.plugins.admin.web.api.CorrespondenceMergeFieldAPIController">
        <property name="correspondenceService" ref="correspondenceService"/>
    </bean>

    <!-- Label management API -->
    <bean id="labelManagementRetrieveResource" class="com.armedia.acm.plugins.admin.web.api.LabelManagementRetrieveResource">
        <property name="labelManagementService" ref="labelManagementService"/>
    </bean>

    <bean id="labelManagementResetResource" class="com.armedia.acm.plugins.admin.web.api.LabelManagementResetResource">
        <property name="labelManagementService" ref="labelManagementService"/>
    </bean>

    <bean id="labelManagementUpdateResource" class="com.armedia.acm.plugins.admin.web.api.LabelManagementUpdateResource">
        <property name="labelManagementService" ref="labelManagementService"/>
    </bean>

    <bean id="labelManagementRetrieveAdminResource" class="com.armedia.acm.plugins.admin.web.api.LabelManagementRetrieveAdminResource">
        <property name="labelManagementService" ref="labelManagementService"/>
    </bean>

    <bean id="labelManagementRetrieveSettings" class="com.armedia.acm.plugins.admin.web.api.LabelManagementRetrieveSettings">
        <property name="labelManagementService" ref="labelManagementService"/>
    </bean>

    <bean id="labelManagementUpdateSettings" class="com.armedia.acm.plugins.admin.web.api.LabelManagementUpdateSettings">
        <property name="labelManagementService" ref="labelManagementService"/>
        <property name="objectConverter" ref="objectConverter"/>
    </bean>

    <bean id="labelManagementRetrieveDefaultLanguage" class="com.armedia.acm.plugins.admin.web.api.LabelManagementRetrieveDefaultLanguage">
        <property name="labelManagementService" ref="labelManagementService"/>
    </bean>

    <bean id="labelManagementRetrieveNamespaces" class="com.armedia.acm.plugins.admin.web.api.LabelManagementRetrieveNamespaces">
        <property name="labelsConfiguration" ref="labelsConfiguration"/>
    </bean>

    <!-- Application properties management-->

    <bean id="ApplicationPropertiesAPIController"
        class="com.armedia.acm.plugins.admin.web.api.ApplicationPropertiesAPIController">
        <property name="applicationPropertiesManagementService" ref="applicationPropertiesManagementService"/>
    </bean>

    <bean id="ldapConfigurationRetrieveDirectories" class="com.armedia.acm.plugins.admin.web.api.LdapConfigurationRetrieveDirectories">
        <property name="ldapConfigurationService" ref="ldapConfigurationService"/>
    </bean>

    <bean id="ldapConfigurationCreateDirectory" class="com.armedia.acm.plugins.admin.web.api.LdapConfigurationCreateDirectory">
        <property name="ldapConfigurationService" ref="ldapConfigurationService"/>
    </bean>

    <bean id="ldapConfigurationDeleteDirectory" class="com.armedia.acm.plugins.admin.web.api.LdapConfigurationDeleteDirectory">
        <property name="ldapConfigurationService" ref="ldapConfigurationService"/>
    </bean>

    <bean id="ldapConfigurationUpdateDirectory" class="com.armedia.acm.plugins.admin.web.api.LdapConfigurationUpdateDirectory">
        <property name="ldapConfigurationService" ref="ldapConfigurationService"/>
    </bean>

    <!-- Roles Priveleges API-->
    <bean id="rolesPrivilegesCreateRole" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesCreateRole">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <bean id="rolesPrivilegesUpdateRole" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesUpdateRole">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <bean id="rolesPrivilegesAddRolesPrivileges" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesAddRolesPrivileges">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <bean id="rolesPrivilegesRemoveRolesPrivileges" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesRemoveRolesPrivileges">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <bean id="rolesPrivilegesRetrieveRoles" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesRetrieveRoles">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <bean id="rolesPrivilegesRetrievePrivileges" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesRetrievePrivileges">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <bean id="rolesPrivilegesRetrieveRolePrivileges" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesRetrieveRolePrivileges">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <bean id="rolesPrivilegesRetrieveRolesByPrivilege"
        class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesRetrieveRolesByPrivilege">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
        <property name="functionalAccessService" ref="functionalAccessService"/>
    </bean>

    <bean id="rolesPrivilegesUpdateRolePrivileges" class="com.armedia.acm.plugins.admin.web.api.RolesPrivilegesUpdateRolePrivileges">
        <property name="rolesPrivilegesService" ref="rolesPrivilegesService"/>
    </bean>

    <!-- Workflow Configuration -->

    <bean id="workflowConfigurationRetrieveWorkflows" class="com.armedia.acm.plugins.admin.web.api.WorkflowConfigurationRetrieveWorkflows">
        <property name="workflowConfigurationService" ref="workflowConfigurationService"/>
    </bean>

    <bean id="workflowConfigurationRetrieveHistory" class="com.armedia.acm.plugins.admin.web.api.WorkflowConfigurationRetrieveHistory">
        <property name="workflowConfigurationService" ref="workflowConfigurationService"/>
    </bean>

    <bean id="workflowConfigurationRetrieveBpmnFile" class="com.armedia.acm.plugins.admin.web.api.WorkflowConfigurationRetrieveBpmnFile">
        <property name="workflowConfigurationService" ref="workflowConfigurationService"/>
    </bean>

    <bean id="workflowConfigurationReplaceBpmnFile" class="com.armedia.acm.plugins.admin.web.api.WorkflowConfigurationReplaceBpmnFile">
        <property name="workflowConfigurationService" ref="workflowConfigurationService"/>
    </bean>

    <bean id="workflowConfigurationMakeActive" class="com.armedia.acm.plugins.admin.web.api.WorkflowConfigurationMakeActive">
        <property name="workflowConfigurationService" ref="workflowConfigurationService"/>
    </bean>

    <bean id="workflowConfigurationDiagramAPIController"
        class="com.armedia.acm.plugins.admin.web.api.WorkflowConfigurationDiagramAPIController">
        <property name="acmBpmnService" ref="processDefinitionManagementService"/>
    </bean>

    <!-- Link forms Workflows -->

    <bean id="linkFormsWorkflowsRetrieveConfiguration"
        class="com.armedia.acm.plugins.admin.web.api.LinkFormsWorkflowsRetrieveConfiguration">
        <property name="linkFormsWorkflowsService" ref="linkFormsWorkflowsService"/>
    </bean>

    <bean id="linkFormsWorkflowsUpdateConfiguration" class="com.armedia.acm.plugins.admin.web.api.LinkFormsWorkflowsUpdateConfiguration">
        <property name="linkFormsWorkflowsService" ref="linkFormsWorkflowsService"/>
    </bean>

    <!-- Custom CSS -->

    <bean id="customCssRetrieveFile" class="com.armedia.acm.plugins.admin.web.api.CustomCssRetrieveFile">
        <property name="customCssService" ref="customCssService"/>
    </bean>

    <bean id="customCssUpdateFile" class="com.armedia.acm.plugins.admin.web.api.CustomCssUpdateFile">
        <property name="customCssService" ref="customCssService"/>
    </bean>

    <!-- Custom Logo -->
    <bean id="customLogoRetrieveFile" class="com.armedia.acm.plugins.admin.web.api.CustomLogoRetrieveFile">
        <property name="customLogoService" ref="customLogoService"/>
    </bean>

    <bean id="customLogoUploadFile" class="com.armedia.acm.plugins.admin.web.api.CustomLogoUploadFile">
        <property name="customLogoService" ref="customLogoService"/>
        <property name="fileConfigurationService" ref="fileConfigurationServiceImpl"/>
    </bean>

    <!-- Module Configuration -->
    <bean id="moduleConfigurationRetrieveModules" class="com.armedia.acm.plugins.admin.web.api.ModuleConfigurationRetrieveModules">
        <property name="moduleConfigurationService" ref="moduleConfigurationService"/>
    </bean>

    <bean id="templateUpload" class="com.armedia.acm.plugins.admin.model.TemplateUpload"/>

    <bean id="getPlainFormsAPIController" class="com.armedia.acm.plugins.admin.web.api.GetPlainFormsAPIController">
        <property name="plainConfigurationFormFactory" ref="plainConfigurationFormFactory"/>
    </bean>

    <bean id="deletePlainFormAPIController" class="com.armedia.acm.plugins.admin.web.api.DeletePlainFormAPIController">
        <property name="plainConfigurationFormFactory" ref="plainConfigurationFormFactory"/>
        <property name="plainFormPropertiesLocation" value="#{ systemProperties ['user.home'] }/.arkcase/acm/acm-forms-plain.properties"/>
        <property name="propertyFileManager" ref="propertyFileManager"/>
    </bean>

    <bean id="getPlainFormTargetsAPIController" class="com.armedia.acm.plugins.admin.web.api.GetPlainFormTargetsAPIController">
        <property name="plainConfigurationFormFactory" ref="plainConfigurationFormFactory"/>
    </bean>

    <!-- CMIS configuration API -->
    <bean id="cmisConfigurationRetrieveDirectories" class="com.armedia.acm.plugins.admin.web.api.CmisConfigurationRetrieveConfigs">
        <property name="cmisConfigurationPropertiesService" ref="cmisConfigurationPropertiesService"/>
    </bean>

    <bean id="cmisConfigurationCreateDirectory" class="com.armedia.acm.plugins.admin.web.api.CmisConfigurationCreateConfig">
        <property name="cmisConfigurationService" ref="cmisConfigurationService"/>
    </bean>

    <bean id="cmisConfigurationDeleteDirectory" class="com.armedia.acm.plugins.admin.web.api.CmisConfigurationDeleteConfig">
        <property name="cmisConfigurationService" ref="cmisConfigurationService"/>
    </bean>

    <bean id="cmisConfigurationUpdateDirectory" class="com.armedia.acm.plugins.admin.web.api.CmisConfigurationUpdateConfig">
        <property name="cmisConfigurationService" ref="cmisConfigurationService"/>
    </bean>

    <bean id="googleAnalyticsConfigAPIController" class="com.armedia.acm.plugins.admin.web.api.GoogleAnalyticsConfigAPIController">
        <property name="googleAnalyticsConfigService" ref="googleAnalyticsConfigService"/>
    </bean>

    <bean id="exchangeConfigurationAPIController" class="com.armedia.acm.plugins.admin.web.api.ExchangeConfigurationAPIController">
        <property name="exchangeConfigurationService" ref="exchangeConfigurationService"/>
    </bean>

    <bean id="emailSenderConfigurationAPIController" class="com.armedia.acm.plugins.admin.web.api.EmailSenderConfigurationAPIController">
        <property name="emailSenderConfigurationService" ref="emailSenderConfigurationService"/>
    </bean>

    <bean id="emailReceiverConfigurationAPIController"
        class="com.armedia.acm.plugins.admin.web.api.EmailReceiverConfigurationAPIController">
        <property name="emailReceiverConfigurationService" ref="emailReceiverConfigurationService"/>
    </bean>

    <bean id="cmisConfigurationUrlValidation" class="com.armedia.acm.plugins.admin.web.api.CmisConfigurationUrlValidation">
        <property name="cmisConfigurationService" ref="cmisConfigurationService"/>
    </bean>

    <bean id="getTranscribeConfigurationApiController"
        class="com.armedia.acm.plugins.admin.web.api.GetTranscribeConfigurationAPIController">
        <property name="arkCaseTranscribeService" ref="arkCaseTranscribeService"/>
    </bean>

    <bean id="saveTranscribeConfigurationApiController"
        class="com.armedia.acm.plugins.admin.web.api.SaveTranscribeConfigurationAPIController">
        <property name="arkCaseTranscribeService" ref="arkCaseTranscribeService"/>
    </bean>

    <bean id="getOCRConfigurationApiController"
        class="com.armedia.acm.plugins.admin.web.api.GetOCRConfigurationAPIController">
        <property name="arkCaseOCRService" ref="arkCaseOCRService"/>
    </bean>

    <bean id="getAWSTranscribeConfigurationApiController"
        class="com.armedia.acm.plugins.admin.web.api.GetAWSTranscribeConfigurationAPIController">
        <property name="awsTranscribeCredentialsConfigurationService" ref="awsTranscribeCredentialsConfigurationService"/>
        <property name="awsTranscribeConfigurationService" ref="awsTranscribeConfigurationService"/>
    </bean>

    <bean id="saveAWSTranscribeConfigurationApiController"
        class="com.armedia.acm.plugins.admin.web.api.SaveAWSTranscribeConfigurationAPIController">
        <property name="awsTranscribeCredentialsConfigurationService" ref="awsTranscribeCredentialsConfigurationService"/>
        <property name="awsTranscribeConfigurationService" ref="awsTranscribeConfigurationService"/>
    </bean>

    <bean id="saveOCRConfigurationApiController"
        class="com.armedia.acm.plugins.admin.web.api.SaveOCRConfigurationAPIController">
        <property name="arkCaseOCRService" ref="arkCaseOCRService"/>
    </bean>

    <bean id="pdfConversionConfigurationAPIController"
        class="com.armedia.acm.plugins.admin.web.api.PDFConversionConfigurationAPIController">
        <property name="pdfConversionConfigurationService" ref="pdfConversionConfigurationService"/>
    </bean>

    <bean id="documentUploadPolicyConfigurationAPIController"
        class="com.armedia.acm.plugins.admin.web.api.DocumentUploadPolicyConfigurationAPIController">
        <property name="documentUploadPolicyConfigurationService" ref="documentUploadPolicyConfigurationService"/>
    </bean>

    <bean id="outgoingIncomingEmailConversionConfigurationAPIController" class="com.armedia.acm.plugins.admin.web.api.OutgoingIncomingEmailConversionAPIController">
        <property name="outgoingIncomingEmailConversionConfigurationService" ref="outgoingIncomingEmailConversionConfigurationService"/>
    </bean>

    <bean id="missingLabelCheckController" class="com.armedia.acm.plugins.admin.web.api.MissingLabelCheckControllerAPI">
        <property name="labelCheckService" ref="labelCheckService"/>
    </bean>

    <bean id="dataAccessControlAPIController"
        class="com.armedia.acm.plugins.admin.web.api.DataAccessControlAPIController">
        <property name="dataAccessControlService" ref="dataAccessControlService"/>
    </bean>

    <bean id="recycleBinItemController" class="com.armedia.acm.plugins.admin.web.api.RecycleBinItemController">
        <property name="recycleBinItemService" ref="recycleBinItemServiceImpl"/>
    </bean>

    <bean id="getApplicationVersionAPIController"
        class="com.armedia.acm.plugins.admin.web.api.GetApplicationVersionAPIController">
        <property name="applicationMetaInfoService" ref="applicationMetaInfoService"/>
    </bean>

    <bean id="acmSchedulerAPIController" class="com.armedia.acm.plugins.admin.web.api.AcmSchedulerAPIController">
        <property name="schedulerService" ref="acmSchedulerService"/>
    </bean>

    <bean id="resetConfigurationAPIController" class="com.armedia.acm.plugins.admin.web.api.ResetConfigurationAPIController">
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
        <property name="acmBpmnService" ref="processDefinitionManagementService"/>
    </bean>

</beans>
