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.rss.service;
35
36 import fr.paris.lutece.plugins.rss.business.RssGeneratedFile;
37 import fr.paris.lutece.plugins.rss.business.RssGeneratedFileHome;
38 import fr.paris.lutece.plugins.rss.web.FeedUtil;
39 import fr.paris.lutece.portal.business.rss.IResourceRss;
40 import fr.paris.lutece.portal.service.plugin.Plugin;
41 import fr.paris.lutece.portal.service.util.AppLogService;
42 import fr.paris.lutece.portal.service.util.AppPathService;
43 import fr.paris.lutece.util.filesystem.DirectoryNotFoundException;
44 import fr.paris.lutece.util.filesystem.FileSystemUtil;
45
46 import java.io.File;
47
48 import java.util.ArrayList;
49 import java.util.List;
50
51
52
53
54
55 public final class AutoUpdatingRss
56 {
57
58
59 private static final String UPDATING = "Updating rss file";
60
61
62
63
64 private AutoUpdatingRss( )
65 {
66 }
67
68
69
70
71
72
73 public static synchronized String processUpdatingRssFileFile( Plugin plugin )
74 {
75
76 List<RssGeneratedFile> listPushRssDatabase = RssGeneratedFileHome.getRssFileList( );
77 List<String> listFileNames = new ArrayList<String>( );
78
79 for ( RssGeneratedFile generatedFile : listPushRssDatabase )
80 {
81 listFileNames.add( generatedFile.getName( ) );
82 }
83
84
85 StringBuffer strLogs = new StringBuffer( );
86
87
88 String strFolderPath = AppPathService.getPath( RssGeneratorService.PROPERTY_RSS_STORAGE_FOLDER_PATH, "" );
89
90
91 if ( !new File( strFolderPath ).exists( ) )
92 {
93 File fileFolder = new File( strFolderPath );
94 fileFolder.mkdir( );
95 }
96
97 List<File> listFiles;
98
99 try
100 {
101 listFiles = FileSystemUtil.getFiles( strFolderPath, "" );
102
103 if ( listFiles.size( ) != 0 )
104 {
105 for ( File file : listFiles )
106 {
107 if ( !listFileNames.contains( file.getName( ) ) )
108 {
109 file.delete( );
110 }
111 }
112 }
113 }
114 catch ( DirectoryNotFoundException e )
115 {
116 AppLogService.error( e.getMessage( ), e );
117 }
118
119
120 for ( RssGeneratedFile generatedFile : listPushRssDatabase )
121 {
122 try
123 {
124
125 String strRss = null;
126
127 if ( ( generatedFile.getPortletId( ) == 0 ) && ( generatedFile.getTypeResourceRss( ) != null ) )
128 {
129 IResourceRss resourceRss = RssService.getInstance( )
130 .getResourceRssInstance( generatedFile.getTypeResourceRss( ),
131 null );
132 resourceRss.setId( generatedFile.getId( ) );
133 resourceRss.setMaxItems( generatedFile.getMaxItems( ) );
134 resourceRss.setEncoding( generatedFile.getEncoding( ) );
135 resourceRss.setFeedType( generatedFile.getFeedType( ) );
136
137 strRss = FeedUtil.getFeed( resourceRss );
138 }
139 else
140 {
141 strRss = RssGeneratorService.createRssDocument( generatedFile.getPortletId( ),
142 generatedFile.getDescription( ), generatedFile.getEncoding( ),
143 generatedFile.getFeedType( ), generatedFile.getMaxItems( ) );
144 }
145
146
147 RssGeneratorService.createFileRss( generatedFile.getName( ), strRss );
148
149
150 RssGeneratedFileHome.update( generatedFile );
151 strLogs.append( UPDATING );
152 }
153 catch ( Exception e )
154 {
155 AppLogService.error( "Error processing AutoUpdatingRssFile ", e );
156 }
157 }
158
159 return strLogs.toString( );
160 }
161 }