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.document.modules.export.web;
35
36 import fr.paris.lutece.plugins.document.business.DocumentFilter;
37 import fr.paris.lutece.plugins.document.modules.export.dto.exportdocument.ExportUserDocumentDTO;
38 import fr.paris.lutece.plugins.document.modules.export.service.DocumentExportService;
39 import fr.paris.lutece.plugins.document.service.DocumentPlugin;
40 import fr.paris.lutece.portal.service.message.AdminMessage;
41 import fr.paris.lutece.portal.service.message.AdminMessageService;
42 import fr.paris.lutece.portal.service.plugin.PluginService;
43 import fr.paris.lutece.portal.service.spring.SpringContextService;
44 import fr.paris.lutece.portal.service.util.AppLogService;
45 import fr.paris.lutece.portal.service.util.AppPathService;
46 import fr.paris.lutece.portal.service.util.AppPropertiesService;
47 import fr.paris.lutece.portal.web.admin.PluginAdminPageJspBean;
48
49 import java.io.IOException;
50 import java.io.OutputStream;
51 import java.io.StringWriter;
52 import java.util.List;
53 import java.util.Locale;
54
55 import javax.servlet.http.HttpServletRequest;
56 import javax.servlet.http.HttpServletResponse;
57
58 import au.com.bytecode.opencsv.CSVWriter;
59
60
61
62
63
64
65 public class DocumentExportJspBean extends PluginAdminPageJspBean
66 {
67
68
69 private static final char CONSTANT_SEPARATOR = ';';
70
71 private static final String CONSTANT_EXPORT_FILE_NAME_DEFAULT = "documents_export.csv";
72
73 private static final String[] CONSTANT_HEADER_CSV_FILE =
74 { "Identifiant", "Titre", "Type", "Etat", "Date de début de validité", "Date de fin de validité", "Date de création", "Date de modification", "Espace" };
75
76
77 private static final String PROPERTY_EXPORT_FILE_NAME = "document-export.export_documents.file.name";
78
79 private static final String PROPERTY_EXPORT_FILE_ENCODING = "document-export.export_documents.file.encoding";
80
81 private static final String PROPERTY_PLUGIN_DISABLED = "module.document.export.error.plugin.disabled.message";
82
83 private DocumentExportService _documentExportService = SpringContextService
84 .getBean( "document-export.exportService" );
85
86
87
88
89
90
91
92 public String doExportDocumentsDataList( HttpServletRequest request, HttpServletResponse response )
93 {
94 if ( !PluginService.isPluginEnable( DocumentPlugin.PLUGIN_NAME ) )
95 {
96 return AdminMessageService.getMessageUrl( request, PROPERTY_PLUGIN_DISABLED, AdminMessage.TYPE_ERROR );
97 }
98
99 DocumentFilter filter = new DocumentFilter();
100
101
102
103 filter.setLoadBinaries( false );
104 Locale locale = getLocale();
105
106 List<ExportUserDocumentDTO> listExportResults = _documentExportService.getListDocumentByFilter( filter, locale );
107
108 try
109 {
110 StringWriter strWriter = new StringWriter();
111 CSVWriter csvWriter = new CSVWriter( strWriter, CONSTANT_SEPARATOR );
112 csvWriter.writeNext( CONSTANT_HEADER_CSV_FILE );
113 for ( ExportUserDocumentDTO documentData : listExportResults )
114 {
115 csvWriter.writeNext( documentData.toTabString() );
116 }
117 String strEncoding = AppPropertiesService.getProperty( PROPERTY_EXPORT_FILE_ENCODING );
118 byte[] byteFileOutPut = strWriter.toString().getBytes( strEncoding );
119
120 String strFileName = AppPropertiesService.getProperty( PROPERTY_EXPORT_FILE_NAME, CONSTANT_EXPORT_FILE_NAME_DEFAULT );
121 response.setHeader( "Content-Disposition", "attachment; filename=\"" + strFileName + " \";" );
122 response.setHeader( "Pragma", "public" );
123 response.setHeader( "Expires", "0" );
124 response.setHeader( "Cache-Control", "must-revalidate,post-check=0,pre-check=0" );
125 response.setContentType( "enctype=multipart/form-data" );
126
127 OutputStream os = response.getOutputStream();
128 os.write( byteFileOutPut );
129 os.close();
130
131 csvWriter.close();
132 strWriter.close();
133
134 }
135 catch ( IOException e )
136 {
137 AppLogService.error( e.getMessage(), e );
138 }
139 catch ( Exception e )
140 {
141 AppLogService.error( e.getMessage(), e );
142 }
143
144 return AppPathService.getBaseUrl( request );
145
146 }
147
148 }