package org.openntf.domino.graph2.impl; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import org.openntf.domino.big.NoteCoordinate; import org.openntf.domino.exceptions.UnimplementedException; import org.openntf.domino.graph2.DGraphUtils; import com.tinkerpop.blueprints.Element; import com.tinkerpop.blueprints.Vertex; public class DVertexIterable implements org.openntf.domino.graph2.DVertexIterable { private org.openntf.domino.graph2.impl.DElementIterable delegate_; public static class DVertexIterator implements ListIterator<Vertex> { private ListIterator<Element> delegate_; public DVertexIterator(final ListIterator<Element> delegate) { delegate_ = delegate; } @Override public DVertex next() { DVertex result = null; Element chk = delegate_.next(); if (chk instanceof DVertex) { result = (DVertex) chk; } else { throw new IllegalStateException("Next element returned is a " + chk.getClass().getName() + " not a Vertex"); } return result; } @Override public boolean hasNext() { return delegate_.hasNext(); } @Override public void remove() { delegate_.remove(); } @Override public void add(final Vertex arg0) { delegate_.add(arg0); } @Override public boolean hasPrevious() { return delegate_.hasPrevious(); } @Override public int nextIndex() { return delegate_.nextIndex(); } @Override public int previousIndex() { return delegate_.previousIndex(); } @Override public void set(final Vertex arg0) { delegate_.set(arg0); } @Override public Vertex previous() { DVertex result = null; Element chk = delegate_.previous(); if (chk instanceof DVertex) { result = (DVertex) chk; } else { throw new IllegalStateException("Previous element returned is a " + chk.getClass().getName() + " not a Vertex"); } return result; } } public DVertexIterable(final DElementStore store, final List<NoteCoordinate> index) { delegate_ = new org.openntf.domino.graph2.impl.DElementIterable(store, index); } private DVertexIterable(final org.openntf.domino.graph2.impl.DElementIterable delegate) { delegate_ = delegate; } @Override public Iterator<Vertex> iterator() { return new DVertexIterator(delegate_.listIterator()); } @Override public boolean add(final Vertex e) { return delegate_.add(e); } @Override public void add(final int index, final Vertex element) { delegate_.add(index, element); } @Override public boolean addAll(final Collection<? extends Vertex> c) { return delegate_.addAll(c); } @Override public boolean addAll(final int index, final Collection<? extends Vertex> c) { return delegate_.addAll(index, c); } @Override public void clear() { delegate_.clear(); } @Override public boolean contains(final Object o) { return delegate_.contains(o); } @Override public boolean containsAll(final Collection<?> c) { return delegate_.containsAll(c); } @Override public Vertex get(final int index) { return (Vertex) delegate_.get(index); } @Override public int indexOf(final Object o) { return delegate_.indexOf(o); } @Override public boolean isEmpty() { return delegate_.isEmpty(); } @Override public int lastIndexOf(final Object o) { return delegate_.lastIndexOf(o); } @Override public ListIterator<Vertex> listIterator() { return new DVertexIterator(delegate_.listIterator()); } @Override public ListIterator<Vertex> listIterator(final int index) { return new DVertexIterator(delegate_.listIterator(index)); } @Override public Vertex remove(final int index) { return (Vertex) delegate_.remove(index); } @Override public boolean remove(final Object o) { return delegate_.remove(o); } @Override public boolean removeAll(final Collection<?> c) { return delegate_.removeAll(c); } @Override public boolean retainAll(final Collection<?> c) { return delegate_.retainAll(c); } @Override public Vertex set(final int index, final Vertex element) { return (Vertex) delegate_.set(index, element); } @Override public int size() { return delegate_.size(); } @Override public List<Vertex> subList(final int fromIndex, final int toIndex) { return new DVertexIterable((DElementIterable) delegate_.subList(fromIndex, toIndex)); } @Override public Object[] toArray() { return delegate_.toArray(); } @Override public <T> T[] toArray(final T[] a) { return delegate_.toArray(a); } private static final Vertex[] VA = new Vertex[1]; public DVertexIterable sortBy(final List<CharSequence> keys, final boolean desc) { Vertex[] array = toArray(VA); Arrays.sort(array, new DGraphUtils.VertexComparator(keys, desc)); throw new UnimplementedException("sortBy not yet completed for DVertexIterable"); // return new DVertexIterable(framedGraph, sourceVertex_, convertToEdges(array), kind); } }