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.appointment.service.export;
35
36 import java.io.IOException;
37 import java.nio.file.Path;
38 import java.nio.file.Paths;
39 import java.text.SimpleDateFormat;
40 import java.util.ArrayList;
41 import java.util.Calendar;
42 import java.util.List;
43 import java.util.Locale;
44
45 import fr.paris.lutece.plugins.appointment.web.dto.AppointmentDTO;
46 import fr.paris.lutece.plugins.filegenerator.service.IFileGenerator;
47 import fr.paris.lutece.portal.service.i18n.I18nService;
48 import fr.paris.lutece.portal.service.util.AppPropertiesService;
49 import fr.paris.lutece.util.file.FileUtil;
50
51 public class ExcelAppointmentGenerator implements IFileGenerator
52 {
53 private static final String KEY_RESOURCE_TYPE = "appointment.appointment.name";
54 private static final String KEY_FILE_DESCRIPTION = "appointment.export.file.description";
55 private static final String EXCEL_MIME_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
56 private static final String TMP_DIR = System.getProperty( "java.io.tmpdir" );
57 private static final boolean ZIP_EXPORT = Boolean.parseBoolean( AppPropertiesService.getProperty( "appointment.export.xls.zip", "false" ) );
58 private static final String EXCEL_FILE_EXTENSION = ".xlsx";
59
60 private final String _fileName;
61 private final String _fileDescription;
62 private final List<String> _defaultColumnList;
63 private final Locale _locale;
64 private final List<AppointmentDTO> _listAppointmentsDTO;
65 private final List<Integer> _entryList;
66
67 public ExcelAppointmentGenerator( List<String> defaultColumnList, Locale locale, List<AppointmentDTO> listAppointmentsDTO, List<Integer> entryList )
68 {
69 super( );
70 _fileName = new SimpleDateFormat( "yyyyMMdd-hhmm" ).format( Calendar.getInstance( locale ).getTime( ) ) + "_"
71 + I18nService.getLocalizedString( KEY_RESOURCE_TYPE, locale );
72 _fileDescription = I18nService.getLocalizedString( KEY_FILE_DESCRIPTION, locale );
73 this._defaultColumnList = new ArrayList<>( defaultColumnList );
74 this._locale = locale;
75 this._listAppointmentsDTO = new ArrayList<>( listAppointmentsDTO );
76 this._entryList = new ArrayList<>( entryList );
77 }
78
79 @Override
80 public Path generateFile( ) throws IOException
81 {
82 Path excelFile = Paths.get( TMP_DIR, _fileName + EXCEL_FILE_EXTENSION );
83 AppointmentExportService.buildExcelFileWithAppointments( _defaultColumnList, _entryList, excelFile, _locale, _listAppointmentsDTO );
84 return excelFile;
85 }
86
87 @Override
88 public String getFileName( )
89 {
90
91 return _fileName + ( isZippable( ) ? FileUtil.EXTENSION_ZIP : EXCEL_FILE_EXTENSION );
92 }
93
94 @Override
95 public String getMimeType( )
96 {
97 return isZippable( ) ? FileUtil.CONSTANT_MIME_TYPE_ZIP : EXCEL_MIME_TYPE;
98 }
99
100 @Override
101 public String getDescription( )
102 {
103 return _fileDescription;
104 }
105
106 @Override
107 public boolean isZippable( )
108 {
109 return ZIP_EXPORT;
110 }
111 }