View Javadoc
1   /**
2    * Copyright 2014 Internet2
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  /**
17   * @author mchyzer
18   * $Id$
19   */
20  package edu.internet2.middleware.grouper.group;
21  
22  import com.fasterxml.jackson.annotation.JsonIgnore;
23  
24  import edu.internet2.middleware.grouper.Group;
25  import edu.internet2.middleware.grouper.GrouperSession;
26  import edu.internet2.middleware.grouper.Member;
27  import edu.internet2.middleware.grouper.MemberFinder;
28  import edu.internet2.middleware.grouper.annotations.GrouperIgnoreClone;
29  import edu.internet2.middleware.grouper.annotations.GrouperIgnoreDbVersion;
30  import edu.internet2.middleware.grouper.annotations.GrouperIgnoreFieldConstant;
31  import edu.internet2.middleware.grouper.attr.assign.AttributeAssignEffMshipDelegate;
32  import edu.internet2.middleware.grouper.attr.assign.AttributeAssignable;
33  import edu.internet2.middleware.grouper.attr.value.AttributeValueDelegate;
34  import edu.internet2.middleware.grouper.permissions.role.Role;
35  import edu.internet2.middleware.subject.Subject;
36  
37  
38  /**
39   * holds a group and a member
40   */
41  public class GroupMember implements AttributeAssignable {
42    
43    /**
44     * @param group1
45     * @param member1
46     */
47    public GroupMember(Group group1, Member member1) {
48      super();
49      this.group = group1;
50      this.member = member1;
51    }
52  
53    /**
54     * @param group1
55     * @param subject
56     */
57    public GroupMember(Role group1, Subject subject) {
58      this((Group)group1, subject);
59    }
60  
61    /**
62     * @param group1
63     * @param subject
64     */
65    public GroupMember(Group group1, Subject subject) {
66      super();
67      this.group = group1;
68      this.member = MemberFinder.findBySubject(GrouperSession.staticGrouperSession(), subject, false);
69    }
70  
71    /**
72     * @see java.lang.Object#toString()
73     */
74    @Override
75    public String toString() {
76      return "GroupMember: " + group + ", member: " + member;
77    }
78  
79    /**
80     * 
81     */
82    public GroupMember() {
83      //empty
84    }
85    
86    /** group */
87    private Group group;
88    
89    /** member */
90    private Member member;
91  
92    /**
93     * delegate for effective memberships
94     * @return the delegate
95     */
96    @JsonIgnore
97    public AttributeAssignEffMshipDelegate getAttributeDelegate() {
98      return new AttributeAssignEffMshipDelegate(this.group, this.member);
99    }
100   
101 
102   
103   /**
104    * group
105    * @return group
106    */
107   public Group getGroup() {
108     return this.group;
109   }
110 
111   /**
112    * group
113    * @param group1
114    */
115   public void setGroup(Group group1) {
116     this.group = group1;
117   }
118 
119   /**
120    * member
121    * @return subject
122    */
123   public Member getMember() {
124     return this.member;
125   }
126 
127   /**
128    * member
129    * @param member1
130    */
131   public void setMember(Member member1) {
132     this.member = member1;
133   }
134   
135   /**
136    * this delegate works on attributes and values at the same time
137    * @return the delegate
138    */
139   public AttributeValueDelegate getAttributeValueDelegate() {
140     if (this.attributeValueDelegate == null) {
141       this.attributeValueDelegate = new AttributeValueDelegate(this.getAttributeDelegate());
142     }
143     return this.attributeValueDelegate;
144   }
145 
146   /** */
147   @GrouperIgnoreClone @GrouperIgnoreDbVersion @GrouperIgnoreFieldConstant @JsonIgnore
148   private AttributeValueDelegate attributeValueDelegate;
149   
150 
151 }