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.directory.modules.exportfile.service;
35
36 import fr.paris.lutece.plugins.directory.business.DirectoryHome;
37 import fr.paris.lutece.plugins.directory.business.EntryFilter;
38 import fr.paris.lutece.plugins.directory.business.EntryHome;
39 import fr.paris.lutece.plugins.directory.business.File;
40 import fr.paris.lutece.plugins.directory.business.IEntry;
41 import fr.paris.lutece.plugins.directory.business.Record;
42 import fr.paris.lutece.plugins.directory.business.RecordField;
43 import fr.paris.lutece.plugins.directory.business.RecordFieldFilter;
44 import fr.paris.lutece.plugins.directory.business.RecordFieldHome;
45 import fr.paris.lutece.plugins.directory.business.RecordHome;
46 import fr.paris.lutece.plugins.directory.service.DirectoryPlugin;
47 import fr.paris.lutece.plugins.directory.utils.DirectoryUtils;
48 import fr.paris.lutece.portal.service.admin.AdminUserService;
49 import fr.paris.lutece.portal.service.plugin.Plugin;
50 import fr.paris.lutece.portal.service.plugin.PluginService;
51 import fr.paris.lutece.portal.service.util.AppPathService;
52 import fr.paris.lutece.portal.service.util.AppPropertiesService;
53 import fr.paris.lutece.util.ReferenceItem;
54 import fr.paris.lutece.util.ReferenceList;
55
56 import org.apache.commons.lang.StringUtils;
57
58 import java.sql.Timestamp;
59 import java.text.SimpleDateFormat;
60 import java.util.ArrayList;
61 import java.util.List;
62
63 import javax.servlet.http.HttpServletRequest;
64
65
66
67
68 public class DirectoryService
69 {
70 private static final String PROPERTY_ENTRY_TYPE_CAMERA = "module.directory.exportfile.entry_type.camera";
71 private static final String PROPERTY_ENTRY_TYPE_FILE = "module.directory.exportfile.entry_type.file";
72 private static final String PROPERTY_ENTRY_TYPE_IMAGE = "directory.resource_rss.entry_type_image";
73 private static final String PROPERTY_ENTRY_TYPE_GEOLOCATION = "directory.entry_type.geolocation";
74
75 private static final String DATE_CREATION_RECORD_TITLE = "creation date";
76 public static final String DATE_CREATION_RECORD_CODE = "9999999";
77
78 private static DirectoryService _singleton;
79
80
81
82
83 public final Plugin _pluginDirectory = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
84
85
86
87
88 public static DirectoryService getService( )
89 {
90 if ( _singleton == null )
91 {
92 _singleton = new DirectoryService( );
93
94 return _singleton;
95 }
96
97 return _singleton;
98 }
99
100
101
102
103
104
105 public ReferenceList getListDirectories( )
106 {
107 Plugin pluginDirectory = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
108 ReferenceList listDirectories = DirectoryHome.getDirectoryList( pluginDirectory );
109 ReferenceList refenreceListDirectories = new ReferenceList( );
110 refenreceListDirectories.addItem( DirectoryUtils.CONSTANT_ID_NULL, StringUtils.EMPTY );
111
112 if ( listDirectories != null )
113 {
114 refenreceListDirectories.addAll( listDirectories );
115 }
116
117 return refenreceListDirectories;
118 }
119
120
121
122
123
124
125
126
127
128
129 public ReferenceList getListEntries( int nIdDirectory, HttpServletRequest request )
130 {
131 if ( nIdDirectory != -1 )
132 {
133 Plugin pluginDirectory = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
134 List<IEntry> listEntries = DirectoryUtils.getFormEntries( nIdDirectory, pluginDirectory, AdminUserService.getAdminUser( request ) );
135 ReferenceList referenceList = new ReferenceList( );
136
137 for ( IEntry entry : listEntries )
138 {
139 if ( entry.getEntryType( ).getComment( ) )
140 {
141 continue;
142 }
143
144 if ( entry.getEntryType( ).getGroup( ) )
145 {
146 if ( entry.getChildren( ) != null )
147 {
148 for ( IEntry child : entry.getChildren( ) )
149 {
150 if ( child.getEntryType( ).getComment( ) )
151 {
152 continue;
153 }
154
155 ReferenceItem referenceItem = new ReferenceItem( );
156 referenceItem.setCode( String.valueOf( child.getIdEntry( ) ) );
157 referenceItem.setName( child.getTitle( ) );
158 referenceList.add( referenceItem );
159 }
160 }
161 }
162 else
163 {
164 ReferenceItem referenceItem = new ReferenceItem( );
165 referenceItem.setCode( String.valueOf( entry.getIdEntry( ) ) );
166 referenceItem.setName( entry.getTitle( ) );
167 referenceList.add( referenceItem );
168 }
169 }
170
171 ReferenceItem referenceItem = new ReferenceItem( );
172 referenceItem.setCode( DATE_CREATION_RECORD_CODE );
173 referenceItem.setName( DATE_CREATION_RECORD_TITLE );
174 referenceList.add( referenceItem );
175 return referenceList;
176 }
177 else
178 {
179 return new ReferenceList( );
180 }
181 }
182
183
184
185
186
187
188
189 public List<IEntry> getListEntries( int nidDirectory )
190 {
191 Plugin pluginDirectory = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
192 List<IEntry> listEntries = new ArrayList<IEntry>( );
193 EntryFilter entryFilter = new EntryFilter( );
194 entryFilter.setIdDirectory( nidDirectory );
195
196 listEntries = EntryHome.getEntryList( entryFilter, pluginDirectory );
197
198 return listEntries;
199 }
200
201
202
203
204
205
206
207
208
209 public File getRecordFieldValue( int nIdEntry, int nIdRecord, int nIdDirectory )
210 {
211 Plugin pluginDirectory = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
212
213
214 IEntry entry = EntryHome.findByPrimaryKey( nIdEntry, pluginDirectory );
215
216 if ( ( entry != null ) )
217 {
218
219 RecordFieldFilter recordFieldFilter = new RecordFieldFilter( );
220 recordFieldFilter.setIdDirectory( nIdDirectory );
221 recordFieldFilter.setIdEntry( entry.getIdEntry( ) );
222 recordFieldFilter.setIdRecord( nIdRecord );
223
224 List<RecordField> listRecordFields = RecordFieldHome.getRecordFieldList( recordFieldFilter, pluginDirectory );
225
226 if ( ( entry.getEntryType( ).getIdType( ) == AppPropertiesService.getPropertyInt( PROPERTY_ENTRY_TYPE_IMAGE, 10 ) )
227 || entry.getEntryType( ).getIdType( ) == AppPropertiesService.getPropertyInt( PROPERTY_ENTRY_TYPE_FILE, 8 )
228 || entry.getEntryType( ).getIdType( ) == AppPropertiesService.getPropertyInt( PROPERTY_ENTRY_TYPE_CAMERA, 23 ) )
229 {
230 if ( listRecordFields.size( ) >= 1 )
231 {
232 return listRecordFields.get( 0 ).getFile( );
233 }
234 else
235 {
236 return null;
237 }
238 }
239
240 }
241
242 return null;
243 }
244
245
246
247
248
249
250
251 public List<Record> getListRecord( int nIdDirectory, int nIdEntry )
252 {
253 RecordFieldFilter filter = new RecordFieldFilter( );
254 filter.setIdDirectory( nIdDirectory );
255 filter.setIdEntry( nIdEntry );
256
257 List<Record> listRecord = RecordHome.getListRecord( filter, _pluginDirectory );
258
259 return listRecord;
260 }
261
262 public Timestamp getDateCreation( int nIdRecord, int nIdDirectory )
263 {
264 Plugin pluginDirectory = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
265
266 RecordFieldFilter recordFieldFilter = new RecordFieldFilter( );
267 recordFieldFilter.setIdDirectory( nIdDirectory );
268 recordFieldFilter.setIdRecord( nIdRecord );
269
270 List<RecordField> listRecordFields = RecordFieldHome.getRecordFieldList( recordFieldFilter, pluginDirectory );
271
272 if ( ( listRecordFields != null ) && !listRecordFields.isEmpty( ) && ( listRecordFields.get( 0 ) != null ) )
273 {
274 return listRecordFields.get( 0 ).getRecord( ).getDateCreation( );
275 }
276
277 return null;
278 }
279
280
281
282
283
284
285
286
287
288 public String getRecordFieldStringValue( int nIdEntry, int nIdRecord, int nIdDirectory )
289 {
290 String strRecordFieldValue = StringUtils.EMPTY;
291 Plugin pluginDirectory = PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME );
292
293 IEntry entry = EntryHome.findByPrimaryKey( nIdEntry, pluginDirectory );
294
295 if ( ( entry != null ) )
296 {
297
298 RecordFieldFilter recordFieldFilter = new RecordFieldFilter( );
299 recordFieldFilter.setIdDirectory( nIdDirectory );
300 recordFieldFilter.setIdEntry( entry.getIdEntry( ) );
301 recordFieldFilter.setIdRecord( nIdRecord );
302
303 List<RecordField> listRecordFields = RecordFieldHome.getRecordFieldList( recordFieldFilter, pluginDirectory );
304
305 if ( entry.getEntryType( ).getIdType( ) == AppPropertiesService.getPropertyInt( PROPERTY_ENTRY_TYPE_GEOLOCATION, 16 ) )
306 {
307 if ( listRecordFields.size( ) >= 4 )
308 {
309 return listRecordFields.get( 2 ).getValue( ) + ", " + listRecordFields.get( 3 ).getValue( );
310 }
311 else
312 {
313 return StringUtils.EMPTY;
314 }
315 }
316
317 if ( ( entry.getEntryType( ).getIdType( ) == AppPropertiesService.getPropertyInt( PROPERTY_ENTRY_TYPE_IMAGE, 10 ) )
318 || ( entry.getEntryType( ).getIdType( ) == 8 ) )
319 {
320 if ( listRecordFields.size( ) >= 1 )
321 {
322 return listRecordFields.get( 0 ).getFile( ).getTitle( );
323 }
324 else
325 {
326 return StringUtils.EMPTY;
327 }
328 }
329
330 if ( ( listRecordFields != null ) && !listRecordFields.isEmpty( ) && ( listRecordFields.get( 0 ) != null ) )
331 {
332 RecordField recordFieldIdDemand = listRecordFields.get( 0 );
333 strRecordFieldValue = recordFieldIdDemand.getValue( );
334
335 if ( recordFieldIdDemand.getField( ) != null )
336 {
337 strRecordFieldValue = recordFieldIdDemand.getField( ).getTitle( );
338 }
339 }
340 }
341
342 return strRecordFieldValue;
343 }
344
345 }