<?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="reportPlugin" class="com.armedia.acm.pluginmanager.model.AcmPlugin">
        <property name="pluginName" value="Report Plugin"/>
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
    </bean>

    <bean id="reportService" class="com.armedia.acm.plugins.report.service.ReportServiceImpl">
        <property name="reportUrl" ref="reportResource"/>
        <property name="executeSolrQuery" ref="executeSolrQuery"/>
        <property name="searchResults">
            <bean class="com.armedia.acm.services.search.service.SearchResults"/>
        </property>
        <property name="reportsConfig" ref="pentahoReportsConfig"/>
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
        <property name="reportsToRolesConfig" ref="reportsToRolesConfig"/>
        <property name="userRoleService" ref="userRoleService"/>
        <property name="rolesConfig" ref="applicationRolesConfig"/>
        <property name="collectionPropertiesConfigurationService" ref="collectionPropertiesConfigurationService"/>
        <property name="pdfService" ref="pdfService"/>
        <property name="genericMessagesChannel" ref="genericMessagesChannel"/>
    </bean>

    <bean id="uploadReportService" class="com.armedia.acm.plugins.report.service.PentahoUploadGeneratedReportService">
        <property name="documentRepositoryDao" ref="documentRepositoryDao"/>
        <property name="acmFolderService" ref="acmFolderService"/>
        <property name="ecmFileService" ref="ecmFileService"/>
        <property name="ecmFileDao" ref="ecmFileDao"/>
        <property name="auditPropertyEntityAdapter" ref="auditPropertyEntityAdapter"/>
        <property name="reportsConfig" ref="pentahoReportsConfig"/>
    </bean>

    <bean id="downloadReportService" class="com.armedia.acm.plugins.report.service.PentahoDownloadGeneratedReportService">
        <property name="reportsConfig" ref="pentahoReportsConfig"/>
    </bean>

    <bean id="pentahoFilePropertiesService" class="com.armedia.acm.plugins.report.service.PentahoFilePropertiesService">
        <property name="reportService" ref="reportService"/>
        <property name="reportsConfig" ref="pentahoReportsConfig"/>
        <property name="configurationPropertyService" ref="configurationPropertyService"/>
    </bean>

    <bean id="pentahoRemoveGeneratedReportService" class="com.armedia.acm.plugins.report.service.PentahoRemoveGeneratedReportService">
        <property name="reportsConfig" ref="pentahoReportsConfig"/>
    </bean>

    <bean id="scheduleReportRestService" class="com.armedia.acm.plugins.report.service.PentahoScheduleReportService">
        <property name="reportsConfig" ref="pentahoReportsConfig"/>
    </bean>

    <bean id="scheduleGeneratedReportService" class="com.armedia.acm.plugins.report.service.PentahoScheduleGeneratedReportServiceImpl">
        <property name="pentahoFilePropertiesService" ref="pentahoFilePropertiesService"/>
        <property name="downloadService" ref="downloadReportService"/>
        <property name="uploadService" ref="uploadReportService"/>
        <property name="pentahoRemoveGeneratedReportService" ref="pentahoRemoveGeneratedReportService"/>
        <property name="reportsConfig" ref="pentahoReportsConfig"/>
    </bean>

    <bean id="pentahoScheduleGeneratedReportJobDescriptor"
          class="com.armedia.acm.plugins.report.service.PentahoScheduleGeneratedReportJobDescriptor" parent="acmJobDescriptor">
        <property name="pentahoScheduleReportServiceImpl" ref="scheduleGeneratedReportService"/>
    </bean>
</beans>