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.service;
35
36 import fr.paris.lutece.plugins.seo.business.FriendlyUrl;
37 import fr.paris.lutece.plugins.seo.business.FriendlyUrlHome;
38 import fr.paris.lutece.plugins.seo.business.UrlRewriterRule;
39 import fr.paris.lutece.plugins.seo.business.UrlRewriterRuleHome;
40 import fr.paris.lutece.portal.service.datastore.DatastoreService;
41 import fr.paris.lutece.portal.service.i18n.I18nService;
42 import fr.paris.lutece.portal.service.template.AppTemplateService;
43 import fr.paris.lutece.portal.service.util.AppPathService;
44 import fr.paris.lutece.portal.service.util.AppPropertiesService;
45 import fr.paris.lutece.util.html.HtmlTemplate;
46
47 import org.apache.commons.io.FileUtils;
48
49 import java.io.File;
50 import java.io.IOException;
51
52 import java.text.DateFormat;
53 import java.text.MessageFormat;
54
55 import java.util.Collection;
56 import java.util.Date;
57 import java.util.HashMap;
58 import java.util.List;
59 import java.util.Locale;
60
61
62
63
64 public final class RuleFileService
65 {
66 private static final String TEMPLATE_FILE = "/admin/plugins/seo/urlrewrite.xml";
67 private static final String MARK_RULES_LIST = "rules_list";
68 private static final String MARK_URL_LIST = "url_list";
69 private static final String PROPERTY_FILE = "seo.configFilePath";
70 private static final String PROPERTY_REWRITE_CONFIG_LOG = "seo.config.log";
71
72
73
74
75 private RuleFileService( )
76 {
77 }
78
79
80
81
82
83
84
85 public static void generateFile( ) throws IOException
86 {
87 String strFilePath = AppPathService.getWebAppPath( ) + AppPropertiesService.getProperty( PROPERTY_FILE );
88 File file = new File( strFilePath );
89 FileUtils.writeStringToFile( file, generateFileContent( ) );
90 }
91
92
93
94
95
96
97 private static String generateFileContent( )
98 {
99 HashMap model = new HashMap( );
100 Collection<UrlRewriterRule> listRules = UrlRewriterRuleHome.findAll( );
101 List<FriendlyUrl> listUrl = FriendlyUrlHome.findAll( );
102
103 model.put( MARK_RULES_LIST, listRules );
104 model.put( MARK_URL_LIST, listUrl );
105
106 HtmlTemplate t = AppTemplateService.getTemplate( TEMPLATE_FILE, Locale.getDefault( ), model );
107
108 String strResult = "OK";
109 String strDate = DateFormat.getDateTimeInstance( ).format( new Date( ) );
110 Object [ ] args = {
111 strDate, listRules.size( ) + listUrl.size( ), strResult
112 };
113 String strLogFormat = I18nService.getLocalizedString( PROPERTY_REWRITE_CONFIG_LOG, Locale.getDefault( ) );
114 String strLog = MessageFormat.format( strLogFormat, args );
115 DatastoreService.setDataValue( SEODataKeys.KEY_REWRITE_CONFIG_UPDATE, strLog );
116 DatastoreService.setDataValue( SEODataKeys.KEY_CONFIG_UPTODATE, DatastoreService.VALUE_TRUE );
117
118 String strFileContent = t.getHtml( );
119
120 int nStartXml = strFileContent.indexOf( "<?xml" );
121 if ( nStartXml != 0 )
122 {
123 strFileContent = strFileContent.substring( nStartXml );
124 }
125
126 return strFileContent;
127 }
128 }