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.digglike.business.rss;
35
36 import fr.paris.lutece.plugins.digglike.business.Category;
37 import fr.paris.lutece.plugins.digglike.business.CommentSubmit;
38 import fr.paris.lutece.plugins.digglike.business.Digg;
39 import fr.paris.lutece.plugins.digglike.business.DiggFilter;
40 import fr.paris.lutece.plugins.digglike.business.DiggHome;
41 import fr.paris.lutece.plugins.digglike.business.DiggSubmit;
42 import fr.paris.lutece.plugins.digglike.business.DiggSubmitState;
43 import fr.paris.lutece.plugins.digglike.business.SubmitFilter;
44 import fr.paris.lutece.plugins.digglike.service.CommentSubmitService;
45 import fr.paris.lutece.plugins.digglike.service.DiggSubmitService;
46 import fr.paris.lutece.plugins.digglike.service.DigglikePlugin;
47 import fr.paris.lutece.portal.business.rss.FeedResource;
48 import fr.paris.lutece.portal.business.rss.FeedResourceImage;
49 import fr.paris.lutece.portal.business.rss.FeedResourceItem;
50 import fr.paris.lutece.portal.business.rss.IFeedResource;
51 import fr.paris.lutece.portal.business.rss.IFeedResourceImage;
52 import fr.paris.lutece.portal.business.rss.IFeedResourceItem;
53 import fr.paris.lutece.portal.business.rss.ResourceRss;
54 import fr.paris.lutece.portal.service.content.XPageAppService;
55 import fr.paris.lutece.portal.service.i18n.I18nService;
56 import fr.paris.lutece.portal.service.message.AdminMessage;
57 import fr.paris.lutece.portal.service.message.AdminMessageService;
58 import fr.paris.lutece.portal.service.plugin.Plugin;
59 import fr.paris.lutece.portal.service.plugin.PluginService;
60 import fr.paris.lutece.portal.service.template.AppTemplateService;
61 import fr.paris.lutece.portal.service.util.AppLogService;
62 import fr.paris.lutece.portal.service.util.AppPathService;
63 import fr.paris.lutece.portal.service.util.AppPropertiesService;
64 import fr.paris.lutece.util.ReferenceList;
65 import fr.paris.lutece.util.html.HtmlTemplate;
66 import fr.paris.lutece.util.url.UrlItem;
67
68 import java.text.SimpleDateFormat;
69 import java.util.ArrayList;
70 import java.util.Date;
71 import java.util.HashMap;
72 import java.util.List;
73 import java.util.Locale;
74 import java.util.Map;
75
76 import javax.servlet.http.HttpServletRequest;
77
78 import org.apache.commons.lang.StringUtils;
79
80
81
82
83
84 public class DiggResourceRss extends ResourceRss
85 {
86
87
88 private static final String TEMPLATE_TASK_EVALUATION_CREATE_CONFIG = "admin/plugins/digglike/rss/resource_create_config.html";
89
90
91 private static final String TEMPLATE_TASK_EVALUATION_MODIFY_CONFIG = "admin/plugins/digglike/rss/resource_modify_config.html";
92
93
94 private static final String TEMPLATE_PUSH_RSS_XML_DIGG = "admin/plugins/digglike/rss/rss_xml_digg.html";
95
96
97 private static final String TEMPLATE_PUSH_RSS_XML_SUBMIT = "admin/plugins/digglike/rss/rss_xml_submit.html";
98
99
100 private static final String TEMPLATE_RSS_SUBMIT_DESCRIPTION = "admin/plugins/digglike/rss/rss_submit_description.html";
101
102
103 private static final String TEMPLATE_RSS_SUBMIT_ITEM_TITLE = "admin/plugins/digglike/rss/rss_submit_item_title.html";
104
105
106 private static final String TEMPLATE_RSS_DIGG_ITEM_TITLE = "admin/plugins/digglike/rss/rss_digg_item_title.html";
107
108
109
110
111
112
113
114 private static final String MARK_DIGG_LIST = "digglike_list";
115
116
117 private static final String MARK_DIGG_LIST_DEFAULT_ITEM = "digglike_list_default_item";
118
119
120 private static final String MARK_RSS_ID_DIGG = "id_digg";
121
122
123 private static final String MARK_RSS_ID_SUBMIT = "id_submit";
124
125
126 private static final String MARK_DIGGSUBMIT_LIST = "diggsubmit_list";
127
128
129 private static final String MARK_EMPTY_DIGG = "empty_digg";
130
131
132 private static final String MARK_RSS_ITEM_TITLE = "item_title";
133
134
135 private static final String MARK_RSS_ITEM_DESCRIPTION = "item_description";
136
137
138 private static final String MARK_RSS_ITEM_DATE = "item_date";
139
140
141 private static final String MARK_DIGG_SUBMIT_LIST_DEFAULT_ITEM = "digglike_list_submit_default_item";
142
143
144 private static final String MARK_IS_DIGG_SUBMIT_RSS = "digglike_is_digg_submit_rss";
145
146
147 private static final String MARK_RSS_SITE_DATE = "site_date";
148
149
150 private static final String MARK_RSS_NUMBER_VOTE = "number_vote";
151
152
153 private static final String MARK_RSS_SCORE = "score";
154
155
156 private static final String MARK_RSS_CATEGORY = "category";
157
158
159 private static final String MARK_RSS_ITEM_STATE = "state";
160
161
162 private static final String MARK_RSS_ITEM_AUTHOR = "author";
163
164
165 private static final String MARK_RSS_SITE_NAME = "site_name";
166
167
168 private static final String MARK_RSS_SITE_ID = "digg_id";
169
170
171 private static final String MARK_RSS_FILE_LANGUAGE = "file_language";
172
173
174 private static final String MARK_RSS_SITE_URL = "site_url";
175
176
177 private static final String MARK_ITEM_LIST = "itemList";
178
179
180 private static final String MARK_RSS_SITE_DESCRIPTION = "site_description";
181
182
183 private static final String MARK_RSS_SITE_STATE = "state";
184
185
186
187 private static final String PARAMETER_ID_DIGG = "id_digg";
188
189
190 private static final String PARAMETER_RSS_CHOICE = "rss_choice";
191
192
193 private static final String PARAMETER_RSS_CHOICE_SUBMIT = "digg_submit";
194
195
196 private static final String PARAMETER_ID_DIGG_SUBMIT = "id_digg_submit";
197
198
199 private static final String PARAMETER_URL_FEED_IMAGE = "/images/local/skin/valid-rss.png";
200
201
202 private static final String PARAMETER_DIGG_COMMENT = "digg_comment";
203
204
205 private static final String PARAMETER_DIGG_DETAIL = "digg_detail";
206
207
208
209 private static final String FIELD_ID_DIGG = "digglike.resource_rss.label_digg";
210
211
212 private static final String FIELD_STATE = "digglike.resource_rss.state";
213
214
215 private static final String FIELD_STATE_ENABLE = "digglike.resource_rss.enable";
216
217
218 private static final String FIELD_STATE_DISABLE = "digglike.resource_rss.disable";
219
220
221 private static final String FORMAT_RSS_DATE = "EEE, d MMM yyyy HH:mm:ss Z";
222
223
224
225 private static final String MESSAGE_MANDATORY_FIELD = "digglike.message.mandatory.field";
226
227
228 private static final String MESSAGE_EMPTY_DIGG = "digglike.message.empty_digg";
229
230
231 private static final String PROPERTY_SITE_LANGUAGE = "rss.language";
232
233
234 private static final String PROPERTY_WEBAPP_PROD_URL = "lutece.prod.url";
235
236
237 private static final String PROPERTY_XPAGE_APPLICATION_ID = "digglike.xpage.applicationId";
238
239
240
241 private static final String DEFAULT_XPAGE_ID = "digg";
242
243
244 private static final String SLASH = "/";
245
246
247
248
249 @Override
250 public boolean contentResourceRss( )
251 {
252 Plugin pluginDigglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
253
254 DiggFilter filter = new DiggFilter( );
255 if ( DiggHome.getDiggList( filter, pluginDigglike ).size( ) > 0 )
256 {
257 return true;
258 }
259
260 return false;
261 }
262
263
264
265
266 @Override
267 public void doSaveConfig( HttpServletRequest request, Locale locale )
268 {
269 Plugin pluginDigglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
270
271 String stridDigg = request.getParameter( PARAMETER_ID_DIGG );
272 String strRssChoice = request.getParameter( PARAMETER_RSS_CHOICE );
273 String stridDiggSubmit = request.getParameter( PARAMETER_ID_DIGG_SUBMIT + stridDigg );
274
275 boolean bisSubmitRss = strRssChoice.equals( PARAMETER_RSS_CHOICE_SUBMIT ) ? true : false;
276
277 if ( stridDiggSubmit.equals( MARK_EMPTY_DIGG ) )
278 {
279 stridDiggSubmit = "0";
280 }
281
282 DiggResourceRssConfig config = new DiggResourceRssConfig( );
283 config.setIdRss( this.getId( ) );
284 config.setIdDigg( Integer.parseInt( stridDigg ) );
285 config.setIdDiggSubmit( Integer.parseInt( stridDiggSubmit ) );
286 config.setSubmitRss( bisSubmitRss );
287
288 DiggResourceRssConfigHome.create( config, pluginDigglike );
289 }
290
291
292
293
294 @Override
295 public void doUpdateConfig( HttpServletRequest request, Locale locale )
296 {
297 Plugin pluginDigglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
298 String strIdDigg = request.getParameter( PARAMETER_ID_DIGG );
299 String strRssChoice = request.getParameter( PARAMETER_RSS_CHOICE );
300 String stridDiggSubmit = request.getParameter( PARAMETER_ID_DIGG_SUBMIT + strIdDigg );
301 boolean bisSubmitRss = strRssChoice.equals( PARAMETER_RSS_CHOICE_SUBMIT ) ? true : false;
302
303 if ( stridDiggSubmit.equals( MARK_EMPTY_DIGG ) )
304 {
305 stridDiggSubmit = "0";
306 }
307
308 DiggResourceRssConfig config = new DiggResourceRssConfig( );
309 config.setIdRss( this.getId( ) );
310 config.setIdDigg( Integer.parseInt( strIdDigg ) );
311 config.setIdDiggSubmit( Integer.parseInt( stridDiggSubmit ) );
312 config.setSubmitRss( bisSubmitRss );
313
314 DiggResourceRssConfigHome.update( config, pluginDigglike );
315 }
316
317
318
319
320 @Override
321 public String doValidateConfigForm( HttpServletRequest request, Locale locale )
322 {
323 Plugin pluginDigglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
324 String strError = "";
325 String stridDigg = request.getParameter( PARAMETER_ID_DIGG );
326 String stridDiggSubmit = request.getParameter( PARAMETER_ID_DIGG_SUBMIT + stridDigg );
327 String strRssChoice = request.getParameter( PARAMETER_RSS_CHOICE );
328 boolean bisSubmitRss = strRssChoice.equals( PARAMETER_RSS_CHOICE_SUBMIT ) ? true : false;
329
330 if ( stridDigg == null )
331 {
332 strError = FIELD_ID_DIGG;
333 }
334
335 if ( bisSubmitRss && stridDiggSubmit.equals( MARK_EMPTY_DIGG ) )
336 {
337 return AdminMessageService.getMessageUrl( request, MESSAGE_EMPTY_DIGG, AdminMessage.TYPE_STOP );
338 }
339
340 if ( !strError.equals( "" ) )
341 {
342 Object[] tabRequiredFields = { I18nService.getLocalizedString( strError, locale ) };
343
344 return AdminMessageService.getMessageUrl( request, MESSAGE_MANDATORY_FIELD, tabRequiredFields,
345 AdminMessage.TYPE_STOP );
346 }
347
348 if ( bisSubmitRss )
349 {
350 DiggSubmit diggSubmit = DiggSubmitService.getService( )
351 .findByPrimaryKey( Integer.parseInt( stridDiggSubmit ), false,
352 pluginDigglike );
353 this.setName( diggSubmit.getDiggSubmitTitle( ) );
354 this.setDescription( diggSubmit.getDiggSubmitValue( ).replaceAll( "<div[^>]+>", "" )
355 .replaceAll( "</div>", "" ) );
356 }
357 else
358 {
359 Digg digg = DiggHome.findByPrimaryKey( Integer.parseInt( stridDigg ), pluginDigglike );
360 this.setName( digg.getTitle( ) );
361 this.setDescription( digg.getLibelleContribution( ) );
362 }
363
364 return null;
365 }
366
367
368
369
370 @Override
371 public String getDisplayCreateConfigForm( HttpServletRequest request, Locale locale )
372 {
373 Plugin pluginDigglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
374
375 DiggFilter filter = new DiggFilter( );
376
377 List<Digg> diggList = DiggHome.getDiggList( filter, pluginDigglike );
378 ReferenceList referenceDigg = new ReferenceList( );
379
380 HashMap<String, Object> model = new HashMap<String, Object>( );
381
382 Map<String, ReferenceList> diggMap = new HashMap<String, ReferenceList>( );
383
384 for ( Digg digg : diggList )
385 {
386 SubmitFilter submitFilter = new SubmitFilter( );
387 submitFilter.setIdDigg( digg.getIdDigg( ) );
388
389 List<DiggSubmit> diggSubmitList = DiggSubmitService.getService( )
390 .getDiggSubmitList( submitFilter, pluginDigglike );
391 ReferenceList referenceDiggSubmit = new ReferenceList( );
392
393 for ( DiggSubmit diggSubmit : diggSubmitList )
394 {
395 referenceDiggSubmit.addItem( diggSubmit.getIdDiggSubmit( ),
396 diggSubmit.getDiggSubmitValue( ).replaceAll( "<div[^>]+>", "" ).replaceAll( "</div>", "" ) );
397 }
398
399 diggMap.put( String.valueOf( digg.getIdDigg( ) ), referenceDiggSubmit );
400 referenceDigg.addItem( digg.getIdDigg( ), digg.getTitle( ) );
401 }
402
403 model.put( MARK_DIGGSUBMIT_LIST, diggMap );
404 model.put( MARK_DIGG_SUBMIT_LIST_DEFAULT_ITEM, -1 );
405 model.put( MARK_DIGG_LIST_DEFAULT_ITEM, -1 );
406 model.put( MARK_DIGG_LIST, referenceDigg );
407
408 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_TASK_EVALUATION_CREATE_CONFIG, locale, model );
409
410 return template.getHtml( );
411 }
412
413
414
415
416 @Override
417 public String getDisplayModifyConfigForm( HttpServletRequest request, Locale locale )
418 {
419 Plugin pluginDigglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
420 DiggFilter filter = new DiggFilter( );
421 List<Digg> diggList = DiggHome.getDiggList( filter, pluginDigglike );
422 ReferenceList referenceDigg = new ReferenceList( );
423
424 DiggResourceRssConfig diggResourceRssConfig = DiggResourceRssConfigHome.findByPrimaryKey( this.getId( ),
425 pluginDigglike );
426 HashMap<String, Object> model = new HashMap<String, Object>( );
427
428 if ( request.getParameter( PARAMETER_ID_DIGG ) != null )
429 {
430 int idDigg = Integer.parseInt( request.getParameter( PARAMETER_ID_DIGG ) );
431
432 model.put( MARK_DIGG_LIST_DEFAULT_ITEM, idDigg );
433 }
434 else
435 {
436 model.put( MARK_DIGG_LIST_DEFAULT_ITEM, diggResourceRssConfig.getIdDigg( ) );
437 }
438
439 Map<String, ReferenceList> diggMap = new HashMap<String, ReferenceList>( );
440
441 for ( Digg digg : diggList )
442 {
443 SubmitFilter submitFilter = new SubmitFilter( );
444 submitFilter.setIdDigg( digg.getIdDigg( ) );
445
446 List<DiggSubmit> diggSubmitList = DiggSubmitService.getService( )
447 .getDiggSubmitList( submitFilter, pluginDigglike );
448 ReferenceList referenceDiggSubmit = new ReferenceList( );
449
450 for ( DiggSubmit diggSubmit : diggSubmitList )
451 {
452 referenceDiggSubmit.addItem( diggSubmit.getIdDiggSubmit( ),
453 diggSubmit.getDiggSubmitValue( ).replaceAll( "<div[^>]+>", "" ).replaceAll( "</div>", "" ) );
454 }
455
456 diggMap.put( String.valueOf( digg.getIdDigg( ) ), referenceDiggSubmit );
457 referenceDigg.addItem( digg.getIdDigg( ), digg.getTitle( ) );
458 }
459
460 if ( request.getParameter( PARAMETER_ID_DIGG_SUBMIT ) != null )
461 {
462 int idDiggSubmit = Integer.parseInt( request.getParameter( PARAMETER_ID_DIGG_SUBMIT ) );
463
464 model.put( MARK_DIGG_SUBMIT_LIST_DEFAULT_ITEM, idDiggSubmit );
465 }
466 else
467 {
468 model.put( MARK_DIGG_SUBMIT_LIST_DEFAULT_ITEM, diggResourceRssConfig.getIdDiggSubmit( ) );
469 }
470
471 model.put( MARK_IS_DIGG_SUBMIT_RSS, diggResourceRssConfig.isSubmitRss( ) );
472 model.put( MARK_DIGGSUBMIT_LIST, diggMap );
473 model.put( MARK_DIGG_LIST, referenceDigg );
474
475 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_TASK_EVALUATION_MODIFY_CONFIG, locale, model );
476
477 return template.getHtml( );
478 }
479
480
481
482
483 @Override
484 public String createHtmlRss( )
485 {
486 HashMap<String, Object> model = new HashMap<String, Object>( );
487 Plugin pluginDiggglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
488 DiggResourceRssConfig config = DiggResourceRssConfigHome.findByPrimaryKey( this.getId( ), pluginDiggglike );
489
490 String strRssFileLanguage = AppPropertiesService.getProperty( PROPERTY_SITE_LANGUAGE );
491 Locale locale = new Locale( strRssFileLanguage );
492
493 String strWebAppUrl = AppPropertiesService.getProperty( PROPERTY_WEBAPP_PROD_URL );
494 String strSiteUrl = strWebAppUrl;
495
496 if ( config.isSubmitRss( ) )
497 {
498
499 DiggSubmit diggSubmit = DiggSubmitService.getService( )
500 .findByPrimaryKey( config.getIdDiggSubmit( ), false,
501 pluginDiggglike );
502 DiggSubmitState diggsubmitStage = diggSubmit.getDiggSubmitState( );
503 Category category = diggSubmit.getCategory( );
504 model.put( MARK_RSS_SITE_NAME, diggSubmit.getDiggSubmitTitle( ) );
505 model.put( MARK_RSS_SITE_ID, diggSubmit.getIdDiggSubmit( ) );
506 model.put( MARK_RSS_FILE_LANGUAGE, strRssFileLanguage );
507 model.put( MARK_RSS_SITE_URL, strSiteUrl );
508
509 model.put( MARK_RSS_NUMBER_VOTE, diggSubmit.getNumberVote( ) );
510 model.put( MARK_RSS_SCORE, diggSubmit.getNumberScore( ) );
511
512 model.put( MARK_RSS_SITE_STATE, diggsubmitStage.getTitle( ) );
513 model.put( MARK_RSS_SITE_DESCRIPTION,
514 diggSubmit.getDiggSubmitValue( ).replaceAll( "<div[^>]+>", "" ).replaceAll( "</div>", "" ) );
515
516 if ( category != null )
517 {
518 model.put( MARK_RSS_CATEGORY, category.getTitle( ) );
519 }
520
521 model.put( MARK_RSS_SITE_DATE,
522 new SimpleDateFormat( FORMAT_RSS_DATE, Locale.ENGLISH ).format( diggSubmit.getDateResponse( ) ) );
523
524 SubmitFilter submitFilter = new SubmitFilter( );
525 submitFilter.setIdDiggSubmit( config.getIdDiggSubmit( ) );
526
527 List<CommentSubmit> listResultCommentSubmit = CommentSubmitService.getService( )
528 .getCommentSubmitList( submitFilter,
529 pluginDiggglike );
530 List<Map<String, Object>> listItem = new ArrayList<Map<String, Object>>( );
531
532
533 for ( CommentSubmit commentSubmit : listResultCommentSubmit )
534 {
535 HashMap<String, Object> item = new HashMap<String, Object>( );
536
537 if ( commentSubmit.getLuteceUserKey( ) != null )
538 {
539 item.put( MARK_RSS_ITEM_AUTHOR, commentSubmit.getLuteceUserKey( ) );
540 }
541 else
542 {
543 item.put( MARK_RSS_ITEM_AUTHOR, null );
544 }
545
546 item.put( MARK_RSS_ITEM_STATE,
547 commentSubmit.isActive( ) ? I18nService.getLocalizedString( FIELD_STATE_ENABLE, locale )
548 : I18nService.getLocalizedString( FIELD_STATE_DISABLE, locale ) );
549 item.put( MARK_RSS_ITEM_DESCRIPTION, commentSubmit.getValue( ) );
550 item.put( MARK_RSS_ID_SUBMIT, diggSubmit.getIdDiggSubmit( ) );
551 item.put( MARK_RSS_ITEM_DATE,
552 new SimpleDateFormat( FORMAT_RSS_DATE, Locale.ENGLISH ).format( commentSubmit.getDateComment( ) ) );
553
554 listItem.add( item );
555 }
556
557 model.put( MARK_ITEM_LIST, listItem );
558
559 model.put( MARK_RSS_ID_DIGG, config.getIdDigg( ) );
560
561 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_PUSH_RSS_XML_SUBMIT, locale, model );
562
563 return template.getHtml( );
564 }
565 else
566 {
567
568 Digg digg = DiggHome.findByPrimaryKey( config.getIdDigg( ), pluginDiggglike );
569
570 model.put( MARK_RSS_SITE_NAME, digg.getTitle( ) );
571 model.put( MARK_RSS_SITE_ID, digg.getIdDigg( ) );
572 model.put( MARK_RSS_FILE_LANGUAGE, strRssFileLanguage );
573 model.put( MARK_RSS_SITE_URL, strSiteUrl );
574
575 if ( digg.isActive( ) )
576 {
577 model.put( MARK_RSS_SITE_DESCRIPTION, I18nService.getLocalizedString( FIELD_STATE_ENABLE, locale ) );
578 }
579 else
580 {
581 model.put( MARK_RSS_SITE_DESCRIPTION, I18nService.getLocalizedString( FIELD_STATE_DISABLE, locale ) );
582 }
583
584 model.put( MARK_RSS_SITE_DATE,
585 new SimpleDateFormat( FORMAT_RSS_DATE, Locale.ENGLISH ).format( digg.getDateCreation( ) ) );
586
587 SubmitFilter submitFilter = new SubmitFilter( );
588 submitFilter.setIdDigg( config.getIdDigg( ) );
589
590 List<DiggSubmit> listResultDiggSubmit = DiggSubmitService.getService( )
591 .getDiggSubmitList( submitFilter, pluginDiggglike );
592 List<Map<String, Object>> listItem = new ArrayList<Map<String, Object>>( );
593
594
595 for ( DiggSubmit diggSubmit : listResultDiggSubmit )
596 {
597 HashMap<String, Object> item = new HashMap<String, Object>( );
598 DiggSubmitState diggsubmitState = diggSubmit.getDiggSubmitState( );
599 Category category = diggSubmit.getCategory( );
600
601 item.put( MARK_RSS_ITEM_TITLE, diggSubmit.getDiggSubmitTitle( ) );
602 item.put( MARK_RSS_NUMBER_VOTE, diggSubmit.getNumberVote( ) );
603 item.put( MARK_RSS_SCORE, diggSubmit.getNumberScore( ) );
604 item.put( MARK_RSS_ITEM_STATE, diggsubmitState.getTitle( ) );
605
606 if ( category != null )
607 {
608 item.put( MARK_RSS_CATEGORY, diggSubmit.getDiggSubmitTitle( ) );
609 }
610
611 item.put( MARK_RSS_ITEM_DESCRIPTION,
612 diggSubmit.getDiggSubmitValue( ).replaceAll( "<div[^>]+>", "" ).replaceAll( "</div>", "" ) );
613 item.put( MARK_RSS_ID_SUBMIT, diggSubmit.getIdDiggSubmit( ) );
614 item.put( MARK_RSS_ITEM_DATE,
615 new SimpleDateFormat( FORMAT_RSS_DATE, Locale.ENGLISH ).format( diggSubmit.getDateResponse( ) ) );
616 listItem.add( item );
617 }
618
619 model.put( MARK_ITEM_LIST, listItem );
620
621 model.put( MARK_RSS_ID_DIGG, config.getIdDigg( ) );
622
623 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_PUSH_RSS_XML_DIGG, locale, model );
624
625 return template.getHtml( );
626 }
627 }
628
629
630
631
632 @Override
633 public IFeedResource getFeed( )
634 {
635 String strRssFileLanguage = AppPropertiesService.getProperty( PROPERTY_SITE_LANGUAGE );
636 Locale locale = new Locale( strRssFileLanguage );
637
638 String strWebAppUrl = AppPropertiesService.getProperty( PROPERTY_WEBAPP_PROD_URL );
639 String strSiteUrl = strWebAppUrl;
640
641 Plugin pluginDiggglike = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
642 DiggResourceRssConfig config = DiggResourceRssConfigHome.findByPrimaryKey( this.getId( ), pluginDiggglike );
643
644 if ( config.isSubmitRss( ) )
645 {
646
647 DiggSubmit diggSubmit = DiggSubmitService.getService( )
648 .findByPrimaryKey( config.getIdDiggSubmit( ), false,
649 pluginDiggglike );
650 DiggSubmitState diggsubmitStage = diggSubmit.getDiggSubmitState( );
651 Category category = diggSubmit.getCategory( );
652
653 IFeedResource resource = new FeedResource( );
654 resource.setTitle( diggSubmit.getDiggSubmitTitle( ) );
655
656
657
658
659
660
661 resource.setLink( buildUrlDigg( strSiteUrl, diggSubmit.getDigg( ) ) );
662 resource.setLanguage( strRssFileLanguage );
663
664 Date date = new Date( diggSubmit.getDateResponse( ).getTime( ) );
665 resource.setDate( date );
666
667 IFeedResourceImage image = new FeedResourceImage( );
668 image.setUrl( strSiteUrl + PARAMETER_URL_FEED_IMAGE );
669 image.setTitle( diggSubmit.getDiggSubmitTitle( ) );
670 image.setLink( strSiteUrl );
671
672 resource.setImage( image );
673
674 String strDescription;
675 Map<String, Object> model = new HashMap<String, Object>( );
676
677 model.put( MARK_RSS_SITE_DESCRIPTION,
678 diggSubmit.getDiggSubmitValue( ).replaceAll( "<div[^>]+>", "" ).replaceAll( "</div>", "" ) );
679 model.put( MARK_RSS_SITE_STATE, diggsubmitStage.getTitle( ) );
680
681 if ( category != null )
682 {
683 model.put( MARK_RSS_CATEGORY, category.getTitle( ) );
684 }
685
686 model.put( MARK_RSS_NUMBER_VOTE, diggSubmit.getNumberVote( ) );
687 model.put( MARK_RSS_SCORE, diggSubmit.getNumberScore( ) );
688
689 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_RSS_SUBMIT_DESCRIPTION, locale, model );
690 strDescription = template.getHtml( );
691
692 resource.setDescription( strDescription );
693
694 SubmitFilter submitFilter = new SubmitFilter( );
695 submitFilter.setIdDiggSubmit( config.getIdDiggSubmit( ) );
696
697 List<CommentSubmit> listResultCommentSubmit = CommentSubmitService.getService( )
698 .getCommentSubmitList( submitFilter,
699 pluginDiggglike );
700 List<IFeedResourceItem> listItems = new ArrayList<IFeedResourceItem>( );
701
702
703 for ( CommentSubmit commentSubmit : listResultCommentSubmit )
704 {
705 IFeedResourceItem item = new FeedResourceItem( );
706
707 String strTitleItem;
708 Map<String, Object> model2 = new HashMap<String, Object>( );
709
710 if ( commentSubmit.getLuteceUserKey( ) != null )
711 {
712 model2.put( MARK_RSS_ITEM_AUTHOR, commentSubmit.getLuteceUserKey( ) );
713 }
714 else
715 {
716 model2.put( MARK_RSS_ITEM_AUTHOR, null );
717 }
718
719 model2.put( MARK_RSS_ITEM_STATE,
720 commentSubmit.isActive( ) ? I18nService.getLocalizedString( FIELD_STATE_ENABLE, locale )
721 : I18nService.getLocalizedString( FIELD_STATE_DISABLE, locale ) );
722
723 HtmlTemplate template2 = AppTemplateService.getTemplate( TEMPLATE_RSS_SUBMIT_ITEM_TITLE, locale, model2 );
724 strTitleItem = template2.getHtml( );
725
726 item.setTitle( strTitleItem );
727
728
729
730
731
732
733 item.setLink( buildUrlDiggSubmit( strSiteUrl, diggSubmit ) );
734 item.setDescription( commentSubmit.getValue( ) );
735 item.setDate( commentSubmit.getDateComment( ) );
736
737 listItems.add( item );
738 }
739
740 resource.setItems( listItems );
741
742 return resource;
743 }
744 else
745 {
746
747 Digg digg = DiggHome.findByPrimaryKey( config.getIdDigg( ), pluginDiggglike );
748
749 IFeedResource resource = new FeedResource( );
750 resource.setTitle( digg.getTitle( ) );
751
752
753
754
755
756
757 resource.setLink( buildUrlDigg( strSiteUrl, digg ) );
758 resource.setLanguage( strRssFileLanguage );
759
760 Date date = new Date( digg.getDateCreation( ).getTime( ) );
761 resource.setDate( date );
762
763 IFeedResourceImage image = new FeedResourceImage( );
764 image.setUrl( strSiteUrl + PARAMETER_URL_FEED_IMAGE );
765 image.setTitle( digg.getTitle( ) );
766 image.setLink( strSiteUrl );
767
768 resource.setImage( image );
769
770 if ( digg.isActive( ) )
771 {
772 resource.setDescription( I18nService.getLocalizedString( FIELD_STATE, locale ) + " : " +
773 I18nService.getLocalizedString( FIELD_STATE_ENABLE, locale ) );
774 }
775 else
776 {
777 resource.setDescription( I18nService.getLocalizedString( FIELD_STATE, locale ) + " : " +
778 I18nService.getLocalizedString( FIELD_STATE_DISABLE, locale ) );
779 }
780
781 SubmitFilter submitFilter = new SubmitFilter( );
782 submitFilter.setIdDigg( config.getIdDigg( ) );
783
784 List<DiggSubmit> listResultDiggSubmit = DiggSubmitService.getService( )
785 .getDiggSubmitList( submitFilter, pluginDiggglike );
786 List<IFeedResourceItem> listItems = new ArrayList<IFeedResourceItem>( );
787
788
789 for ( DiggSubmit diggSubmit : listResultDiggSubmit )
790 {
791 IFeedResourceItem item = new FeedResourceItem( );
792
793 String strTitle;
794 Map<String, Object> model = new HashMap<String, Object>( );
795 DiggSubmitState diggsubmitState = diggSubmit.getDiggSubmitState( );
796 Category category = diggSubmit.getCategory( );
797
798 model.put( MARK_RSS_ITEM_TITLE, diggSubmit.getDiggSubmitTitle( ) );
799 model.put( MARK_RSS_NUMBER_VOTE, diggSubmit.getNumberVote( ) );
800 model.put( MARK_RSS_SCORE, diggSubmit.getNumberScore( ) );
801 model.put( MARK_RSS_ITEM_STATE, diggsubmitState.getTitle( ) );
802
803 if ( category != null )
804 {
805 model.put( MARK_RSS_CATEGORY, diggSubmit.getDiggSubmitTitle( ) );
806 }
807
808 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_RSS_DIGG_ITEM_TITLE, locale, model );
809 strTitle = template.getHtml( );
810
811 item.setTitle( strTitle );
812
813
814
815
816
817
818 item.setLink( buildUrlDiggSubmit( strSiteUrl, diggSubmit ) );
819 item.setDescription( diggSubmit.getDiggSubmitValue( ).replaceAll( "<div[^>]+>", "" )
820 .replaceAll( "</div>", "" ) );
821 item.setDate( diggSubmit.getDateResponse( ) );
822
823 listItems.add( item );
824 }
825
826 resource.setItems( listItems );
827
828 return resource;
829 }
830 }
831
832
833
834
835 @Override
836 public void deleteResourceRssConfig( int idResourceRss )
837 {
838 Plugin pluginDirectory = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
839 DiggResourceRssConfigHome.remove( idResourceRss, pluginDirectory );
840 }
841
842
843
844
845 @Override
846 public Map<String, String> getParameterToApply( HttpServletRequest request )
847 {
848 Map<String, String> map = new HashMap<String, String>( );
849
850 map.put( PARAMETER_ID_DIGG, request.getParameter( PARAMETER_ID_DIGG ) );
851
852 return map;
853 }
854
855
856
857
858 @Override
859 public boolean checkResource( )
860 {
861 Plugin pluginDirectory = PluginService.getPlugin( DigglikePlugin.PLUGIN_NAME );
862 DiggResourceRssConfig config = DiggResourceRssConfigHome.findByPrimaryKey( this.getId( ), pluginDirectory );
863 Digg digg = DiggHome.findByPrimaryKey( config.getIdDigg( ), pluginDirectory );
864
865 return ( digg != null );
866 }
867
868
869
870
871
872
873
874
875 private static String buildUrlDiggSubmit( String strSiteUrl, DiggSubmit diggSubmit )
876 {
877 if ( ( diggSubmit != null ) && ( diggSubmit.getDigg( ) != null ) )
878 {
879 UrlItem url = new UrlItem( strSiteUrl + SLASH + AppPathService.getPortalUrl( ) );
880 url.addParameter( XPageAppService.PARAM_XPAGE_APP,
881 AppPropertiesService.getProperty( PROPERTY_XPAGE_APPLICATION_ID, DEFAULT_XPAGE_ID ) );
882 url.addParameter( PARAMETER_ID_DIGG, diggSubmit.getDigg( ).getIdDigg( ) );
883 url.addParameter( PARAMETER_ID_DIGG_SUBMIT, diggSubmit.getIdDiggSubmit( ) );
884 url.addParameter( PARAMETER_DIGG_COMMENT, "1" );
885 url.addParameter( PARAMETER_DIGG_DETAIL, "1" );
886
887 return url.getUrl( );
888 }
889
890 AppLogService.debug( "DiggResourceRss - DiggSubmit is null when trying to build the URL." );
891
892 return StringUtils.EMPTY;
893 }
894
895
896
897
898
899
900
901
902 private static String buildUrlDigg( String strSiteUrl, Digg digg )
903 {
904 if ( digg != null )
905 {
906 UrlItem url = new UrlItem( strSiteUrl + SLASH + AppPathService.getPortalUrl( ) );
907 url.addParameter( XPageAppService.PARAM_XPAGE_APP,
908 AppPropertiesService.getProperty( PROPERTY_XPAGE_APPLICATION_ID, DEFAULT_XPAGE_ID ) );
909 url.addParameter( PARAMETER_ID_DIGG, digg.getIdDigg( ) );
910
911 return url.getUrl( );
912 }
913
914 AppLogService.debug( "DiggResourceRss - Digg is null when trying to build the URL." );
915
916 return StringUtils.EMPTY;
917 }
918 }