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.workflow.modules.fillingdirectory.web;
35
36 import fr.paris.lutece.plugins.directory.business.File;
37 import fr.paris.lutece.plugins.directory.business.PhysicalFile;
38 import fr.paris.lutece.plugins.directory.utils.DirectoryUtils;
39 import fr.paris.lutece.plugins.workflow.modules.fillingdirectory.service.FileHistoryService;
40 import fr.paris.lutece.plugins.workflow.modules.fillingdirectory.service.FillingDirectoryPlugin;
41 import fr.paris.lutece.plugins.workflow.modules.fillingdirectory.service.IFileHistoryService;
42 import fr.paris.lutece.plugins.workflow.modules.fillingdirectory.service.IPhysicalFileHistoryService;
43 import fr.paris.lutece.plugins.workflow.modules.fillingdirectory.service.PhysicalFileHistoryService;
44 import fr.paris.lutece.portal.service.message.AdminMessage;
45 import fr.paris.lutece.portal.service.message.AdminMessageService;
46 import fr.paris.lutece.portal.service.plugin.Plugin;
47 import fr.paris.lutece.portal.service.plugin.PluginService;
48 import fr.paris.lutece.portal.service.spring.SpringContextService;
49 import fr.paris.lutece.portal.service.util.AppLogService;
50
51 import java.io.IOException;
52 import java.io.OutputStream;
53
54 import javax.servlet.http.HttpServletRequest;
55 import javax.servlet.http.HttpServletResponse;
56
57
58
59
60
61
62
63 public final class DoDownloadHistoryFile
64 {
65 private static final String PARAMETER_ID_FILE = "id_file";
66 private static final String MESSAGE_ERROR_DURING_DOWNLOAD_FILE = "directory.message.error_during_download_file";
67
68
69
70
71 private DoDownloadHistoryFile( )
72 {
73 }
74
75
76
77
78
79
80
81
82 public static String doDownloadFile( HttpServletRequest request, HttpServletResponse response )
83 {
84 Plugin plugin = PluginService.getPlugin( FillingDirectoryPlugin.PLUGIN_NAME );
85 String strIdFile = request.getParameter( PARAMETER_ID_FILE );
86 int nIdFile = DirectoryUtils.convertStringToInt( strIdFile );
87 IFileHistoryService fileHistoryService = SpringContextService.getBean( FileHistoryService.BEAN_SERVICE );
88 IPhysicalFileHistoryService physicalFileHistoryService = SpringContextService.getBean( PhysicalFileHistoryService.BEAN_SERVICE );
89 File file = fileHistoryService.findByPrimaryKey( nIdFile, plugin );
90 PhysicalFile physicalFile = ( file != null )
91 ? physicalFileHistoryService.findByPrimaryKey( file.getPhysicalFile( ).getIdPhysicalFile( ), plugin ) : null;
92
93 if ( physicalFile != null )
94 {
95 try
96 {
97 byte[] byteFileOutPut = physicalFile.getValue( );
98 DirectoryUtils.addHeaderResponse( request, response, file.getTitle( ) );
99 response.setContentType( file.getMimeType( ) );
100 response.setContentLength( (int) byteFileOutPut.length );
101
102 OutputStream os = response.getOutputStream( );
103 os.write( byteFileOutPut );
104 os.close( );
105 }
106 catch ( IOException e )
107 {
108 AppLogService.error( e );
109 }
110 }
111
112 return AdminMessageService.getMessageUrl( request, MESSAGE_ERROR_DURING_DOWNLOAD_FILE, AdminMessage.TYPE_STOP );
113 }
114 }