KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > manentia > kasai > authobject > JDBCMySQLAuthObjectDAO


1 /*
2  * JDBCMySQLUserDAO.java
3  *
4  * Created on 28 de marzo de 2005, 13:46
5  */

6
7 package org.manentia.kasai.authobject;
8
9 import com.koala.commons.log.Log;
10 import com.koala.commons.persistence.DBUtil;
11 import java.sql.*;
12 import java.util.ArrayList JavaDoc;
13 import java.util.Arrays JavaDoc;
14 import java.util.Collection JavaDoc;
15 import java.util.logging.Level JavaDoc;
16 import org.apache.commons.lang.StringUtils;
17 import org.apache.commons.lang.exception.ExceptionUtils;
18 import org.manentia.kasai.AuthObject;
19 import org.manentia.kasai.Group;
20 import org.manentia.kasai.ObjectGroupRole;
21 import org.manentia.kasai.ObjectUserRole;
22 import org.manentia.kasai.Operative;
23 import org.manentia.kasai.Role;
24 import org.manentia.kasai.User;
25 import org.manentia.kasai.exceptions.AlreadyExistsException;
26 import org.manentia.kasai.exceptions.DataAccessException;
27 import org.manentia.kasai.exceptions.DoesntExistsException;
28 import org.manentia.kasai.exceptions.InvalidAttributesException;
29 import org.manentia.kasai.group.GroupHandler;
30 import org.manentia.kasai.role.RoleHandler;
31 import org.manentia.kasai.user.UserHandler;
32 import org.manentia.kasai.util.Constants;
33
34 /**
35  *
36  * @author rzuasti
37  */

38 public class JDBCMySQLAuthObjectDAO implements AuthObjectDAO {
39     
40     /** Creates a new instance of JDBCMySQLUserDAO */
41     public JDBCMySQLAuthObjectDAO() {
42     }
43     
44     public void copyPermissionsFromObject (String JavaDoc sourceObject, String JavaDoc destinationObject) throws DoesntExistsException,DataAccessException{
45             
46         Connection con = null;
47         String JavaDoc sql;
48         PreparedStatement stmt = null;
49                 
50         try{
51             if ((StringUtils.isNotEmpty(sourceObject)) && (StringUtils.isNotEmpty(destinationObject))){
52                 if (this.read(destinationObject) == null){
53                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "copyPermissionsFromObject", "Object doesn't exist",Level.WARNING);
54                     throw new DoesntExistsException(AuthObject.class.getName() + ".objectDoesntExist");
55                 }
56
57                 if (this.read(destinationObject) == null){
58                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "copyPermissionsFromObject", "Object doesn't exist",Level.WARNING);
59                     throw new DoesntExistsException(AuthObject.class.getName() + ".objectDoesntExist");
60                 }
61                 
62                 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
63                 
64                 sql = "REPLACE INTO kasai_objects_users_roles (id_object,id_user,id_role) SELECT '"+destinationObject+"',id_user,id_role FROM kasai_objects_users_roles WHERE id_object='" + sourceObject + "'";
65                 con.createStatement().executeUpdate(sql);
66                 
67                 sql = "REPLACE INTO kasai_objects_groups_roles (id_object,id_group,id_role) SELECT '"+destinationObject+"',id_group,id_role FROM kasai_objects_groups_roles WHERE id_object='" + sourceObject + "'";
68                 con.createStatement().executeUpdate(sql);
69                 
70             }
71         }catch (SQLException sqle){
72             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "copyPermissionsFromObject", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
73             throw new DataAccessException(sqle);
74         }finally{
75             try{
76                 con.close();
77             }catch(Exception JavaDoc e){}
78         }
79     }
80     
81     public void create(String JavaDoc object) throws DataAccessException{
82             
83         Connection con = null;
84         String JavaDoc sql;
85         if (StringUtils.isNotEmpty(object)){
86             if (this.read(object) == null){
87                 try{
88                     sql = "INSERT INTO kasai_objects (id) values ('" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "')";
89                     con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
90                     con.createStatement().executeUpdate(sql);
91                 }catch (SQLException sqle){
92                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "create", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
93                     throw new DataAccessException(sqle);
94                 }finally{
95                     try{
96                         con.close();
97                     }catch(Exception JavaDoc e){}
98                 }
99             }
100         }
101     }
102     
103     public void createObjectGroupRole(String JavaDoc object, String JavaDoc group, int role) throws DoesntExistsException,DataAccessException{
104             
105         Connection con = null;
106         String JavaDoc sql;
107         
108         try{
109             if ((StringUtils.isNotEmpty(object)) && (StringUtils.isNotEmpty(group))){
110                 if (GroupHandler.getInstance().read(group) == null){
111                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "apply", "Group doesn't exist",Level.WARNING);
112                     throw new DoesntExistsException(Group.class.getName() + ".groupDoesntExist");
113                 }
114                 if (RoleHandler.getInstance().read(role) == null){
115                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "apply", "Role doesn't exist",Level.WARNING);
116                     throw new DoesntExistsException(Role.class.getName() + ".roleDoesntExist");
117                 }
118                 if (this.read(object) == null){
119                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "apply", "Object doesn't exist",Level.WARNING);
120                     throw new DoesntExistsException(AuthObject.class.getName() + ".objectDoesntExist");
121                 }
122
123                 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
124                 sql = "SELECT id from kasai_objects_groups_roles WHERE id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "' AND id_group='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(group) + "' AND id_role=" + role;
125                 if (!con.createStatement().executeQuery(sql).next()){
126                     sql = "INSERT INTO kasai_objects_groups_roles (id_object,id_group,id_role) values ('" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "','" + org.apache.commons.lang.StringEscapeUtils.escapeSql(group) + "'," + role + ")";
127                     con.createStatement().executeUpdate(sql);
128                 }
129             }
130         }catch (SQLException sqle){
131             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "createObjectGroupRole", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
132             throw new DataAccessException(sqle);
133         }finally{
134             try{
135                 con.close();
136             }catch(Exception JavaDoc e){}
137         }
138     }
139     
140     public void createObjectUserRole(String JavaDoc object, String JavaDoc login, int role) throws DoesntExistsException,DataAccessException{
141             
142         Connection con = null;
143         String JavaDoc sql;
144         
145         try{
146             if ((StringUtils.isNotEmpty(object)) && (StringUtils.isNotEmpty(login))){
147                 if (UserHandler.getInstance().read(login,true) == null){
148                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "apply", "User doesn't exist",Level.WARNING);
149                     throw new DoesntExistsException(User.class.getName() + ".userDoesntExist");
150                 }
151                 if (RoleHandler.getInstance().read(role) == null){
152                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "apply", "Role doesn't exist",Level.WARNING);
153                     throw new DoesntExistsException(Role.class.getName() + ".roleDoesntExist");
154                 }
155                 if (this.read(object) == null){
156                     Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "apply", "Object doesn't exist",Level.WARNING);
157                     throw new DoesntExistsException(AuthObject.class.getName() + ".objectDoesntExist");
158                 }
159                 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
160                 sql = "SELECT id from kasai_objects_users_roles WHERE id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "' AND id_user='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(login) + "' AND id_role=" + role;
161                 if (!con.createStatement().executeQuery(sql).next()){
162                     sql = "INSERT INTO kasai_objects_users_roles (id_object,id_user,id_role) values ('" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "','" + org.apache.commons.lang.StringEscapeUtils.escapeSql(login) + "'," + role + ")";
163                     con.createStatement().executeUpdate(sql);
164                 }
165             }
166         }catch (SQLException sqle){
167             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "createObjectUserRole", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
168             throw new DataAccessException(sqle);
169         }finally{
170             try{
171                 con.close();
172             }catch(Exception JavaDoc e){}
173         }
174     }
175     
176     public void delete(String JavaDoc object) throws DataAccessException{
177         Connection con = null;
178         String JavaDoc sql;
179         try{
180             if (StringUtils.isNotEmpty(object)){
181                 
182                 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
183                 
184                 sql = "DELETE FROM kasai_objects WHERE id='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "'";
185                 con.createStatement().executeUpdate(sql);
186             }
187         }catch (SQLException sqle){
188             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "delete", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
189             throw new DataAccessException(sqle);
190         }finally{
191             try{
192                 con.close();
193             }catch(Exception JavaDoc e){}
194         }
195         
196     }
197     
198     public void deleteObjectGroupRole(int id) throws DataAccessException{
199         Connection con = null;
200         try{
201             String JavaDoc sql = "delete from kasai_objects_groups_roles where id=" + id;
202             con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
203             con.createStatement().executeUpdate(sql);
204         }catch (SQLException sqle){
205             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "deleteObjectGroupRole", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
206             throw new DataAccessException(sqle);
207         }finally{
208             try{
209                 con.close();
210             }catch(Exception JavaDoc e){}
211         }
212     }
213     
214     public void deleteObjectUserRole(int id) throws DataAccessException{
215         Connection con = null;
216         try{
217             String JavaDoc sql = "DELETE FROM kasai_objects_users_roles WHERE id=" + id;
218             con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
219             con.createStatement().executeUpdate(sql);
220         }catch (SQLException sqle){
221             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "deleteObjectUserRole", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
222             throw new DataAccessException(sqle);
223         }finally{
224             try{
225                 con.close();
226             }catch(Exception JavaDoc e){}
227         }
228     }
229     
230     public void deleteObjectUserRole(String JavaDoc login, String JavaDoc object, int role) throws DataAccessException{
231         Connection con = null;
232         try{
233             String JavaDoc sql = "DELETE FROM kasai_objects_users_roles WHERE id_user='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(login) + "' AND id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) +"' AND id_role=" + role;
234             con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
235             con.createStatement().executeUpdate(sql);
236         }catch (SQLException sqle){
237             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "deleteObjectUserRole", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
238             throw new DataAccessException(sqle);
239         }finally{
240             try{
241                 con.close();
242             }catch(Exception JavaDoc e){}
243         }
244     }
245     
246     public void deleteObjectUserRole(String JavaDoc login, String JavaDoc object) throws DataAccessException{
247         Connection con = null;
248         try{
249             String JavaDoc sql = "DELETE FROM kasai_objects_users_roles WHERE id_user='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(login) + "' AND id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) +"'";
250             con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
251             con.createStatement().executeUpdate(sql);
252         }catch (SQLException sqle){
253             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "deleteObjectUserRole", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
254             throw new DataAccessException(sqle);
255         }finally{
256             try{
257                 con.close();
258             }catch(Exception JavaDoc e){}
259         }
260     }
261     
262     public Collection JavaDoc listObjectGroupsRoles(String JavaDoc object) throws DataAccessException{
263         Connection con = null;
264         String JavaDoc sql;
265         ResultSet rs = null;
266         ObjectGroupRole ogr = null;
267         ArrayList JavaDoc ogrs = new ArrayList JavaDoc();
268         if(StringUtils.isNotEmpty(object)){
269             try{
270
271                 sql = "SELECT AOGR.*,AR.name as role_name FROM kasai_objects_groups_roles AOGR,kasai_roles AR " +
272                       "WHERE AOGR.id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "' and AR.id=AOGR.id_role";
273
274                 sql += " order by AOGR.id_group ";
275                 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
276                 rs = con.createStatement().executeQuery(sql);
277                 while (rs.next()){
278                     ogr = new ObjectGroupRole (rs);
279                     ogrs.add(ogr);
280                 }
281             }catch (SQLException sqle){
282                 Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "listObjectGroupsRoles", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
283                 throw new DataAccessException(sqle);
284             }finally{
285                 try{
286                 rs.close();
287                 }catch(Exception JavaDoc e){}
288                 try{
289                     con.close();
290                 }catch(Exception JavaDoc e){}
291             }
292         }
293         return ogrs;
294     }
295     
296     public Collection JavaDoc listObjectUsersRoles(String JavaDoc object) throws DataAccessException{
297         Connection con = null;
298         String JavaDoc sql;
299         ResultSet rs = null;
300         ObjectUserRole our = null;
301         ArrayList JavaDoc ours = new ArrayList JavaDoc();
302         if(StringUtils.isNotEmpty(object)){
303             try{
304
305                 sql = "SELECT AOUR.*,AR.name as role_name FROM kasai_objects_users_roles AOUR,kasai_roles AR " +
306                       "WHERE AOUR.id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "' and AR.id=AOUR.id_role";
307
308                 sql += " order by AOUR.id_user ";
309                 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
310                 rs = con.createStatement().executeQuery(sql);
311                 while (rs.next()){
312                     our = new ObjectUserRole (rs);
313                     ours.add(our);
314                 }
315             }catch (SQLException sqle){
316                 Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "listObjectUsersRoles", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
317                 throw new DataAccessException(sqle);
318             }finally{
319                 try{
320                     rs.close();
321                 }catch(Exception JavaDoc e){}
322                 try{
323                     con.close();
324                 }catch(Exception JavaDoc e){}
325             }
326         }
327         return ours;
328     }
329     
330     public AuthObject read(String JavaDoc id) throws DataAccessException{
331         Connection con = null;
332         String JavaDoc sql;
333         ResultSet rs = null;
334         AuthObject o = null;
335         try{
336             if (StringUtils.isNotEmpty(id)){
337                 sql = "SELECT * FROM kasai_objects WHERE id='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(id) + "'";
338                 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE);
339                 rs = con.createStatement().executeQuery(sql);
340                 if (rs.next()){
341                     o = new AuthObject (rs);
342                 }
343             }
344             return o;
345         }catch (SQLException sqle){
346             Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "read", ExceptionUtils.getStackTrace(sqle),Level.SEVERE);
347             throw new DataAccessException(sqle);
348         }finally{
349             try{
350                 rs.close();
351             }catch(Exception JavaDoc e){}
352             try{
353                 con.close();
354             }catch(Exception JavaDoc e){}
355         }
356         
357     }
358 }
359
Popular Tags