1919
2020package com .baidu .hugegraph .backend .store ;
2121
22- import java .util .Arrays ;
2322import java .util .Collection ;
2423import java .util .Iterator ;
2524import java .util .NoSuchElementException ;
@@ -117,7 +116,18 @@ public static BackendColumnIterator empty() {
117116 return EMPTY ;
118117 }
119118
120- public final BackendColumnIterator EMPTY = new BackendColumnIterator () {
119+ public static BackendColumnIterator iterator (BackendColumn element ) {
120+ return new OneColumnIterator (element );
121+ }
122+
123+ public static BackendColumnIterator wrap (Iterator <BackendColumn > iter ) {
124+ return new BackendColumnIteratorWrapper (iter );
125+ }
126+
127+ public static final BackendColumnIterator EMPTY = new EmptyIterator ();
128+
129+ public static final class EmptyIterator
130+ implements BackendColumnIterator {
121131
122132 @ Override
123133 public boolean hasNext () {
@@ -138,41 +148,74 @@ public void close() {
138148 public byte [] position () {
139149 return null ;
140150 }
141- };
142- }
151+ }
143152
144- public static class BackendColumnIteratorWrapper
145- implements BackendColumnIterator {
153+ public static final class OneColumnIterator
154+ implements BackendColumnIterator {
146155
147- private final Iterator < BackendColumn > iter ;
156+ private BackendColumn element ;
148157
149- public BackendColumnIteratorWrapper (BackendColumn ... cols ) {
150- this .iter = Arrays .asList (cols ).iterator ();
151- }
158+ public OneColumnIterator (BackendColumn element ) {
159+ assert element != null ;
160+ this .element = element ;
161+ }
152162
153- public BackendColumnIteratorWrapper ( Iterator < BackendColumn > cols ) {
154- E . checkNotNull ( cols , "cols" );
155- this .iter = cols ;
156- }
163+ @ Override
164+ public boolean hasNext () {
165+ return this .element != null ;
166+ }
157167
158- @ Override
159- public boolean hasNext () {
160- return iter .hasNext ();
161- }
168+ @ Override
169+ public BackendColumn next () {
170+ if (this .element == null ) {
171+ throw new NoSuchElementException ();
172+ }
173+ BackendColumn result = this .element ;
174+ this .element = null ;
175+ return result ;
176+ }
162177
163- @ Override
164- public BackendColumn next () {
165- return iter . next ();
166- }
178+ @ Override
179+ public void close () {
180+ // pass
181+ }
167182
168- @ Override
169- public void close () {
170- WrappedIterator .close (this .iter );
183+ @ Override
184+ public byte [] position () {
185+ return null ;
186+ }
171187 }
172188
173- @ Override
174- public byte [] position () {
175- return null ;
189+ public static final class BackendColumnIteratorWrapper
190+ implements BackendColumnIterator {
191+
192+ private final Iterator <BackendColumn > iter ;
193+
194+ public BackendColumnIteratorWrapper (Iterator <BackendColumn > iter ) {
195+ E .checkNotNull (iter , "iter" );
196+ this .iter = iter ;
197+ }
198+
199+ @ Override
200+ public boolean hasNext () {
201+ return this .iter .hasNext ();
202+ }
203+
204+ @ Override
205+ public BackendColumn next () {
206+ return this .iter .next ();
207+ }
208+
209+ @ Override
210+ public void close () {
211+ WrappedIterator .close (this .iter );
212+ }
213+
214+ @ Override
215+ public byte [] position () {
216+ // No paging position for discrete iterators like queryByIds()
217+ return null ;
218+ }
176219 }
177220 }
178221}
0 commit comments