View Javadoc
1   package fr.paris.lutece.plugins.calendar.business.rss;
2   
3   import fr.paris.lutece.plugins.calendar.business.CalendarFilter;
4   import fr.paris.lutece.plugins.calendar.business.CalendarHome;
5   import fr.paris.lutece.plugins.calendar.business.Event;
6   import fr.paris.lutece.plugins.calendar.service.AgendaResource;
7   import fr.paris.lutece.plugins.calendar.service.CalendarPlugin;
8   import fr.paris.lutece.plugins.calendar.web.Constants;
9   import fr.paris.lutece.portal.business.rss.FeedResource;
10  import fr.paris.lutece.portal.business.rss.FeedResourceItem;
11  import fr.paris.lutece.portal.business.rss.IFeedResource;
12  import fr.paris.lutece.portal.business.rss.IFeedResourceItem;
13  import fr.paris.lutece.portal.business.rss.ResourceRss;
14  import fr.paris.lutece.portal.service.content.XPageAppService;
15  import fr.paris.lutece.portal.service.plugin.Plugin;
16  import fr.paris.lutece.portal.service.plugin.PluginService;
17  import fr.paris.lutece.portal.service.util.AppPathService;
18  import fr.paris.lutece.util.url.UrlItem;
19  
20  import java.util.ArrayList;
21  import java.util.Date;
22  import java.util.List;
23  import java.util.Locale;
24  import java.util.Map;
25  
26  import javax.servlet.http.HttpServletRequest;
27  
28  
29  /**
30   * CalendarResourceRss
31   */
32  public class CalendarResourceRss extends ResourceRss
33  {
34      private static final String EMPTY_STRING = "";
35      private static final String AGENDA_TITLE = "Calendar RSS";
36      private static final String AGENDA_DESCRIPTION = "Calendar RSS";
37      private static final String AGENDA_LINK = "portal.jsp";
38  
39      /**
40       * verify that the resource exist
41       * @return true if resource exist
42       */
43      public boolean checkResource( )
44      {
45          Plugin pluginCalendar = PluginService.getPlugin( CalendarPlugin.PLUGIN_NAME );
46          AgendaResource agenda = CalendarHome.findAgendaResource( this.getId( ), pluginCalendar );
47  
48          return ( agenda != null );
49      }
50  
51      /**
52       * verified that the resource contains the resource to be exploited
53       * @return true if resourceRss content resource
54       */
55      public boolean contentResourceRss( )
56      {
57          Plugin pluginCalendar = PluginService.getPlugin( CalendarPlugin.PLUGIN_NAME );
58  
59          return !CalendarHome.findAgendaResourcesList( pluginCalendar ).isEmpty( );
60      }
61  
62      /**
63       * {@inheritDoc}
64       */
65      public void deleteResourceRssConfig( int idResourceRss )
66      {
67      }
68  
69      /**
70       * {@inheritDoc}
71       */
72      public void doSaveConfig( HttpServletRequest request, Locale locale )
73      {
74      }
75  
76      /**
77       * {@inheritDoc}
78       */
79      public void doUpdateConfig( HttpServletRequest request, Locale locale )
80      {
81      }
82  
83      /**
84       * {@inheritDoc}
85       */
86      public String doValidateConfigForm( HttpServletRequest request, Locale locale )
87      {
88          this.setDescription( AGENDA_DESCRIPTION );
89          return null;
90      }
91  
92      /**
93       * {@inheritDoc}
94       */
95      public String getDisplayCreateConfigForm( HttpServletRequest request, Locale locale )
96      {
97          return EMPTY_STRING;
98      }
99  
100     /**
101      * {@inheritDoc}
102      */
103     public String getDisplayModifyConfigForm( HttpServletRequest request, Locale locale )
104     {
105         return EMPTY_STRING;
106     }
107 
108     /**
109      * {@inheritDoc}
110      */
111     public Map<String, String> getParameterToApply( HttpServletRequest request )
112     {
113         return null;
114     }
115 
116     /**
117      * Gets the feed with items
118      * @return the {@link IFeedResource}
119      */
120     public IFeedResource getFeed( )
121     {
122         Plugin pluginCalendar = PluginService.getPlugin( CalendarPlugin.PLUGIN_NAME );
123 
124         //Agenda Rss
125         IFeedResource resource = new FeedResource( );
126         resource.setTitle( AGENDA_TITLE );
127         resource.setDescription( AGENDA_DESCRIPTION );
128         resource.setLink( AGENDA_LINK );
129 
130         CalendarFilter filter = new CalendarFilter( );
131         List<Event> listEvent = CalendarHome.findEventsByFilter( filter, pluginCalendar );
132         List<IFeedResourceItem> listItems = new ArrayList<IFeedResourceItem>( );
133 
134         //Description of  the events
135         for ( Event simpleEvent : listEvent )
136         {
137             IFeedResourceItem item = new FeedResourceItem( );
138 
139             item.setTitle( ( simpleEvent.getTitle( ) != null ) ? simpleEvent.getTitle( ) : "" );
140 
141             item.setDescription( ( simpleEvent.getDescription( ) != null ) ? simpleEvent.getDescription( ) : "" );
142 
143             Date dateCreation = new Date( simpleEvent.getDateCreation( ).getTime( ) );
144             item.setDate( dateCreation );
145 
146             UrlItem urlEvent = new UrlItem( AppPathService.getPortalUrl( ) );
147             urlEvent.addParameter( XPageAppService.PARAM_XPAGE_APP, CalendarPlugin.PLUGIN_NAME );
148             urlEvent.addParameter( Constants.PARAMETER_ACTION, Constants.ACTION_SHOW_RESULT );
149             urlEvent.addParameter( Constants.PARAMETER_EVENT_ID, simpleEvent.getId( ) );
150             urlEvent.addParameter( Constants.PARAM_AGENDA, simpleEvent.getIdCalendar( ) );
151             item.setLink( urlEvent.getUrl( ) );
152 
153             listItems.add( item );
154         }
155 
156         resource.setItems( listItems );
157 
158         return resource;
159 
160     }
161 }