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 @Override
151 public Collection<ACITuple> toTuples()
152 {
153 Collection<ACITuple> tuples = new ArrayList<>();
154
155 for ( ItemPermission itemPermission : itemPermissions )
156 {
157 Set<GrantAndDenial> grants = itemPermission.getGrants();
158 Set<GrantAndDenial> denials = itemPermission.getDenials();
159 int precedence = itemPermission.getPrecedence() != null
160 ? itemPermission.getPrecedence()
161 : this.getPrecedence();
162
163 if ( !grants.isEmpty() )
164 {
165 tuples.add( new ACITuple( itemPermission.getUserClasses(), getAuthenticationLevel(), protectedItems,
166 toMicroOperations( grants ), true, precedence ) );
167 }
168
169 if ( !denials.isEmpty() )
170 {
171 tuples.add( new ACITuple( itemPermission.getUserClasses(), getAuthenticationLevel(), protectedItems,
172 toMicroOperations( denials ), false, precedence ) );
173 }
174 }
175
176 return tuples;
177 }
178 }