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.business;
35
36 import fr.paris.lutece.portal.service.plugin.Plugin;
37 import fr.paris.lutece.util.sql.DAOUtil;
38 import java.util.ArrayList;
39 import java.util.List;
40
41
42
43
44 public final class FileDAO implements IFileDAO
45 {
46
47 private static final String SQL_QUERY_NEW_PK = "SELECT max( id_file ) FROM directory_file";
48 private static final String SQL_QUERY_FIND_BY_PRIMARY_KEY = "SELECT id_file,title,id_physical_file,file_size,mime_type,extension, date_expiration "
49 + " FROM directory_file WHERE id_file = ?";
50 private static final String SQL_QUERY_INSERT = "INSERT INTO directory_file(id_file,title,id_physical_file,file_size,mime_type,extension,date_expiration)"
51 + " VALUES(?,?,?,?,?,?,?)";
52 private static final String SQL_QUERY_DELETE = "DELETE FROM directory_file WHERE id_file = ? ";
53 private static final String SQL_QUERY_UPDATE = "UPDATE directory_file SET "
54 + "id_file=?,title=?,id_physical_file=?,file_size=?,mime_type=?, extension=?, date_expiration=? WHERE id_file = ?";
55 private static final String SQL_QUERY_PURGE = " UPDATE directory_file SET title = ?, file_size = ? WHERE id_file = ?";
56 private static final String SQL_QUERY_SELECT_ALL = " SELECT id_file,title,id_physical_file,file_size,mime_type, extension, date_expiration FROM directory_file ";
57
58
59
60
61 @Override
62 public int newPrimaryKey( Plugin plugin )
63 {
64 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_NEW_PK, plugin );
65 daoUtil.executeQuery( );
66
67 int nKey;
68
69 if ( !daoUtil.next( ) )
70 {
71
72 nKey = 1;
73 }
74
75 nKey = daoUtil.getInt( 1 ) + 1;
76 daoUtil.free( );
77
78 return nKey;
79 }
80
81
82
83
84 @Override
85 public synchronized int insert( File file, Plugin plugin )
86 {
87 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, plugin );
88 daoUtil.setString( 2, file.getTitle( ) );
89
90 if ( file.getPhysicalFile( ) != null )
91 {
92 daoUtil.setInt( 3, file.getPhysicalFile( ).getIdPhysicalFile( ) );
93 }
94 else
95 {
96 daoUtil.setIntNull( 3 );
97 }
98
99 daoUtil.setInt( 4, file.getSize( ) );
100 daoUtil.setString( 5, file.getMimeType( ) );
101 daoUtil.setString( 6, file.getExtension( ) );
102 daoUtil.setTimestamp( 7, file.getDateExpiration( ) );
103 file.setIdFile( newPrimaryKey( plugin ) );
104 daoUtil.setInt( 1, file.getIdFile( ) );
105 daoUtil.executeUpdate( );
106
107 daoUtil.free( );
108
109 return file.getIdFile( );
110 }
111
112
113
114
115 @Override
116 public File load( int nId, Plugin plugin )
117 {
118 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_FIND_BY_PRIMARY_KEY, plugin );
119 daoUtil.setInt( 1, nId );
120 daoUtil.executeQuery( );
121
122 File file = null;
123 PhysicalFile physicalFile = null;
124
125 if ( daoUtil.next( ) )
126 {
127 file = new File( );
128 file.setIdFile( daoUtil.getInt( 1 ) );
129 file.setTitle( daoUtil.getString( 2 ) );
130
131 if ( daoUtil.getObject( 3 ) != null )
132 {
133 physicalFile = new PhysicalFile( );
134 physicalFile.setIdPhysicalFile( daoUtil.getInt( 3 ) );
135 file.setPhysicalFile( physicalFile );
136 }
137
138 file.setSize( daoUtil.getInt( 4 ) );
139 file.setMimeType( daoUtil.getString( 5 ) );
140 file.setExtension( daoUtil.getString( 6 ) );
141 file.setDateExpiration( daoUtil.getTimestamp( 7 ) );
142
143 }
144
145 daoUtil.free( );
146
147 return file;
148 }
149
150
151
152
153 @Override
154 public void delete( int nIdFile, Plugin plugin )
155 {
156 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE, plugin );
157 daoUtil.setInt( 1, nIdFile );
158 daoUtil.executeUpdate( );
159 daoUtil.free( );
160 }
161
162
163
164
165 @Override
166 public void store( File file, Plugin plugin )
167 {
168 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE, plugin );
169 daoUtil.setInt( 1, file.getIdFile( ) );
170 daoUtil.setString( 2, file.getTitle( ) );
171
172 if ( file.getPhysicalFile( ) != null )
173 {
174 daoUtil.setInt( 3, file.getPhysicalFile( ).getIdPhysicalFile( ) );
175 }
176 else
177 {
178 daoUtil.setIntNull( 3 );
179 }
180
181 daoUtil.setInt( 4, file.getSize( ) );
182 daoUtil.setString( 5, file.getMimeType( ) );
183 daoUtil.setString( 6, file.getExtension( ) );
184 daoUtil.setTimestamp( 7, file.getDateExpiration( ) );
185
186 daoUtil.setInt( 8, file.getIdFile( ) );
187 daoUtil.executeUpdate( );
188 daoUtil.free( );
189 }
190
191
192
193
194 public void purge( File file, Plugin plugin )
195 {
196 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_PURGE, plugin );
197 daoUtil.setString( 1, file.getTitle( ) );
198 daoUtil.setInt( 2, 0 );
199 daoUtil.setInt( 3, file.getIdFile( ) );
200 daoUtil.executeUpdate( );
201 daoUtil.free( );
202 }
203
204
205
206
207 public List<File> selectFilesList( Plugin plugin )
208 {
209 List<File> fileList = new ArrayList<>( );
210 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_ALL, plugin );
211 daoUtil.executeQuery( );
212
213 while ( daoUtil.next( ) )
214 {
215 File file = new File( );
216 PhysicalFile physicalFile = null;
217 file.setIdFile( daoUtil.getInt( 1 ) );
218 file.setTitle( daoUtil.getString( 2 ) );
219
220 if ( daoUtil.getObject( 3 ) != null )
221 {
222 physicalFile = new PhysicalFile( );
223 physicalFile.setIdPhysicalFile( daoUtil.getInt( 3 ) );
224 file.setPhysicalFile( physicalFile );
225 }
226
227 file.setSize( daoUtil.getInt( 4 ) );
228 file.setMimeType( daoUtil.getString( 5 ) );
229 file.setExtension( daoUtil.getString( 6 ) );
230 file.setDateExpiration( daoUtil.getTimestamp( 7 ) );
231
232 fileList.add( file );
233 }
234
235 daoUtil.free( );
236
237 return fileList;
238 }
239 }