KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > jforum > dao > mysql > security > MySQL323GroupSecurityDAO


1 /*
2  * Copyright (c) Rafael Steil
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms,
6  * with or without modification, are permitted provided
7  * that the following conditions are met:
8  *
9  * 1) Redistributions of source code must retain the above
10  * copyright notice, this list of conditions and the
11  * following disclaimer.
12  * 2) Redistributions in binary form must reproduce the
13  * above copyright notice, this list of conditions and
14  * the following disclaimer in the documentation and/or
15  * other materials provided with the distribution.
16  * 3) Neither the name of "Rafael Steil" nor
17  * the names of its contributors may be used to endorse
18  * or promote products derived from this software without
19  * specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
22  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
23  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
24  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
32  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
34  * IN CONTRACT, STRICT LIABILITY, OR TORT
35  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
37  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
38  *
39  * Created on 02/07/2005 13:18:34
40  * The JForum Project
41  * http://www.jforum.net
42  */

43 package net.jforum.dao.mysql.security;
44
45 import java.sql.PreparedStatement JavaDoc;
46 import java.sql.ResultSet JavaDoc;
47
48 import net.jforum.JForumExecutionContext;
49 import net.jforum.dao.generic.security.GenericGroupSecurityDAO;
50 import net.jforum.util.preferences.SystemGlobals;
51
52 /**
53  * Mysq 3.23 hacks based on Andy's work
54  *
55  * @author Rafael Steil
56  * @version $Id: MySQL323GroupSecurityDAO.java,v 1.4 2006/01/29 15:06:55 rafaelsteil Exp $
57  */

58 public class MySQL323GroupSecurityDAO extends GenericGroupSecurityDAO
59 {
60     /**
61      * @see net.jforum.dao.security.SecurityDAO#deleteAllRoles(int)
62      */

63     public void deleteAllRoles(int id) throws Exception JavaDoc
64     {
65         PreparedStatement JavaDoc p = JForumExecutionContext.getConnection().prepareStatement(
66                 SystemGlobals.getSql("PermissionControl.getRoleIdsByGroup"));
67         p.setInt(1, id);
68         
69         String JavaDoc roleIds = this.getCsvIdList(p);
70         
71         p.close();
72         
73         if (roleIds.length() == 0) {
74             return;
75         }
76         
77         p = this.getStatementForCsv(
78                 SystemGlobals.getSql("PermissionControl.deleteRoleValuesByRoleId"),
79                 roleIds);
80         
81         p.executeUpdate();
82         p.close();
83     }
84     
85     /**
86      * Gets a statement to use with some csv data
87      * @param sql The SQL query to execute. It must have an "?", which
88      * will be replaced by <code>csv</code>
89      * @param csv The ids to replace
90      * @return The statement, ready to execute
91      * @throws Exception
92      */

93     protected PreparedStatement JavaDoc getStatementForCsv(String JavaDoc sql, String JavaDoc csv) throws Exception JavaDoc
94     {
95         int index = sql.indexOf('?');
96         sql = sql.substring(0, index) + csv + sql.substring(index + 1);
97         return JForumExecutionContext.getConnection().prepareStatement(sql);
98     }
99     
100     /**
101      * Gets a set of ids from a statement
102      * The statement is expected to return an id in the first column
103      * @param p The statement to execute
104      * @return The ids, separated by comma
105      * @throws Exception
106      */

107     protected String JavaDoc getCsvIdList(PreparedStatement JavaDoc p) throws Exception JavaDoc
108     {
109         ResultSet JavaDoc rs = p.executeQuery();
110         
111         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
112         
113         while (rs.next()) {
114             sb.append(rs.getInt(1)).append(",");
115         }
116         
117         sb.append("-1");
118         
119         rs.close();
120         
121         return sb.toString();
122     }
123 }
124
Popular Tags