KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > blandware > atleap > persistence > hibernate > core > UserDAOHibernate


1 /*
2  * Copyright 2004 Blandware (http://www.blandware.com)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package com.blandware.atleap.persistence.hibernate.core;
17
18 import com.blandware.atleap.common.util.PartialCollection;
19 import com.blandware.atleap.common.util.QueryInfo;
20 import com.blandware.atleap.model.core.*;
21 import com.blandware.atleap.persistence.core.UserDAO;
22 import org.hibernate.Hibernate;
23 import org.hibernate.type.Type;
24
25 import java.util.ArrayList JavaDoc;
26 import java.util.List JavaDoc;
27 import java.util.Map JavaDoc;
28 import java.util.HashMap JavaDoc;
29
30
31 /**
32  * <p>This class interacts with Spring's HibernateTemplate to save/delete and
33  * retrieve User objects.
34  * </p>
35  * <p><a HREF="UserDAOHibernate.java.htm"><i>View Source</i></a>
36  * </p>
37  *
38  * @author Sergey Zubtcovskii <a HREF="mailto:sergey.zubtcovskii@blandware.com">&lt;sergey.zubtcovskii@blandware.com&gt;</a>
39  * @version $Revision: 1.23 $ $Date: 2006/03/06 18:12:29 $
40  */

41 public class UserDAOHibernate extends BaseDAOHibernate implements UserDAO {
42
43     // U S E R
44

45     // ~ CRUD Methods ================================================================
46

47     /**
48      * @see com.blandware.atleap.persistence.core.UserDAO#createUser(com.blandware.atleap.model.core.User)
49      */

50     public void createUser(User user) {
51         getHibernateTemplate().save(user);
52     }
53
54     /**
55      * @see com.blandware.atleap.persistence.core.UserDAO#retrieveUser(java.lang.String)
56      */

57     public User retrieveUser(String JavaDoc userName) {
58         return (User) getHibernateTemplate().get(User.class, userName);
59     }
60
61     /**
62      * @see com.blandware.atleap.persistence.core.UserDAO#updateUser(com.blandware.atleap.model.core.User)
63      */

64     public void updateUser(User user) {
65         getHibernateTemplate().update(user);
66     }
67
68     /**
69      * @see com.blandware.atleap.persistence.core.UserDAO#deleteUser(com.blandware.atleap.model.core.User)
70      */

71     public void deleteUser(User user) {
72         // break relations between roles and deleted user
73
List JavaDoc rolesAssociation = new ArrayList JavaDoc(user.getRolesAssociations());
74         for ( int i = 0; i < rolesAssociation.size(); i++ ) {
75             UserRoleAssociation userRoleAssociation = (UserRoleAssociation) rolesAssociation.get(i);
76             Role role = userRoleAssociation.getRole();
77             Group group = userRoleAssociation.getGroup();
78             user.removeRole(role, group);
79         }
80
81         getHibernateTemplate().delete(user);
82
83         // break relations between groups and deleted user
84
List JavaDoc groups = new ArrayList JavaDoc(user.getGroups());
85         for ( int i = 0; i < groups.size(); i++ ) {
86             Group group = (Group) groups.get(i);
87             group.removeUser(user);
88         }
89     }
90
91     // ~ Additional methods ================================================================
92

93     /**
94      * @see com.blandware.atleap.persistence.core.UserDAO#listUsers(com.blandware.atleap.common.util.QueryInfo)
95      */

96     public PartialCollection listUsers(QueryInfo queryInfo) {
97
98         String JavaDoc whereClause = new String JavaDoc();
99         String JavaDoc orderByClause = new String JavaDoc();
100         Map JavaDoc queryParameters = new HashMap JavaDoc();
101         boolean freeRolesFilterEnabled = false;
102         if ( queryInfo != null ) {
103             whereClause = queryInfo.getWhereClause();
104             orderByClause = queryInfo.getOrderByClause();
105             queryParameters = queryInfo.getQueryParameters();
106             if (queryParameters != null) {
107                 freeRolesFilterEnabled = "true".equalsIgnoreCase((String JavaDoc) queryParameters.get("freeRolesFilterEnabled"));
108             }
109             if ( whereClause != null && whereClause.length() != 0 ) {
110                 if (freeRolesFilterEnabled) {
111                     whereClause = " where ((fra.group is null) and (" + whereClause + "))";
112                 } else {
113                     whereClause = " where " + whereClause;
114                 }
115             } else {
116                 if (freeRolesFilterEnabled) {
117                     whereClause = " where fra.group is null ";
118                 } else {
119                     whereClause = new String JavaDoc();
120                 }
121             }
122             if ( orderByClause != null && orderByClause.length() != 0 ) {
123                 orderByClause = " order by " + orderByClause;
124             } else {
125                 orderByClause = new String JavaDoc();
126             }
127         }
128
129         List JavaDoc list = null;
130         Integer JavaDoc total = null;
131         String JavaDoc hqlPart = "from User u left outer join u.rolesAssociations as fra left outer join u.groups as g" + whereClause;
132         if ( queryInfo != null && (queryInfo.getLimit() != null || queryInfo.getOffset() != null) ) {
133             String JavaDoc hqlForTotal = "select count(distinct u.name) " + hqlPart;
134             total = (Integer JavaDoc) findUniqueResult(hqlForTotal);
135             if ( total == null ) {
136                 total = new Integer JavaDoc(0);
137             }
138         }
139         // If we don't have any info about the total number of results yet or
140
// we know that there's something that will be found, then fetch data
141
if ( total == null || total.intValue() > 0 ) {
142             String JavaDoc hql = "select distinct u " + hqlPart + orderByClause;
143             list = executeFind(hql, queryInfo);
144             if ( total == null ) {
145                 total = new Integer JavaDoc(list.size());
146             }
147         } else {
148             list = new ArrayList JavaDoc();
149         }
150
151         return new PartialCollection(list, total);
152     }
153
154     // U S E R C O O K I E
155

156     // ~ CRUD Methods ================================================================
157

158     /**
159      * @see com.blandware.atleap.persistence.core.UserDAO#createUserCookie(com.blandware.atleap.model.core.UserCookie, com.blandware.atleap.model.core.User)
160      */

161     public Long JavaDoc createUserCookie(UserCookie userCookie, User user) {
162         userCookie.setUser(user);
163         return (Long JavaDoc) getHibernateTemplate().save(userCookie);
164     }
165
166     /**
167      * @see com.blandware.atleap.persistence.core.UserDAO#retrieveUserCookie(java.lang.String)
168      */

169     public UserCookie retrieveUserCookie(String JavaDoc cookieId) {
170         return (UserCookie) findUniqueResult("from UserCookie c where c.cookieId = ?", new Object JavaDoc[]{cookieId});
171     }
172
173     /**
174      * @see com.blandware.atleap.persistence.core.UserDAO#deleteUserCookies(java.lang.String)
175      */

176     public void deleteUserCookies(String JavaDoc userName) {
177         String JavaDoc hql = "from UserCookie c where c.user.name = ?";
178         List JavaDoc cookies = executeFind(hql, new Object JavaDoc[]{userName}, new Type[]{Hibernate.STRING});
179         if (cookies != null && cookies.size() > 0) {
180             for (int i = 0; i < cookies.size(); i++) {
181                 UserCookie userCookie = (UserCookie) cookies.get(i);
182                 getHibernateTemplate().delete(userCookie);
183             }
184         }
185     }
186
187 }
188
Popular Tags