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.folderlisting.web;
35
36 import fr.paris.lutece.plugins.folderlisting.business.portlet.FolderListingPortlet;
37 import fr.paris.lutece.plugins.folderlisting.business.portlet.FolderListingPortletHome;
38 import fr.paris.lutece.portal.business.page.Page;
39 import fr.paris.lutece.portal.business.page.PageHome;
40 import fr.paris.lutece.portal.service.html.EncodingService;
41 import fr.paris.lutece.portal.service.i18n.I18nService;
42 import fr.paris.lutece.portal.service.util.AppLogService;
43 import fr.paris.lutece.portal.service.util.AppPathService;
44 import fr.paris.lutece.portal.web.constants.Parameters;
45
46 import java.io.BufferedInputStream;
47 import java.io.File;
48 import java.io.FileInputStream;
49 import java.io.FileNotFoundException;
50 import java.io.IOException;
51 import java.io.InputStream;
52
53 import javax.servlet.http.HttpServletRequest;
54
55
56
57
58
59 public class FolderListingFileJspBean
60 {
61
62
63
64 private static final String PARAMETER_FILE_NAME = "file";
65 private static final String PARAMETER_DIRECTORY_NAME = "folder";
66 private static final String PARAMETER_PORTLET_ID = "portlet_id";
67 private static final String PARAMETER_PAGE_ID = "page_id";
68 private static final String PARAMETER_MESSAGE_ERROR = "error";
69
70
71 private static final String PROPERTY_ERROR_NOT_FOUND = "folderlisting.error.NotFound";
72 private static final String PROPERTY_ERROR_NOT_ALLOWED = "folderlisting.error.NotAllowed";
73 public static final int FILE_NOT_FOUND = 0;
74 public static final int FILE_NOT_ALLOWED = 1;
75
76
77
78
79 public FolderListingFileJspBean( )
80 {
81 }
82
83
84
85
86
87
88
89
90
91 public String getDirectoryPath( HttpServletRequest request )
92 {
93 String strDirPath = request.getParameter( PARAMETER_DIRECTORY_NAME );
94
95 return strDirPath;
96 }
97
98
99
100
101
102
103
104
105 public byte[] getFileContent( HttpServletRequest request )
106 {
107 String strIdPortlet = request.getParameter( Parameters.PORTLET_ID );
108
109 FolderListingPortlet folderListingPortlet = (FolderListingPortlet) FolderListingPortletHome.findByPrimaryKey( Integer.parseInt(
110 strIdPortlet ) );
111
112
113 File file = new File( AppPathService.getAbsolutePathFromRelativePath( folderListingPortlet.getRootFolderPath( ) +
114 getDirectoryPath( request ) + "/" + getFilename( request ) ) );
115
116 if ( file.exists( ) && file.isFile( ) )
117 {
118 try
119 {
120 final InputStream in0 = new FileInputStream( file );
121 final InputStream in = new BufferedInputStream( in0 );
122
123 final byte[] buf = new byte[(int) file.length( )];
124 int len = 0;
125 int pos = 0;
126
127 do
128 {
129 len = in.read( buf, pos, buf.length - pos );
130 pos += len;
131 }
132 while ( len > 0 );
133
134 in.close( );
135
136 return buf;
137 }
138 catch ( FileNotFoundException e )
139 {
140 AppLogService.error( e.getMessage( ), e );
141
142 return null;
143 }
144 catch ( IOException e )
145 {
146 AppLogService.error( e.getMessage( ), e );
147
148 return null;
149 }
150 }
151
152 return null;
153 }
154
155 public String getFileErrorUrl( HttpServletRequest request, int nErrorType )
156 {
157 String strError = null;
158 String strDirPath = request.getParameter( PARAMETER_DIRECTORY_NAME );
159 String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
160 String strPageId = request.getParameter( PARAMETER_PAGE_ID );
161
162 switch ( nErrorType )
163 {
164 case FILE_NOT_FOUND:
165 strError = I18nService.getLocalizedString( PROPERTY_ERROR_NOT_FOUND, request.getLocale( ) );
166
167 break;
168
169 case FILE_NOT_ALLOWED:
170 strError = I18nService.getLocalizedString( PROPERTY_ERROR_NOT_ALLOWED, request.getLocale( ) );
171
172 break;
173
174 default:
175 strError = I18nService.getLocalizedString( PROPERTY_ERROR_NOT_FOUND, request.getLocale( ) );
176
177 break;
178 }
179
180 strError = EncodingService.encodeUrl( strError );
181
182 String strBaseUrl = AppPathService.getBaseUrl( request );
183 String strParam = PARAMETER_MESSAGE_ERROR + "=" + strError + "&" + PARAMETER_PAGE_ID + "=" + strPageId + "&" +
184 PARAMETER_DIRECTORY_NAME + "_" + strPortletId + "=" + strDirPath + "#" + PARAMETER_PORTLET_ID + "_" +
185 strPortletId;
186 String strUrl = strBaseUrl + AppPathService.getPortalUrl( ) + "?" + strParam;
187
188 return strUrl;
189 }
190
191
192
193
194
195
196
197
198 public String getFilename( HttpServletRequest request )
199 {
200 String strFileName = request.getParameter( PARAMETER_FILE_NAME );
201
202 return strFileName;
203 }
204
205
206
207
208
209
210
211
212 public boolean checkRights( HttpServletRequest request )
213 {
214 String strIdPortlet = request.getParameter( Parameters.PORTLET_ID );
215
216 FolderListingPortlet folderListingPortlet = (FolderListingPortlet) FolderListingPortletHome.findByPrimaryKey( Integer.parseInt(
217 strIdPortlet ) );
218
219 boolean bRights = false;
220
221 Page page = PageHome.findByPrimaryKey( folderListingPortlet.getPageId( ) );
222 bRights = page.isVisible( request );
223
224 return bRights;
225 }
226 }