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.codec.search;
21
22
23 import java.nio.ByteBuffer;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.apache.directory.api.asn1.DecoderException;
28 import org.apache.directory.api.asn1.EncoderException;
29 import org.apache.directory.api.i18n.I18n;
30
31
32
33
34
35
36
37
38 public abstract class ConnectorFilter extends Filter
39 {
40
41 protected List<Filter> filterSet;
42
43
44 protected int filtersLength;
45
46
47
48
49
50
51
52 public ConnectorFilter( int tlvId )
53 {
54 super( tlvId );
55 }
56
57
58
59
60
61 public ConnectorFilter()
62 {
63 super();
64 }
65
66
67
68
69
70
71
72
73 public void addFilter( Filter filter ) throws DecoderException
74 {
75
76 if ( filterSet == null )
77 {
78 filterSet = new ArrayList<>();
79 }
80
81 filterSet.add( filter );
82 }
83
84
85
86
87
88
89
90 public List<Filter> getFilterSet()
91 {
92 return filterSet;
93 }
94
95
96
97
98
99
100
101
102 @Override
103 public int computeLength()
104 {
105 int connectorFilterLength = 0;
106
107 if ( ( filterSet != null ) && ( !filterSet.isEmpty() ) )
108 {
109 for ( Filter filter : filterSet )
110 {
111 connectorFilterLength += filter.computeLength();
112 }
113 }
114
115 return connectorFilterLength;
116 }
117
118
119
120
121
122
123
124
125
126
127
128
129
130 @Override
131 public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
132 {
133 if ( buffer == null )
134 {
135 throw new EncoderException( I18n.err( I18n.ERR_04023 ) );
136 }
137
138
139 if ( ( filterSet != null ) && ( !filterSet.isEmpty() ) )
140 {
141 for ( Filter filter : filterSet )
142 {
143 filter.encode( buffer );
144 }
145 }
146
147 return buffer;
148 }
149
150
151
152
153
154
155
156
157 @Override
158 public String toString()
159 {
160 StringBuilder sb = new StringBuilder();
161
162 if ( ( filterSet != null ) && ( !filterSet.isEmpty() ) )
163 {
164 for ( Filter filter : filterSet )
165 {
166 sb.append( '(' ).append( filter ).append( ')' );
167 }
168 }
169
170 return sb.toString();
171 }
172 }