1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.aci;
21
22
23 import java.util.ArrayList;
24 import java.util.Collection;
25 import java.util.Collections;
26 import java.util.Set;
27
28 import org.apache.directory.api.ldap.model.constants.AuthenticationLevel;
29
30
31
32
33
34
35
36
37 public class UserFirstACIItem extends ACIItem
38 {
39
40 private final Collection<UserClass> userClasses;
41
42
43 private final Collection<UserPermission> userPermissions;
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 public UserFirstACIItem( String identificationTag, int precedence, AuthenticationLevel authenticationLevel,
62 Collection<UserClass> userClasses, Collection<UserPermission> userPermissions )
63 {
64 super( identificationTag, precedence, authenticationLevel );
65
66 this.userClasses = Collections.unmodifiableCollection( new ArrayList<UserClass>( userClasses ) );
67 this.userPermissions = Collections.unmodifiableCollection( new ArrayList<UserPermission>( userPermissions ) );
68 }
69
70
71
72
73
74
75
76 public Collection<UserClass> getUserClasses()
77 {
78 return userClasses;
79 }
80
81
82
83
84
85
86
87 public Collection<UserPermission> getUserPermission()
88 {
89 return userPermissions;
90 }
91
92
93
94
95
96 @Override
97 public String toString()
98 {
99 StringBuilder buf = new StringBuilder();
100
101
102 buf.append( "{ identificationTag \"" );
103 buf.append( getIdentificationTag() );
104 buf.append( "\", " );
105
106
107 buf.append( "precedence " );
108 buf.append( getPrecedence() );
109 buf.append( ", " );
110
111
112 buf.append( "authenticationLevel " );
113 buf.append( getAuthenticationLevel().getName() );
114 buf.append( ", " );
115
116
117 buf.append( "itemOrUserFirst userFirst: { " );
118
119
120 buf.append( "userClasses { " );
121
122 boolean isFirst = true;
123
124 for ( UserClass userClass : userClasses )
125 {
126 if ( isFirst )
127 {
128 isFirst = false;
129 }
130 else
131 {
132 buf.append( ", " );
133 }
134
135 buf.append( userClass.toString() );
136 }
137
138 buf.append( " }, " );
139
140
141 buf.append( "userPermissions { " );
142
143 isFirst = true;
144
145 for ( UserPermission permission : userPermissions )
146 {
147 if ( isFirst )
148 {
149 isFirst = false;
150 }
151 else
152 {
153 buf.append( ", " );
154 }
155
156 buf.append( permission.toString() );
157 }
158
159 buf.append( " } } }" );
160
161 return buf.toString();
162 }
163
164
165
166
167
168 @Override
169 public Collection<ACITuple> toTuples()
170 {
171 Collection<ACITuple> tuples = new ArrayList<>();
172
173 for ( UserPermission userPermission : userPermissions )
174 {
175 Set<GrantAndDenial> grants = userPermission.getGrants();
176 Set<GrantAndDenial> denials = userPermission.getDenials();
177 int precedence = userPermission.getPrecedence() != null
178 ? userPermission.getPrecedence()
179 : this.getPrecedence();
180
181 if ( !grants.isEmpty() )
182 {
183 tuples.add( new ACITuple( getUserClasses(), getAuthenticationLevel(), userPermission
184 .getProtectedItems(), toMicroOperations( grants ), true, precedence ) );
185 }
186 if ( !denials.isEmpty() )
187 {
188 tuples.add( new ACITuple( getUserClasses(), getAuthenticationLevel(), userPermission
189 .getProtectedItems(), toMicroOperations( denials ), false, precedence ) );
190 }
191 }
192 return tuples;
193 }
194 }