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.directories.service;
35
36 import java.sql.Timestamp;
37 import java.time.LocalDateTime;
38 import java.util.ArrayList;
39 import java.util.List;
40 import javax.servlet.http.HttpServletRequest;
41 import org.apache.commons.fileupload.FileItem;
42 import fr.paris.lutece.plugins.directories.business.DirectoryEntity;
43 import fr.paris.lutece.plugins.directories.business.DirectoryEntityHome;
44 import fr.paris.lutece.plugins.directories.business.DirectoryResponse;
45 import fr.paris.lutece.plugins.directories.business.DirectoryResponseHome;
46 import fr.paris.lutece.plugins.directories.service.upload.DirectoriesAsynchronousUploadHandler;
47 import fr.paris.lutece.plugins.genericattributes.business.Entry;
48 import fr.paris.lutece.plugins.genericattributes.business.FieldHome;
49 import fr.paris.lutece.plugins.genericattributes.business.GenAttFileItem;
50 import fr.paris.lutece.plugins.genericattributes.business.Response;
51 import fr.paris.lutece.plugins.genericattributes.business.ResponseHome;
52 import fr.paris.lutece.plugins.genericattributes.service.entrytype.EntryTypeServiceManager;
53 import fr.paris.lutece.plugins.genericattributes.service.entrytype.IEntryTypeService;
54 import fr.paris.lutece.portal.business.file.File;
55 import fr.paris.lutece.portal.business.file.FileHome;
56 import fr.paris.lutece.portal.business.physicalfile.PhysicalFile;
57 import fr.paris.lutece.portal.business.physicalfile.PhysicalFileHome;
58 import fr.paris.lutece.portal.business.user.AdminUser;
59 import fr.paris.lutece.portal.service.admin.AdminUserService;
60
61
62
63
64 public class DirectoriesService
65 {
66 private static DirectoriesServicervice/DirectoriesService.html#DirectoriesService">DirectoriesService _singleton = new DirectoriesService( );
67
68
69
70
71
72
73 public static DirectoriesService getInstance( )
74 {
75 return _singleton;
76 }
77
78
79
80
81
82
83
84 public List<DirectoryEntity> getListDocWithoutBinaries( )
85 {
86 List<DirectoryEntity> listDirectoryEntity = DirectoryEntityHome.getDirectoryEntitiesList( );
87 for ( DirectoryEntity directoryEntity : listDirectoryEntity )
88 {
89 List<DirectoryResponse> listDirectoryResponse = DirectoryResponseHome.getDirectoryResponsesListByIdEntity( directoryEntity.getId( ) );
90 List<Response> listResponse = new ArrayList<>( );
91 for ( DirectoryResponse directoryResponse : listDirectoryResponse )
92 {
93 Response response = ResponseHome.findByPrimaryKey( directoryResponse.getIdResponse( ) );
94 if ( response.getFile( ) == null )
95 {
96 listResponse.add( response );
97 }
98 }
99 directoryEntity.setResponses( listResponse );
100 }
101 return listDirectoryEntity;
102 }
103
104
105
106
107
108
109
110
111 public DirectoryEntity findByPrimaryKeyWithoutBinaries( int nIdDirectoryEntity )
112 {
113 DirectoryEntity directoryEntity = DirectoryEntityHome.findByPrimaryKey( nIdDirectoryEntity );
114 List<DirectoryResponse> listDirectoryResponse = DirectoryResponseHome.getDirectoryResponsesListByIdEntity( directoryEntity.getId( ) );
115 List<Response> listResponse = new ArrayList<>( );
116 for ( DirectoryResponse directoryResponse : listDirectoryResponse )
117 {
118 Response response = ResponseHome.findByPrimaryKey( directoryResponse.getId( ) );
119 if ( response.getFile( ) == null )
120 {
121 listResponse.add( response );
122 }
123 }
124 directoryEntity.setResponses( listResponse );
125 return directoryEntity;
126 }
127
128
129
130
131
132
133
134
135
136
137 public static List<Response> findAndBuildListResponse( HttpServletRequest request, int nIdEntity )
138 {
139 DirectoriesAsynchronousUploadHandler.getHandler( ).removeSessionFiles( request.getSession( ) );
140 List<DirectoryResponse> listDirectoryResponse = DirectoryResponseHome.getDirectoryResponsesListByIdEntity( nIdEntity );
141 List<Response> listResponse = new ArrayList<>( );
142 for ( DirectoryResponse directoryResponse : listDirectoryResponse )
143 {
144 Response response = ResponseHome.findByPrimaryKey( directoryResponse.getIdResponse( ) );
145 if ( ( response.getFile( ) != null ) && ( response.getFile( ).getIdFile( ) > 0 ) )
146 {
147 File file = FileHome.findByPrimaryKey( response.getFile( ).getIdFile( ) );
148 PhysicalFile physicalFile = PhysicalFileHome.findByPrimaryKey( file.getPhysicalFile( ).getIdPhysicalFile( ) );
149 FileItem fileItem = new GenAttFileItem( physicalFile.getValue( ), file.getTitle( ) );
150 DirectoriesAsynchronousUploadHandler.getHandler( ).addFileItemToUploadedFilesList( fileItem,
151 IEntryTypeService.PREFIX_ATTRIBUTE + Integer.toString( response.getEntry( ).getIdEntry( ) ), request );
152 response.setFile( file );
153 }
154 listResponse.add( response );
155 }
156 return listResponse;
157 }
158
159
160
161
162
163
164
165
166
167
168
169 public static void createEntity( HttpServletRequest request, int nIdDirectory, String strEntityTitle )
170 {
171 List<Entry> listEntryFirstLevel = EntryService.getDirectoryEntryList( nIdDirectory, true );
172 List<Response> listResponse = new ArrayList<>( );
173 for ( Entry entry : listEntryFirstLevel )
174 {
175 entry.setFields( FieldHome.getFieldListByIdEntry( entry.getIdEntry( ) ) );
176 EntryTypeServiceManager.getEntryTypeService( entry ).getResponseData( entry, request, listResponse, request.getLocale( ) );
177 }
178 AdminUser currentUser = AdminUserService.getAdminUser( request );
179 DirectoryEntityries/business/DirectoryEntity.html#DirectoryEntity">DirectoryEntity entity = new DirectoryEntity( );
180 entity.setIdDirectory( nIdDirectory );
181 entity.setDateCreation( Timestamp.valueOf( LocalDateTime.now( ) ) );
182 entity.setIdCreator( currentUser.getUserId( ) );
183 entity.setTitle( strEntityTitle );
184 DirectoryEntityHome.create( entity );
185 createEntityResponse( listResponse, nIdDirectory, entity.getId( ) );
186 DirectoriesAsynchronousUploadHandler.getHandler( ).removeSessionFiles( request.getSession( ) );
187 }
188
189
190
191
192
193
194
195
196
197
198
199
200
201 public static void modifyEntity( HttpServletRequest request, int nIdDirectory, int nIdEntity, String strEntityTitle )
202 {
203 List<Entry> listEntryFirstLevel = EntryService.getDirectoryEntryList( nIdDirectory, true );
204 List<Response> listResponse = new ArrayList<>( );
205 for ( Entry entry : listEntryFirstLevel )
206 {
207 entry.setFields( FieldHome.getFieldListByIdEntry( entry.getIdEntry( ) ) );
208 EntryTypeServiceManager.getEntryTypeService( entry ).getResponseData( entry, request, listResponse, request.getLocale( ) );
209 }
210 removeEntityResponse( nIdEntity );
211 createEntityResponse( listResponse, nIdDirectory, nIdEntity );
212 AdminUser currentUser = AdminUserService.getAdminUser( request );
213 DirectoryEntity entity = DirectoryEntityHome.findByPrimaryKey( nIdEntity );
214 entity.setTitle( strEntityTitle );
215 entity.setUpdate( Timestamp.valueOf( LocalDateTime.now( ) ) );
216 entity.setIdModificator( currentUser.getUserId( ) );
217 DirectoryEntityHome.update( entity );
218 }
219
220
221
222
223
224
225
226
227
228
229
230
231 public static void createEntityResponse( List<Response> listResponse, int nIdDirectory, int nIdEntity )
232 {
233 for ( Response response : listResponse )
234 {
235 DirectoryResponse/DirectoryResponse.html#DirectoryResponse">DirectoryResponse directoryResponse = new DirectoryResponse( );
236 ResponseHome.create( response );
237 directoryResponse.setIdDirectory( nIdDirectory );
238 directoryResponse.setIdResponse( response.getIdResponse( ) );
239 directoryResponse.setIdEntity( nIdEntity );
240 DirectoryResponseHome.create( directoryResponse );
241 }
242 }
243
244
245
246
247
248
249
250 public static void removeEntityResponse( int nIdEntity )
251 {
252 List<DirectoryResponse> listDirectoryResponse = DirectoryResponseHome.getDirectoryResponsesListByIdEntity( nIdEntity );
253 for ( DirectoryResponse directoryResponse : listDirectoryResponse )
254 {
255 ResponseHome.remove( directoryResponse.getIdResponse( ) );
256 DirectoryResponseHome.remove( directoryResponse.getId( ) );
257 }
258 }
259 }