KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mvnforum > db > jdbc > MessageFolderDAOImplJDBC


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/db/jdbc/MessageFolderDAOImplJDBC.java,v 1.17 2006/04/14 17:05:26 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.17 $
5  * $Date: 2006/04/14 17:05:26 $
6  *
7  * ====================================================================
8  *
9  * Copyright (C) 2002-2006 by MyVietnam.net
10  *
11  * All copyright notices regarding mvnForum MUST remain
12  * intact in the scripts and in the outputted HTML.
13  * The "powered by" text/logo with a link back to
14  * http://www.mvnForum.com and http://www.MyVietnam.net in
15  * the footer of the pages MUST remain visible when the pages
16  * are viewed on the internet or intranet.
17  *
18  * This program is free software; you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License as published by
20  * the Free Software Foundation; either version 2 of the License, or
21  * any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31  *
32  * Support can be obtained from support forums at:
33  * http://www.mvnForum.com/mvnforum/index
34  *
35  * Correspondence and Marketing Questions can be sent to:
36  * info at MyVietnam net
37  *
38  * @author: Minh Nguyen
39  * @author: Mai Nguyen
40  */

41 package com.mvnforum.db.jdbc;
42
43 import java.sql.*;
44 import java.util.ArrayList JavaDoc;
45 import java.util.Collection JavaDoc;
46
47 import com.mvnforum.db.*;
48 import net.myvietnam.mvncore.db.DBUtils;
49 import net.myvietnam.mvncore.exception.*;
50 import org.apache.commons.logging.Log;
51 import org.apache.commons.logging.LogFactory;
52
53 public class MessageFolderDAOImplJDBC implements MessageFolderDAO {
54
55     private static Log log = LogFactory.getLog(MessageFolderDAOImplJDBC.class);
56
57     // this variable will support caching if cache for this class is needed
58
private static boolean m_dirty = true;
59
60     public MessageFolderDAOImplJDBC() {
61     }
62
63     protected static boolean isDirty() {
64         return m_dirty;
65     }
66
67     protected static void setDirty(boolean dirty) {
68         m_dirty = dirty;
69     }
70
71     public void findByPrimaryKey(String JavaDoc folderName, int memberID)
72         throws ObjectNotFoundException, DatabaseException {
73
74         Connection connection = null;
75         PreparedStatement statement = null;
76         ResultSet resultSet = null;
77         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
78         sql.append("SELECT FolderName, MemberID");
79         sql.append(" FROM " + TABLE_NAME);
80         sql.append(" WHERE FolderName = ? AND MemberID = ?");
81         try {
82             connection = DBUtils.getConnection();
83             statement = connection.prepareStatement(sql.toString());
84             statement.setString(1, folderName);
85             statement.setInt(2, memberID);
86             resultSet = statement.executeQuery();
87             if (!resultSet.next()) {
88                 throw new ObjectNotFoundException("Cannot find the primary key (" + folderName + ", " + memberID + ") in table 'MessageFolder'.");
89             }
90         } catch(SQLException sqle) {
91             log.error("Sql Execution Error!", sqle);
92             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.findByPrimaryKey.");
93         } finally {
94             DBUtils.closeResultSet(resultSet);
95             DBUtils.closeStatement(statement);
96             DBUtils.closeConnection(connection);
97         }
98     }
99
100     /*
101      * Included columns: FolderName, MemberID, FolderOrder, FolderStatus, FolderOption,
102      * FolderType, FolderCreationDate, FolderModifiedDate
103      * Excluded columns:
104      */

105     public void create(String JavaDoc folderName, int memberID, int folderOrder,
106                        int folderStatus, int folderOption, int folderType,
107                        Timestamp folderCreationDate, Timestamp folderModifiedDate)
108         throws CreateException, DatabaseException, DuplicateKeyException, ForeignKeyNotFoundException {
109
110         // @todo: comment this try-catch block if the needed columns dont have attribute 'include'
111
// If this is the case, then it is highly recommended that you regenerate this method with the attribute 'include' turned on
112
// However, if primary key is a auto_increament column, then you can safely delete this block
113
try {
114             //Check if primary key already exists
115
findByPrimaryKey(folderName, memberID);
116             //If so, then we have to throw an exception
117
throw new DuplicateKeyException("Primary key already exists. Cannot create new MessageFolder with the same [FolderName, MemberID] (" + folderName + ", " + memberID + ").");
118         } catch(ObjectNotFoundException e) {
119             //Otherwise we can go ahead
120
}
121
122         try {
123             // @todo: modify the parameter list as needed
124
// You may have to regenerate this method if the needed columns dont have attribute 'include'
125
DAOFactory.getMemberDAO().findByPrimaryKey(memberID);
126         } catch(ObjectNotFoundException e) {
127             throw new ForeignKeyNotFoundException("Foreign key refers to table 'Member' does not exist. Cannot create new MessageFolder.");
128         }
129
130         Connection connection = null;
131         PreparedStatement statement = null;
132         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
133         sql.append("INSERT INTO " + TABLE_NAME + " (FolderName, MemberID, FolderOrder, FolderStatus, FolderOption, FolderType, FolderCreationDate, FolderModifiedDate)");
134         sql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
135         try {
136             connection = DBUtils.getConnection();
137             statement = connection.prepareStatement(sql.toString());
138
139             statement.setString(1, folderName);
140             statement.setInt(2, memberID);
141             statement.setInt(3, folderOrder);
142             statement.setInt(4, folderStatus);
143             statement.setInt(5, folderOption);
144             statement.setInt(6, folderType);
145             statement.setTimestamp(7, folderCreationDate);
146             statement.setTimestamp(8, folderModifiedDate);
147
148             if (statement.executeUpdate() != 1) {
149                 throw new CreateException("Error adding a row into table 'MessageFolder'.");
150             }
151             m_dirty = true;
152         } catch(SQLException sqle) {
153             log.error("Sql Execution Error!", sqle);
154             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.create.");
155         } finally {
156             DBUtils.closeStatement(statement);
157             DBUtils.closeConnection(connection);
158         }
159     }
160
161     public void delete(String JavaDoc folderName, int memberID)
162         throws DatabaseException, ObjectNotFoundException {
163
164         Connection connection = null;
165         PreparedStatement statement = null;
166         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
167         sql.append("DELETE FROM " + TABLE_NAME);
168         sql.append(" WHERE FolderName = ? AND MemberID = ?");
169
170         try {
171             connection = DBUtils.getConnection();
172             statement = connection.prepareStatement(sql.toString());
173             statement.setString(1, folderName);
174             statement.setInt(2, memberID);
175             if (statement.executeUpdate() != 1) {
176                 throw new ObjectNotFoundException("Cannot delete a row in table MessageFolder where primary key = (" + folderName + ", " + memberID + ").");
177             }
178             m_dirty = true;
179         } catch(SQLException sqle) {
180             log.error("Sql Execution Error!", sqle);
181             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.delete.");
182         } finally {
183             DBUtils.closeStatement(statement);
184             DBUtils.closeConnection(connection);
185         }
186     }
187
188     /*
189      * Included columns: FolderName, MemberID, FolderOrder, FolderStatus, FolderOption,
190      * FolderType, FolderCreationDate, FolderModifiedDate
191      * Excluded columns:
192      */

193     public MessageFolderBean getMessageFolder(String JavaDoc folderName, int memberID)
194         throws ObjectNotFoundException, DatabaseException {
195
196         Connection connection = null;
197         PreparedStatement statement = null;
198         ResultSet resultSet = null;
199         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
200         sql.append("SELECT FolderName, MemberID, FolderOrder, FolderStatus, FolderOption, FolderType, FolderCreationDate, FolderModifiedDate");
201         sql.append(" FROM " + TABLE_NAME);
202         sql.append(" WHERE FolderName = ? AND MemberID = ?");
203         try {
204             connection = DBUtils.getConnection();
205             statement = connection.prepareStatement(sql.toString());
206             statement.setString(1, folderName);
207             statement.setInt(2, memberID);
208             resultSet = statement.executeQuery();
209             if(!resultSet.next()) {
210                 throw new ObjectNotFoundException("Cannot find the row in table MessageFolder where primary key = (" + folderName + ", " + memberID + ").");
211             }
212
213             MessageFolderBean bean = new MessageFolderBean();
214             // @todo: uncomment the following line(s) as needed
215
//bean.setFolderName(folderName);
216
//bean.setMemberID(memberID);
217
bean.setFolderName(resultSet.getString("FolderName"));
218             bean.setMemberID(resultSet.getInt("MemberID"));
219             bean.setFolderOrder(resultSet.getInt("FolderOrder"));
220             bean.setFolderStatus(resultSet.getInt("FolderStatus"));
221             bean.setFolderOption(resultSet.getInt("FolderOption"));
222             bean.setFolderType(resultSet.getInt("FolderType"));
223             bean.setFolderCreationDate(resultSet.getTimestamp("FolderCreationDate"));
224             bean.setFolderModifiedDate(resultSet.getTimestamp("FolderModifiedDate"));
225             return bean;
226         } catch(SQLException sqle) {
227             log.error("Sql Execution Error!", sqle);
228             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.getMessageFolder(pk).");
229         } finally {
230             DBUtils.closeResultSet(resultSet);
231             DBUtils.closeStatement(statement);
232             DBUtils.closeConnection(connection);
233         }
234     }
235
236     /*
237      * Included columns: FolderName, MemberID, FolderOrder, FolderStatus, FolderOption,
238      * FolderType, FolderCreationDate, FolderModifiedDate
239      *
240      * Excluded columns:
241      */

242     public Collection JavaDoc getMessageFolders_inMember(int memberID)
243         throws DatabaseException {
244
245         Connection connection = null;
246         PreparedStatement statement = null;
247         ResultSet resultSet = null;
248         Collection JavaDoc retValue = new ArrayList JavaDoc();
249         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
250         sql.append("SELECT FolderName, MemberID, FolderOrder, FolderStatus, FolderOption, FolderType, FolderCreationDate, FolderModifiedDate");
251         sql.append(" FROM " + TABLE_NAME);
252         sql.append(" WHERE MemberID = ?");
253         sql.append(" ORDER BY FolderOrder ASC ");
254         try {
255             connection = DBUtils.getConnection();
256             statement = connection.prepareStatement(sql.toString());
257             statement.setInt(1, memberID);
258             resultSet = statement.executeQuery();
259             while (resultSet.next()) {
260                 MessageFolderBean bean = new MessageFolderBean();
261                 bean.setFolderName(resultSet.getString("FolderName"));
262                 bean.setMemberID(resultSet.getInt("MemberID"));
263                 bean.setFolderOrder(resultSet.getInt("FolderOrder"));
264                 bean.setFolderStatus(resultSet.getInt("FolderStatus"));
265                 bean.setFolderOption(resultSet.getInt("FolderOption"));
266                 bean.setFolderType(resultSet.getInt("FolderType"));
267                 bean.setFolderCreationDate(resultSet.getTimestamp("FolderCreationDate"));
268                 bean.setFolderModifiedDate(resultSet.getTimestamp("FolderModifiedDate"));
269                 retValue.add(bean);
270             }
271             return retValue;
272         } catch(SQLException sqle) {
273             log.error("Sql Execution Error!", sqle);
274             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.getMessageFolders_inMember.");
275         } finally {
276             DBUtils.closeResultSet(resultSet);
277             DBUtils.closeStatement(statement);
278             DBUtils.closeConnection(connection);
279         }
280     }
281
282     public int getMaxFolderOrder(int memberID)
283         throws DatabaseException, AssertionException {
284
285         Connection connection = null;
286         PreparedStatement statement = null;
287         ResultSet resultSet = null;
288         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
289
290         sql.append("SELECT MAX(FolderOrder)");
291         sql.append(" FROM " + TABLE_NAME);
292         sql.append(" WHERE MemberID = ?");
293
294         try {
295             connection = DBUtils.getConnection();
296             statement = connection.prepareStatement(sql.toString());
297             statement.setInt(1, memberID);
298             resultSet = statement.executeQuery();
299             if (!resultSet.next()) {
300                 throw new AssertionException("Assertion in MessageFolderDAOImplJDBC.getMaxFolderOrder.");
301             }
302             return resultSet.getInt(1);
303         } catch(SQLException sqle) {
304             log.error("Sql Execution Error!", sqle);
305             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.getMaxFolderOrder(memberID).");
306         } finally {
307             DBUtils.closeResultSet(resultSet);
308             DBUtils.closeStatement(statement);
309             DBUtils.closeConnection(connection);
310         }
311     }
312
313     /*
314      * Included columns: FolderOrder, FolderModifiedDate
315      * Excluded columns: FolderName, MemberID, FolderStatus, FolderOption, FolderType,
316      * FolderCreationDate
317      */

318     public void increaseFolderOrder(String JavaDoc folderName, int memberID, // primary key
319
Timestamp folderModifiedDate)
320         throws ObjectNotFoundException, DatabaseException {
321
322         Connection connection = null;
323         PreparedStatement statement = null;
324         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
325         sql.append("UPDATE " + TABLE_NAME + " SET FolderOrder = FolderOrder + 1, FolderModifiedDate = ?");
326         sql.append(" WHERE FolderName = ? AND MemberID = ?");
327         try {
328             connection = DBUtils.getConnection();
329             statement = connection.prepareStatement(sql.toString());
330
331             // // column(s) to update
332
statement.setTimestamp(1, folderModifiedDate);
333
334             // primary key column(s)
335
statement.setString(2, folderName);
336             statement.setInt(3, memberID);
337
338             if (statement.executeUpdate() != 1) {
339                 throw new ObjectNotFoundException("Cannot update table MessageFolder where primary key = (" + folderName + ", " + memberID + ").");
340             }
341             m_dirty = true;
342         } catch(SQLException sqle) {
343             log.error("Sql Execution Error!", sqle);
344             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.increaseFolderOrder.");
345         } finally {
346             DBUtils.closeStatement(statement);
347             DBUtils.closeConnection(connection);
348         }
349     }
350
351     /*
352      * Included columns: FolderOrder, FolderModifiedDate
353      * Excluded columns: FolderName, MemberID, FolderStatus, FolderOption, FolderType,
354      * FolderCreationDate
355      */

356     public void decreaseFolderOrder(String JavaDoc folderName, int memberID, // primary key
357
Timestamp folderModifiedDate)
358         throws ObjectNotFoundException, DatabaseException {
359
360         Connection connection = null;
361         PreparedStatement statement = null;
362         StringBuffer JavaDoc sql = new StringBuffer JavaDoc(512);
363         sql.append("UPDATE " + TABLE_NAME + " SET FolderOrder = FolderOrder - 1, FolderModifiedDate = ?");
364         sql.append(" WHERE FolderName = ? AND MemberID = ?");
365         try {
366             connection = DBUtils.getConnection();
367             statement = connection.prepareStatement(sql.toString());
368
369             // // column(s) to update
370
statement.setTimestamp(1, folderModifiedDate);
371
372             // primary key column(s)
373
statement.setString(2, folderName);
374             statement.setInt(3, memberID);
375
376             if (statement.executeUpdate() != 1) {
377                 throw new ObjectNotFoundException("Cannot update table MessageFolder where primary key = (" + folderName + ", " + memberID + ").");
378             }
379             m_dirty = true;
380         } catch(SQLException sqle) {
381             log.error("Sql Execution Error!", sqle);
382             throw new DatabaseException("Error executing SQL in MessageFolderDAOImplJDBC.decreaseFolderOrder.");
383         } finally {
384             DBUtils.closeStatement(statement);
385             DBUtils.closeConnection(connection);
386         }
387     }
388 }// end of class MessageFolderDAOImplJDBC
389
Popular Tags