KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > api > metadata > user > domain > impl > hibernate > RepoUser


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21
22 package com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate;
23
24 import java.util.HashSet JavaDoc;
25 import java.util.Iterator JavaDoc;
26 import java.util.List JavaDoc;
27 import java.util.Set JavaDoc;
28
29 import org.acegisecurity.GrantedAuthority;
30 import org.acegisecurity.GrantedAuthorityImpl;
31 import org.acegisecurity.userdetails.UserDetails;
32 import org.apache.commons.collections.CollectionUtils;
33 import org.apache.commons.collections.Predicate;
34 import org.apache.commons.lang.builder.EqualsBuilder;
35 import org.apache.commons.lang.builder.HashCodeBuilder;
36 import org.apache.commons.lang.builder.ToStringBuilder;
37
38 import com.jaspersoft.jasperserver.api.common.service.ImplementationObjectFactory;
39 import com.jaspersoft.jasperserver.api.metadata.common.domain.impl.IdedObject;
40 import com.jaspersoft.jasperserver.api.metadata.common.service.ResourceFactory;
41 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.PersistentObjectResolver;
42 import com.jaspersoft.jasperserver.api.metadata.user.domain.Role;
43 import com.jaspersoft.jasperserver.api.metadata.user.domain.User;
44
45 /**
46  * @author swood
47  * @version $Id: RepoUser.java 3811 2006-06-23 13:00:21Z swood $
48  *
49  * @hibernate.class table="JSUser"
50  */

51 public class RepoUser implements User, IdedObject {
52     
53     private Set JavaDoc roleSet = new HashSet JavaDoc();
54     private long id;
55     private String JavaDoc username = null;
56     private String JavaDoc fullName = null;
57     private String JavaDoc password = null;
58     private String JavaDoc emailAddress = null;
59     private boolean externallyDefined = false;
60     private boolean enabled = false;
61     
62     /**
63      * @return
64      * @hibernate.id type="long" column="id" generator-class="identity"
65      */

66     public long getId() {
67         return id;
68     }
69
70     public void setId(long id) {
71         this.id = id;
72     }
73
74     /**
75      * @hibernate.property
76      * column="username" type="string" length="100" not-null="true" unique="true"
77      *
78      * @return Returns the username.
79      *
80      * (non-Javadoc)
81      * @see com.jaspersoft.jasperserver.api.metadata.user.domain.User#getUsername()
82      */

83     public String JavaDoc getUsername() {
84         return username;
85     }
86     
87     public void setUsername(String JavaDoc newUsername) {
88         if (newUsername == null || newUsername.trim().length() == 0) {
89             throw new RuntimeException JavaDoc("No user name");
90         }
91         username = newUsername;
92     }
93
94     /**
95      * @hibernate.property
96      * column="fullname" type="string" length="100" not-null="true"
97      *
98      * @return Returns the fullName.
99      *
100      * (non-Javadoc)
101      * @see com.jaspersoft.jasperserver.api.metadata.user.domain.User#getFullName()
102      */

103     public String JavaDoc getFullName() {
104         return fullName;
105     }
106
107     /**
108      * @param fullName The fullName to set.
109      */

110     public void setFullName(String JavaDoc fullName) {
111         this.fullName = fullName;
112     }
113
114     /**
115      * @hibernate.property
116      * column="emailAddress" type="string" length="100"
117      *
118      * @return Returns the emailAddress.
119      */

120     public String JavaDoc getEmailAddress() {
121         return emailAddress;
122     }
123
124     /**
125      * @param emailAddress The emailAddress to set.
126      */

127     public void setEmailAddress(String JavaDoc emailAddress) {
128         this.emailAddress = emailAddress;
129     }
130
131     /**
132      *
133      * @hibernate.set table="UserRole" inverse="false" lazy="false"
134      *
135      * @hibernate.key column="userId"
136      *
137      * @hibernate.many-to-many column="roleId" class="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoRole"
138      *
139      * @return Set
140      */

141     public Set JavaDoc getRoles() {
142         return roleSet;
143     }
144     
145     public void setRoles(Set JavaDoc newRoleSet) {
146         roleSet = newRoleSet;
147     }
148
149     public void addRole(final Role newRole) {
150 /* Predicate findRolePredicate = new Predicate() {
151             public boolean evaluate(Object o) {
152                 Role r = (Role) o;
153                 if (r == null || newRole == null || r.getRoleName() == null || newRole.getRoleName() == null) {
154                     return false;
155                 }
156                 return r.getRoleName().equalsIgnoreCase(newRole.getRoleName());
157             }
158         };
159         Object found = CollectionUtils.find(getRoles(), findRolePredicate);
160         if (found == null) {
161 */

162         if (newRole != null && !getRoles().contains(newRole)) {
163             getRoles().add(newRole);
164             //newRole.getUsers().add(this);
165
}
166     }
167
168     public void removeRole(final Role removedRole) {
169         getRoles().remove(removedRole);
170         //removedRole.getUsers().remove(this);
171
}
172     
173     /* (non-Javadoc)
174      * @see com.jaspersoft.jasperserver.api.common.domain.AttributedObject#getAttributes()
175      */

176     public List JavaDoc getAttributes() {
177         // TODO Auto-generated method stub
178
return null;
179     }
180
181     /* (non-Javadoc)
182      * @see org.acegisecurity.userdetails.UserDetails#getAuthorities()
183      */

184     public GrantedAuthority[] getAuthorities() {
185         Set JavaDoc currentRoles = getRoles();
186         
187         GrantedAuthority[] authorities = currentRoles == null ? new GrantedAuthority[0] : new GrantedAuthority[currentRoles.size()];
188         
189         if (currentRoles == null) {
190             return authorities;
191         }
192         
193         Iterator JavaDoc it = currentRoles.iterator();
194         int i = 0;
195         while (it.hasNext()) {
196             Role aRole = (Role) it.next();
197             authorities[i++] = new GrantedAuthorityImpl(aRole.getRoleName());
198         }
199         return authorities;
200     }
201
202     /**
203      * @hibernate.property
204      * column="password" type="string" length="100"
205      *
206      * (non-Javadoc)
207      * @see org.acegisecurity.userdetails.UserDetails#getPassword()
208      */

209     public String JavaDoc getPassword() {
210         return password;
211     }
212
213     /**
214      * @param password The password to set.
215      */

216     public void setPassword(String JavaDoc password) {
217         this.password = password;
218     }
219
220     /* (non-Javadoc)
221      * @see org.acegisecurity.userdetails.UserDetails#isAccountNonExpired()
222      */

223     public boolean isAccountNonExpired() {
224         return enabled;
225     }
226
227     /* (non-Javadoc)
228      * @see org.acegisecurity.userdetails.UserDetails#isAccountNonLocked()
229      */

230     public boolean isAccountNonLocked() {
231         return enabled;
232     }
233
234     /* (non-Javadoc)
235      * @see org.acegisecurity.userdetails.UserDetails#isCredentialsNonExpired()
236      */

237     public boolean isCredentialsNonExpired() {
238         return enabled;
239     }
240
241     /** @hibernate.property
242      * column="externallyDefined" type="boolean"
243      *
244      * (non-Javadoc)
245      * @see com.jaspersoft.jasperserver.api.metadata.user.domain.User#isExternallyDefined()
246      */

247     public boolean isExternallyDefined() {
248         return externallyDefined;
249     }
250
251     /* (non-Javadoc)
252      * @see com.jaspersoft.jasperserver.api.metadata.user.domain.User#setExternallyDefined(boolean)
253      */

254     public void setExternallyDefined(boolean externallyDefined) {
255         this.externallyDefined = externallyDefined;
256     }
257
258     /** @hibernate.property
259      * column="enabled" type="boolean"
260      *
261      * (non-Javadoc)
262      * @see org.acegisecurity.userdetails.UserDetails#isEnabled()
263      */

264     public boolean isEnabled() {
265         return enabled;
266     }
267
268     /**
269      * @param enabled The enabled to set.
270      */

271     public void setEnabled(boolean enabled) {
272         this.enabled = enabled;
273     }
274     
275     public void copyFromClient(Object JavaDoc obj, PersistentObjectResolver resolver) {
276         User u = (User) obj;
277         
278         // u -> this
279
setUsername(u.getUsername());
280         setPassword(u.getPassword());
281         setFullName(u.getFullName());
282         setEmailAddress(u.getEmailAddress());
283         setExternallyDefined(u.isExternallyDefined());
284         setEnabled(u.isEnabled());
285
286         // The u is going to have Role DTOs - need to convert them
287
// to RepoRoles
288
Set JavaDoc clientRoles = u.getRoles();
289         Set JavaDoc repoRoles = null;
290         if (clientRoles != null) {
291             repoRoles = new HashSet JavaDoc(clientRoles.size());
292             if (clientRoles.size() > 0) {
293                 for (Iterator JavaDoc it = clientRoles.iterator(); it.hasNext(); ) {
294                     Role clientRole = (Role) it.next();
295                     RepoRole r = (RepoRole) resolver.getPersistentObject(clientRole);
296                     if (r == null) {
297                         r = new RepoRole();
298                     }
299                     r.copyFromClient(clientRole, resolver);
300                     repoRoles.add(r);
301                 }
302             }
303         }
304         setRoles(repoRoles);
305     }
306     
307     public Object JavaDoc toClient(ResourceFactory clientMappingFactory) {
308         User u = (User) clientMappingFactory.newObject(User.class);
309         // this -> u
310
u.setUsername(getUsername());
311         u.setPassword(getPassword());
312         u.setFullName(getFullName());
313         u.setEmailAddress(getEmailAddress());
314         u.setExternallyDefined(isExternallyDefined());
315         u.setEnabled(isEnabled());
316
317         Set JavaDoc repoRoles = getRoles();
318         Set JavaDoc clientRoles = null;
319         if (repoRoles != null) {
320             clientRoles = new HashSet JavaDoc(repoRoles.size());
321             if (repoRoles.size() > 0) {
322                 for (Iterator JavaDoc it = repoRoles.iterator(); it.hasNext(); ) {
323                     RepoRole repoRole = (RepoRole) it.next();
324                     Role r = (Role) repoRole.toClient(clientMappingFactory);
325                     clientRoles.add(r);
326                 }
327             }
328         }
329         u.setRoles(clientRoles);
330         return u;
331         
332     }
333     
334     public String JavaDoc toString() {
335         return new ToStringBuilder(this)
336             .append("userId", getId())
337             .append("username", getUsername())
338             .toString();
339     }
340
341     public boolean equals(Object JavaDoc other) {
342         if ( !(other instanceof RepoUser) ) return false;
343         RepoUser castOther = (RepoUser) other;
344         return new EqualsBuilder()
345             .append(this.getId(), castOther.getId())
346             .isEquals();
347     }
348
349     public int hashCode() {
350         return new HashCodeBuilder()
351             .append(getId())
352             .toHashCode();
353     }
354 }
355
Popular Tags