1 package fr.paris.lutece.plugins.directory.modules.pdfproducerarchive.service.daemon;
2
3 import fr.paris.lutece.plugins.directory.business.Directory;
4 import fr.paris.lutece.plugins.directory.business.RecordField;
5 import fr.paris.lutece.plugins.directory.business.RecordFieldFilter;
6 import fr.paris.lutece.plugins.directory.modules.pdfproducer.business.producerconfig.DefaultConfigProducer;
7 import fr.paris.lutece.plugins.directory.modules.pdfproducer.business.producerconfig.IConfigProducer;
8 import fr.paris.lutece.plugins.directory.modules.pdfproducer.service.ConfigProducerService;
9 import fr.paris.lutece.plugins.directory.modules.pdfproducer.utils.PDFUtils;
10 import fr.paris.lutece.plugins.directory.modules.pdfproducerarchive.service.DirectoryManageZipBasketService;
11 import fr.paris.lutece.portal.business.user.AdminUserHome;
12 import fr.paris.lutece.portal.service.plugin.Plugin;
13 import fr.paris.lutece.portal.service.spring.SpringContextService;
14 import fr.paris.lutece.util.string.StringUtil;
15
16 import java.util.List;
17 import java.util.Locale;
18
19
20 public class AsyncAddZipBasketService implements Runnable
21 {
22 private static final String DEFAULT_TYPE_FILE_NAME = "default";
23 private static final String DIRECTORY_ENTRY_FILE_NAME = "directory_entry";
24
25 private static final DirectoryManageZipBasketService _manageZipBasketService = SpringContextService
26 .getBean( "directory-pdfproducer-archive.directoryManageZipBasketService" );
27 private static final ConfigProducerService _manageConfigProducerService = SpringContextService
28 .getBean( "directory-pdfproducer.manageConfigProducer" );
29
30 private int _nIdAdminUser;
31 private Plugin _plugin;
32 private int _nIdDirectory;
33 private String[] _listIdRecord;
34 private Locale _locale;
35
36
37
38
39 @SuppressWarnings( "unused" )
40 private AsyncAddZipBasketService( )
41 {
42
43 }
44
45
46
47
48
49
50
51
52
53
54 public AsyncAddZipBasketService( Locale locale, int nIdAdminUser, Plugin plugin, int nIdDirectory,
55 String[] listIdRecord )
56 {
57 _locale = locale;
58 _nIdAdminUser = nIdAdminUser;
59 _plugin = plugin;
60 _nIdDirectory = nIdDirectory;
61 _listIdRecord = listIdRecord;
62 }
63
64
65
66
67
68 @Override
69 public void run( )
70 {
71 if ( _listIdRecord == null || _listIdRecord.length == 0 || _nIdDirectory <= 0 || _nIdAdminUser <= 0 )
72 {
73 return;
74 }
75
76
77 Directory directory = _manageZipBasketService.getDirectory( _nIdDirectory );
78
79
80 int nIdConfig = _manageConfigProducerService.loadDefaultConfig( _plugin, _nIdDirectory );
81 IConfigProducer configProducer = null;
82
83 if ( ( nIdConfig == -1 ) || ( nIdConfig == 0 ) )
84 {
85 configProducer = new DefaultConfigProducer( );
86 }
87 else
88 {
89 configProducer = _manageConfigProducerService.loadConfig( _plugin, nIdConfig );
90 }
91
92 String strTypeConfigFileName = configProducer.getTypeConfigFileName( );
93
94 for ( String strIdRecord : _listIdRecord )
95 {
96 int nIdRecord = Integer.parseInt( strIdRecord );
97 String strName = null;
98
99
100 if ( DEFAULT_TYPE_FILE_NAME.equals( strTypeConfigFileName ) )
101 {
102 strName = PDFUtils.doPurgeNameFile( StringUtil.replaceAccent( directory.getTitle( ) )
103 .replace( " ", "_" ) + "_" + nIdRecord );
104 }
105 else if ( DIRECTORY_ENTRY_FILE_NAME.equals( strTypeConfigFileName ) )
106 {
107 RecordFieldFilter filter = new RecordFieldFilter( );
108 filter.setIdRecord( nIdRecord );
109 filter.setIdEntry( configProducer.getIdEntryFileName( ) );
110
111 List<RecordField> listRecordField = _manageZipBasketService.getRecordFields( filter );
112
113 for ( RecordField recordField : listRecordField )
114 {
115 strName = PDFUtils.doPurgeNameFile( recordField.getEntry( ).convertRecordFieldValueToString(
116 recordField, _locale, false, false ) );
117 }
118 }
119 else
120 {
121 strName = PDFUtils.doPurgeNameFile( configProducer.getTextFileName( ) + "_" + nIdRecord );
122 }
123
124 boolean bAllExportAlreadyExists = _manageZipBasketService.existsZipBasket( _nIdAdminUser, _plugin,
125 _nIdDirectory, -1 );
126
127 if ( !bAllExportAlreadyExists )
128 {
129 _manageZipBasketService.addZipBasket( AdminUserHome.findByPrimaryKey( _nIdAdminUser ), _locale,
130 strName, _nIdAdminUser, _plugin, _nIdDirectory, nIdRecord,
131 _manageConfigProducerService.loadListConfigEntry( _plugin, nIdConfig ) );
132 }
133 }
134 }
135 }