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 ItemFirstACIItem extends ACIItem
38 {
39
40 private final Collection<ProtectedItem> protectedItems;
41
42
43 private final Collection<ItemPermission> itemPermissions;
44
45
46
47
48
49
50
51
52
53
54
55 public ItemFirstACIItem( String identificationTag, int precedence, AuthenticationLevel authenticationLevel,
56 Collection<ProtectedItem> protectedItems, Collection<ItemPermission> itemPermissions )
57 {
58 super( identificationTag, precedence, authenticationLevel );
59
60 this.protectedItems = Collections.unmodifiableCollection( new ArrayList<ProtectedItem>( protectedItems ) );
61 this.itemPermissions = Collections.unmodifiableCollection( new ArrayList<ItemPermission>( itemPermissions ) );
62 }
63
64
65
66
67
68
69
70 public Collection<ProtectedItem> getProtectedItems()
71 {
72 return protectedItems;
73 }
74
75
76
77
78
79
80
81 public Collection<ItemPermission> getItemPermissions()
82 {
83 return itemPermissions;
84 }
85
86
87
88
89
90 @Override
91 public String toString()
92 {
93 StringBuilder buf = new StringBuilder();
94
95 buf.append( "{" );
96 buf.append( super.toString() );
97
98
99 buf.append( ", itemOrUserFirst itemFirst: { " );
100
101
102 buf.append( "protectedItems { " );
103
104 boolean isFirst = true;
105
106 for ( ProtectedItem item : protectedItems )
107 {
108 if ( isFirst )
109 {
110 isFirst = false;
111 }
112 else
113 {
114 buf.append( ", " );
115 }
116
117 buf.append( item.toString() );
118 }
119
120
121 buf.append( " }, itemPermissions { " );
122
123 isFirst = true;
124
125 for ( ItemPermission permission : itemPermissions )
126 {
127 if ( isFirst )
128 {
129 isFirst = false;
130 }
131 else
132 {
133 buf.append( ", " );
134 }
135
136 buf.append( permission.toString() );
137 }
138
139 buf.append( " } } }" );
140
141 return buf.toString();
142 }
143
144
145
146
147
148
149
150 public Collection<ACITuple> toTuples()
151 {
152 Collection<ACITuple> tuples = new ArrayList<ACITuple>();
153
154 for ( ItemPermission itemPermission : itemPermissions )
155 {
156 Set<GrantAndDenial> grants = itemPermission.getGrants();
157 Set<GrantAndDenial> denials = itemPermission.getDenials();
158 int precedence = itemPermission.getPrecedence() != null
159 ? itemPermission.getPrecedence()
160 : this.getPrecedence();
161
162 if ( grants.size() > 0 )
163 {
164 tuples.add( new ACITuple( itemPermission.getUserClasses(), getAuthenticationLevel(), protectedItems,
165 toMicroOperations( grants ), true, precedence ) );
166 }
167
168 if ( denials.size() > 0 )
169 {
170 tuples.add( new ACITuple( itemPermission.getUserClasses(), getAuthenticationLevel(), protectedItems,
171 toMicroOperations( denials ), false, precedence ) );
172 }
173 }
174
175 return tuples;
176 }
177 }