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.seo.modules.suggest.service;
35
36 import java.text.MessageFormat;
37 import java.util.List;
38
39 import fr.paris.lutece.plugins.suggest.business.Suggest;
40 import fr.paris.lutece.plugins.suggest.business.SuggestFilter;
41 import fr.paris.lutece.plugins.suggest.business.SuggestHome;
42 import fr.paris.lutece.plugins.suggest.service.SuggestPlugin;
43 import fr.paris.lutece.plugins.seo.business.FriendlyUrl;
44 import fr.paris.lutece.plugins.seo.service.FriendlyUrlUtils;
45 import fr.paris.lutece.plugins.seo.service.SEODataKeys;
46 import fr.paris.lutece.plugins.seo.service.generator.FriendlyUrlGenerator;
47 import fr.paris.lutece.plugins.seo.service.generator.GeneratorOptions;
48 import fr.paris.lutece.plugins.seo.service.sitemap.SitemapUtils;
49 import fr.paris.lutece.portal.service.datastore.DatastoreService;
50 import fr.paris.lutece.portal.service.plugin.PluginService;
51
52
53
54
55
56 public class SuggestFriendlyUrlGenerator implements FriendlyUrlGenerator
57 {
58 private static final String GENERATOR_NAME = "Suggestlike Friendly URL Generator";
59 private static final String TECHNICAL_URL = "/jsp/site/Portal.jsp?page=suggest&id_suggest={0}";
60 private static final String SLASH = "/";
61 private static final String PATH_SUGGEST = "/suggest/";
62 private static final String DEFAULT_CHANGE_FREQ = SitemapUtils.CHANGE_FREQ_VALUES[3];
63 private static final String DEFAULT_PRIORITY = SitemapUtils.PRIORITY_VALUES[3];
64 private boolean _bCanonical;
65 private boolean _bSitemap;
66 private String _strChangeFreq;
67 private String _strPriority;
68
69
70
71
72 @Override
73 public String generate( List<FriendlyUrl> list, GeneratorOptions options )
74 {
75 SuggestFilter filter = new SuggestFilter( );
76 filter.setIdState( Suggest.STATE_ENABLE );
77
78 List<Suggest> listSuggest = SuggestHome.getSuggestList( filter, PluginService.getPlugin( SuggestPlugin.PLUGIN_NAME ) );
79
80
81 init( );
82
83 for ( Suggest suggest : listSuggest )
84 {
85
86 FriendlyUrl url = new FriendlyUrl( );
87
88 if ( options.isAddPath( ) )
89 {
90 String strPath = PATH_SUGGEST;
91 url.setFriendlyUrl( strPath + FriendlyUrlUtils.convertToFriendlyUrl( suggest.getTitle( )) );
92 }
93 else
94 {
95
96 url.setFriendlyUrl( SLASH + FriendlyUrlUtils.convertToFriendlyUrl( suggest.getTitle( ) ) );
97 }
98
99 Object[] args = { suggest.getIdSuggest() };
100 String strTechnicalUrl = MessageFormat.format( TECHNICAL_URL, args );
101 url.setTechnicalUrl( strTechnicalUrl );
102 url.setCanonical( _bCanonical );
103 url.setSitemap( _bSitemap );
104 url.setSitemapChangeFreq( _strChangeFreq );
105 url.setSitemapLastmod( SitemapUtils.formatDate( suggest.getDateCreation() ) );
106 url.setSitemapPriority( _strPriority );
107 list.add( url );
108 }
109
110 return "";
111 }
112
113
114
115
116 @Override
117 public String getName( )
118 {
119 return GENERATOR_NAME;
120 }
121
122
123
124
125 private void init( )
126 {
127 String strKeyPrefix = SEODataKeys.PREFIX_GENERATOR + getClass( ).getName( );
128 _bCanonical = DatastoreService.getDataValue( strKeyPrefix + SEODataKeys.SUFFIX_CANONICAL,
129 DatastoreService.VALUE_TRUE ).equals( DatastoreService.VALUE_TRUE );
130 _bSitemap = DatastoreService.getDataValue( strKeyPrefix + SEODataKeys.SUFFIX_SITEMAP,
131 DatastoreService.VALUE_TRUE ).equals( DatastoreService.VALUE_TRUE );
132 _strChangeFreq = DatastoreService.getDataValue( strKeyPrefix + SEODataKeys.SUFFIX_CHANGE_FREQ,
133 DEFAULT_CHANGE_FREQ );
134 _strPriority = DatastoreService.getDataValue( strKeyPrefix + SEODataKeys.SUFFIX_PRIORITY, DEFAULT_PRIORITY );
135 }
136 }