<?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="getDashboardSettings" class="com.armedia.acm.plugins.dashboard.web.api.GetDashboardConfigAPIController">
        <property name="eventPublisher" ref="dashboardEventPublisher"/>
        <property name="dashboardPropertyReader" ref="dashboardPropertyReader"/>
        <property name="dashboardService" ref="dashboardService"/>
    </bean>

    <bean id="setDashboardSettings" class="com.armedia.acm.plugins.dashboard.web.api.SetDashboardConfigAPIController">
        <property name="eventPublisher" ref="dashboardEventPublisher"/>
        <property name="dashboardPropertyReader" ref="dashboardPropertyReader"/>
        <property name="dashboardService" ref="dashboardService"/>
    </bean>

    <bean id="getWidgetsByUserRoles"
        class="com.armedia.acm.plugins.dashboard.web.api.GetWidgetsByUserRolesAPIController">
        <property name="widgetDao" ref="acmWidgetDao"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="dashboardPropertyReader" ref="dashboardPropertyReader"/>
        <property name="eventPublisher" ref="widgetEventPublisher"/>
        <property name="dashboardService" ref="dashboardService"/>
        <property name="userRoleService" ref="userRoleService"/>
    </bean>

    <bean id="getRolesByWidgets" class="com.armedia.acm.plugins.dashboard.web.api.GetRolesByWidgetsAPIController">
        <property name="widgetDao" ref="acmWidgetDao"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="dashboardService" ref="dashboardService"/>
    </bean>

    <bean id="setAuthorizedWidgetRoles"
        class="com.armedia.acm.plugins.dashboard.web.api.SetAuthorizedWidgetRolesAPIController">
        <property name="widgetDao" ref="acmWidgetDao"/>
        <property name="eventPublisher" ref="widgetEventPublisher"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="dashboardService" ref="dashboardService"/>
    </bean>

    <bean id="getUserPreferredWidgetsByModule"
        class="com.armedia.acm.plugins.dashboard.web.api.GetUserPreferredWidgetsByModule">
        <property name="userPreferenceService" ref="userPreferenceService"/>
    </bean>

    <bean id="dashboardPropertyReader" class="com.armedia.acm.plugins.dashboard.service.DashboardPropertyReader"
        init-method="init">
        <property name="dashboardConfig" ref="dashboardConfig"/>
        <property name="moduleDao" ref="moduleDao"/>
        <property name="widgetDao" ref="acmWidgetDao"/>
        <property name="dashboardDao" ref="acmDashboardDao"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="moduleEventPublisher" ref="moduleEventPublisher"/>
        <property name="userPreferenceService" ref="userPreferenceService"/>
    </bean>

    <bean id="userPreferenceService" class="com.armedia.acm.plugins.dashboard.service.UserPreferenceService">
        <property name="moduleDao" ref="moduleDao"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="userPreferenceDao" ref="userPreferenceDao"/>
        <property name="widgetDao" ref="acmWidgetDao"/>
        <property name="userPreferenceEventPublisher" ref="userPreferenceEventPublisher"/>
        <property name="dashboardPropertyReader" ref="dashboardPropertyReader"/>
        <property name="userRoleService" ref="userRoleService"/>
    </bean>

    <bean id="dashboardService" class="com.armedia.acm.plugins.dashboard.service.DashboardService">
        <property name="dashboardDao" ref="acmDashboardDao"/>
        <property name="userDao" ref="userJpaDao"/>
        <property name="dashboardPropertyReader" ref="dashboardPropertyReader"/>
        <property name="widgetDao" ref="acmWidgetDao"/>
        <property name="userRoleService" ref="userRoleService"/>
        <property name="dashboardConfig" ref="dashboardConfig"/>
        <property name="eventPublisher" ref="widgetEventPublisher"/>
    </bean>

    <bean id="setUserPreferredWidgetsPerModule"
        class="com.armedia.acm.plugins.dashboard.web.api.SetUserPreferredWidgetsPerModule">
        <property name="userPreferenceService" ref="userPreferenceService"/>
    </bean>

    <bean id="siteSaveAPIController" class="com.armedia.acm.plugins.dashboard.site.web.api.SaveSiteAPIController">
        <property name="siteDao" ref="siteDao"/>
    </bean>

    <bean id="siteListAPIController" class="com.armedia.acm.plugins.dashboard.site.web.api.ListSiteAPIController">
        <property name="siteDao" ref="siteDao"/>
    </bean>

</beans>