1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.calendar.web;
35
36 import java.util.ArrayList;
37 import java.util.HashMap;
38 import java.util.List;
39 import java.util.Map;
40
41 import javax.servlet.http.HttpServletRequest;
42
43 import fr.paris.lutece.plugins.calendar.business.CalendarHome;
44 import fr.paris.lutece.plugins.calendar.business.CalendarSubscriberHome;
45 import fr.paris.lutece.plugins.calendar.business.SimpleEvent;
46 import fr.paris.lutece.plugins.calendar.business.parameter.CalendarParameterHome;
47 import fr.paris.lutece.plugins.calendar.service.AgendaResource;
48 import fr.paris.lutece.plugins.calendar.service.CalendarPlugin;
49 import fr.paris.lutece.portal.business.right.Right;
50 import fr.paris.lutece.portal.business.right.RightHome;
51 import fr.paris.lutece.portal.business.user.AdminUser;
52 import fr.paris.lutece.portal.service.dashboard.DashboardComponent;
53 import fr.paris.lutece.portal.service.database.AppConnectionService;
54 import fr.paris.lutece.portal.service.plugin.Plugin;
55 import fr.paris.lutece.portal.service.plugin.PluginService;
56 import fr.paris.lutece.portal.service.template.AppTemplateService;
57 import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
58 import fr.paris.lutece.util.ReferenceItem;
59 import fr.paris.lutece.util.html.HtmlTemplate;
60 import fr.paris.lutece.util.string.StringUtil;
61 import fr.paris.lutece.util.url.UrlItem;
62
63
64
65
66
67
68 public class CalendarDashboardComponent extends DashboardComponent
69 {
70 private static final int ZONE_1 = 1;
71 private static final String EMPTY_STRING = "";
72 private static final String TEMPLATE_DASHBOARD_ZONE_1 = "/admin/plugins/calendar/calendar_dashboard_zone_1.html";
73 private static final String TEMPLATE_DASHBOARD_OTHER_ZONE = "/admin/plugins/calendar/calendar_dashboard_other_zone.html";
74
75
76
77
78
79
80
81 public String getDashboardData( AdminUser user, HttpServletRequest request )
82 {
83 Right right = RightHome.findByPrimaryKey( getRight( ) );
84 Plugin plugin = PluginService.getPlugin( right.getPluginName( ) );
85 if ( !( plugin.getDbPoolName( ) != null &&
86 !AppConnectionService.NO_POOL_DEFINED.equals( plugin.getDbPoolName( ) ) ) )
87 {
88 return EMPTY_STRING;
89 }
90 UrlItem url = new UrlItem( right.getUrl( ) );
91 url.addParameter( CalendarPlugin.PLUGIN_NAME, right.getPluginName( ) );
92
93 Map<String, Object> model = new HashMap<String, Object>( );
94 List<AgendaResource> calendarsList = getCalendarsList( user, plugin );
95 ReferenceItem nbEvents = CalendarParameterHome.findByKey( Constants.PARAMETER_DASHBOARD_NB_EVENTS, plugin );
96 int nNbEvents = StringUtil.getIntValue( nbEvents.getName( ), 0 );
97
98 model.put( Constants.MARK_CALENDARS_LIST, calendarsList );
99 model.put( Constants.MARK_EVENT_LIST, getEventsList( calendarsList, plugin ) );
100 model.put( Constants.MARK_NB_EVENTS_MAX, nNbEvents );
101 model.put( Constants.MARK_NB_SUBSCRIBERS_LIST, getNbSubscribersList( calendarsList, plugin ) );
102 model.put( Constants.MARK_URL, url.getUrl( ) );
103 model.put( Constants.MARK_ICON, plugin.getIconUrl( ) );
104
105 HtmlTemplate t = AppTemplateService.getTemplate( getTemplateDashboard( ), user.getLocale( ), model );
106
107 return t.getHtml( );
108 }
109
110
111
112
113
114
115
116 private List<AgendaResource> getCalendarsList( AdminUser user, Plugin plugin )
117 {
118 List<AgendaResource> calendarsList = CalendarHome.findAgendaResourcesList( plugin );
119 return (List<AgendaResource>) AdminWorkgroupService.getAuthorizedCollection( calendarsList, user );
120 }
121
122
123
124
125
126
127
128 private Map<String, String> getNbSubscribersList( List<AgendaResource> calendarsList, Plugin plugin )
129 {
130 Map<String, String> nbSubscribersList = new HashMap<String, String>( );
131 for ( AgendaResource calendar : calendarsList )
132 {
133 int nIdCalendar = StringUtil.getIntValue( calendar.getId( ), 0 );
134 int nNbSubscribers = CalendarSubscriberHome.findSubscriberNumber( nIdCalendar, plugin );
135 nbSubscribersList.put( calendar.getId( ), nNbSubscribers + Constants.EMPTY_STRING );
136 }
137 return nbSubscribersList;
138 }
139
140
141
142
143
144
145
146 private List<SimpleEvent> getEventsList( List<AgendaResource> calendarsList, Plugin plugin )
147 {
148 ReferenceItem nextDays = CalendarParameterHome.findByKey( Constants.PARAMETER_DASHBOARD_N_NEXT_DAYS, plugin );
149 int nNextDays = StringUtil.getIntValue( nextDays.getName( ), 0 );
150 List<SimpleEvent> eventsList = new ArrayList<SimpleEvent>( );
151 for ( AgendaResource calendar : calendarsList )
152 {
153 int nIdCalendar = StringUtil.getIntValue( calendar.getId( ), 0 );
154 eventsList.addAll( CalendarHome.findEventsList( nIdCalendar, 1, nNextDays, plugin ) );
155 }
156 return eventsList;
157 }
158
159
160
161
162
163 private String getTemplateDashboard( )
164 {
165 if ( getZone( ) == ZONE_1 )
166 {
167 return TEMPLATE_DASHBOARD_ZONE_1;
168 }
169
170 return TEMPLATE_DASHBOARD_OTHER_ZONE;
171 }
172 }