001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020
021 package org.apache.directory.shared.dsmlv2.reponse;
022
023
024 import java.nio.ByteBuffer;
025 import java.util.ArrayList;
026 import java.util.List;
027
028 import org.apache.directory.shared.asn1.codec.EncoderException;
029 import org.apache.directory.shared.ldap.codec.LdapResponseCodec;
030 import org.apache.directory.shared.ldap.codec.MessageTypeEnum;
031 import org.apache.directory.shared.ldap.codec.search.SearchResultDoneCodec;
032 import org.apache.directory.shared.ldap.codec.search.SearchResultEntryCodec;
033 import org.apache.directory.shared.ldap.codec.search.SearchResultReferenceCodec;
034
035
036 /**
037 * This class represents the DSML Search Response
038 *
039 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
040 * @version $Rev$, $Date$
041 */
042 public class SearchResponse extends LdapResponseCodec
043 {
044 /** The List of contained Search Result Entries */
045 private List<SearchResultEntryCodec> searchResultEntryList;
046
047 /** The List of contained Search Result References */
048 private List<SearchResultReferenceCodec> searchResultReferenceList;
049
050 /** The Search Result Done object */
051 private SearchResultDoneCodec searchResultDone;
052
053
054 /**
055 * Creates a new instance of SearchResponse.
056 */
057 public SearchResponse()
058 {
059 searchResultEntryList = new ArrayList<SearchResultEntryCodec>();
060 searchResultReferenceList = new ArrayList<SearchResultReferenceCodec>();
061 }
062
063
064 /**
065 * Adds a Search Result Entry
066 *
067 * @param searchResultEntry
068 * the Search Result Entry to add
069 * @return
070 * true (as per the general contract of the Collection.add method)
071 */
072 public boolean addSearchResultEntry( SearchResultEntryCodec searchResultEntry )
073 {
074 return searchResultEntryList.add( searchResultEntry );
075 }
076
077
078 /**
079 * Gets the Current Search Result Entry
080 *
081 * @return
082 * the current Searche Result Entry
083 */
084 public SearchResultEntryCodec getCurrentSearchResultEntry()
085 {
086 if ( searchResultEntryList.size() > 0 )
087 {
088 return searchResultEntryList.get( searchResultEntryList.size() - 1 );
089 }
090 else
091 {
092 return null;
093 }
094 }
095
096
097 /**
098 * Gets the Search Result Entry List
099 *
100 * @return
101 * the Search Result Entry List
102 */
103 public List<SearchResultEntryCodec> getSearchResultEntryList()
104 {
105 return searchResultEntryList;
106 }
107
108
109 /**
110 * Adds a Search Result Reference
111 *
112 * @param searchResultReference
113 * the Search Result Reference to add
114 * @return
115 * true (as per the general contract of the Collection.add method)
116 */
117 public boolean addSearchResultReference( SearchResultReferenceCodec searchResultReference )
118 {
119 return searchResultReferenceList.add( searchResultReference );
120 }
121
122
123 /**
124 * Gets the current Search Result Reference
125 *
126 * @return
127 * the current Search Result Reference
128 */
129 public SearchResultReferenceCodec getCurrentSearchResultReference()
130 {
131 if ( searchResultReferenceList.size() > 0 )
132 {
133 return searchResultReferenceList.get( searchResultReferenceList.size() - 1 );
134 }
135 else
136 {
137 return null;
138 }
139 }
140
141
142 /**
143 * Gets the Search Result Reference List
144 *
145 * @return
146 * the Search Result Reference List
147 */
148 public List<SearchResultReferenceCodec> getSearchResultReferenceList()
149 {
150 return searchResultReferenceList;
151 }
152
153
154 /**
155 * Gets the Search Result Entry
156 *
157 * @return
158 * the Search Result Entry
159 */
160 public SearchResultDoneCodec getSearchResultDone()
161 {
162 return searchResultDone;
163 }
164
165
166 /**
167 * Sets the Search Result Entry
168 *
169 * @param searchResultDone
170 * the Search Result Entry to set
171 */
172 public void setSearchResultDone( SearchResultDoneCodec searchResultDone )
173 {
174 this.searchResultDone = searchResultDone;
175 }
176
177
178 @Override
179 protected int computeLengthProtocolOp()
180 {
181 return 0;
182 }
183
184
185 @Override
186 protected void encodeProtocolOp( ByteBuffer buffer ) throws EncoderException
187 {
188 }
189
190
191 @Override
192 public MessageTypeEnum getMessageType()
193 {
194 return null;
195 }
196
197
198 @Override
199 public String getMessageTypeName()
200 {
201 return null;
202 }
203 }