new utility for updated cached values in a multi-threaded environment.
[utils] / security / impl / src / main / java / org / wamblee / security / authorization / GroupUserCondition.java
1 /*
2  * Copyright 2005-2010 the original author or authors.
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 org.wamblee.security.authorization;
17
18
19 import javax.persistence.Column;
20 import javax.persistence.DiscriminatorValue;
21 import javax.persistence.Entity;
22 import javax.persistence.Transient;
23
24 import org.wamblee.security.authentication.User;
25 import org.wamblee.security.authentication.UserAdministration;
26
27
28 /**
29  * Checks if a user against a specific group.
30  * 
31  * @author Erik Brakkee
32  */
33 @Entity
34 @DiscriminatorValue("GROUP")
35 public class GroupUserCondition extends AbstractUserCondition {
36     /**
37      * Group the user must be in.
38      */
39     @Column(name = "GRP")
40     private String group;
41     
42     @Transient
43     private UserAdministration admin; 
44
45     /**
46      * Constructs the condition.
47      * 
48      * @param aGroup
49      *            Group the user must be in.
50      */
51     public GroupUserCondition(String aGroup) {
52         group = aGroup;
53     }
54
55     /**
56      * For OR mapping.
57      * 
58      */
59     protected GroupUserCondition() {
60         group = null;
61     }
62     
63     @Override
64     public void setUserAdmin(UserAdministration aAdmin) {
65         admin = aAdmin;   
66     }
67
68     @Override
69     public boolean matches(String aUser) {
70         return admin.isInGroup(aUser, group);
71     }
72
73     /**
74      * 
75      * @return Returns the group.
76      */
77     protected String getGroup() {
78         return group;
79     }
80
81     /**
82      * 
83      * @param aGroup
84      *            The group to set.
85      */
86     protected void setGroup(String aGroup) {
87         group = aGroup;
88     }
89
90     /*
91      * (non-Javadoc)
92      * 
93      * @see java.lang.Object#toString()
94      */
95     @Override
96     public String toString() {
97         return "GroupUserCondition(group=" + group + ")";
98     }
99 }