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.archive.business;
35
36 import fr.paris.lutece.plugins.archive.util.ArchiveConstants;
37 import fr.paris.lutece.portal.service.plugin.Plugin;
38 import fr.paris.lutece.util.sql.DAOUtil;
39
40
41
42
43
44 public class ArchiveItemDAO implements IArchiveItemDAO
45 {
46 private static final String SQL_QUERY_NEW_PK = "SELECT max(id_archive_item) FROM archive_item";
47 private static final String SQL_QUERY_SELECT_NEXT_MAIL_ITEM_QUEUE_ID = "SELECT min(id_archive_item) FROM archive_item WHERE state='" +
48 ArchiveConstants.ARCHIVE_STATE_INITIAL + "'";
49 private static final String SQL_QUERY_LOAD_ARCHIVE_ITEM = "SELECT id_archive_item,folder_to_archive,archive_destination,archive_name,archive_type,archive_mime_type,state FROM archive_item WHERE id_archive_item = ? ";
50 private static final String SQL_QUERY_INSERT = " INSERT INTO archive_item( id_archive_item,folder_to_archive,archive_destination,archive_name,archive_type,archive_mime_type,state) VALUES( ? ,? ,? ,? ,?,?,?) ";
51 private static final String SQL_QUERY_UPDATE_STATE = " UPDATE archive_item SET state=? WHERE id_archive_item = ? ";
52 private static final String SQL_QUERY_DELETE_ARCHIVE_ITEM = " DELETE FROM archive_item WHERE id_archive_item = ?";
53
54
55
56
57
58
59 private int newPrimaryKey( Plugin plugin )
60 {
61 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_NEW_PK, plugin );
62 daoUtil.executeQuery( );
63
64 int nKey;
65
66 if ( !daoUtil.next( ) )
67 {
68
69 nKey = 1;
70 }
71
72 nKey = daoUtil.getInt( 1 ) + 1;
73
74 daoUtil.free( );
75
76 return nKey;
77 }
78
79
80
81
82 public int nextArchiveItemId( Plugin plugin )
83 {
84 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_NEXT_MAIL_ITEM_QUEUE_ID );
85
86 daoUtil.executeQuery( );
87
88 int nIdMailItemQueue = -1;
89
90 if ( daoUtil.next( ) )
91 {
92 nIdMailItemQueue = daoUtil.getInt( 1 );
93 }
94
95 daoUtil.free( );
96
97 return nIdMailItemQueue;
98 }
99
100
101
102
103 public void updateState( int nIdArchiveItem, String strState, Plugin plugin )
104 {
105 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE_STATE, plugin );
106 daoUtil.setString( 1, strState );
107 daoUtil.setInt( 2, nIdArchiveItem );
108
109 daoUtil.executeUpdate( );
110 daoUtil.free( );
111 }
112
113
114
115
116 public synchronized int insert( ArchiveItem archiveItem, Plugin plugin )
117 {
118 int nIdPrimaryKey = newPrimaryKey( plugin );
119 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, plugin );
120
121 daoUtil.setInt( 1, nIdPrimaryKey );
122 daoUtil.setString( 2, archiveItem.getFolderToArchive( ) );
123 daoUtil.setString( 3, archiveItem.getArchiveDestination( ) );
124 daoUtil.setString( 4, archiveItem.getArchiveName( ) );
125 daoUtil.setString( 5, archiveItem.getArchiveType( ) );
126 daoUtil.setString( 6, archiveItem.getArchiveMimeType( ) );
127 daoUtil.setString( 7, archiveItem.getState( ) );
128
129 daoUtil.executeUpdate( );
130 daoUtil.free( );
131
132 return nIdPrimaryKey;
133 }
134
135
136
137
138 public ArchiveItem load( int nIdMailItemQueue, Plugin plugin )
139 {
140 ArchiveItem archiveItem = null;
141
142 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_LOAD_ARCHIVE_ITEM, plugin );
143 daoUtil.setInt( 1, nIdMailItemQueue );
144 daoUtil.executeQuery( );
145
146 if ( daoUtil.next( ) )
147 {
148 archiveItem = new ArchiveItem( );
149 archiveItem.setIdArchiveItem( daoUtil.getInt( 1 ) );
150 archiveItem.setFolderToArchive( daoUtil.getString( 2 ) );
151 archiveItem.setArchiveDestination( daoUtil.getString( 3 ) );
152 archiveItem.setArchiveName( daoUtil.getString( 4 ) );
153 archiveItem.setArchiveType( daoUtil.getString( 5 ) );
154 archiveItem.setArchiveMimeType( daoUtil.getString( 6 ) );
155 archiveItem.setState( daoUtil.getString( 7 ) );
156 }
157
158 daoUtil.free( );
159
160 return archiveItem;
161 }
162
163
164
165
166 public void delete( int nIdMailItemQueue, Plugin plugin )
167 {
168 DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_ARCHIVE_ITEM, plugin );
169 daoUtil.setInt( 1, nIdMailItemQueue );
170 daoUtil.executeUpdate( );
171 daoUtil.free( );
172 }
173 }