public LimitedCloseableIterator(final Iterator<T> iterator, final int start, final Integer end, final Boolean truncate) { this(new WrappedCloseableIterator<>(iterator), start, end, truncate); }
@Override public CloseableIterator<T> iterator() { final Iterator<T> iterator = iterable.iterator(); if (iterator instanceof CloseableIterator) { return (CloseableIterator<T>) iterator; } return new WrappedCloseableIterator<>(iterator); }
@Override public CloseableIterator<T> iterator() { if (null != cachedIterable) { return new WrappedCloseableIterator<>(cachedIterable.iterator()); } if (tooLarge) { return new WrappedCloseableIterator<>(iterable.iterator()); } return new CachingIterator(); }
@Override public CloseableIterator<Element> iterator() { Stream<Element> elements = Streams.toStream(getElements.getInput()) .flatMap(elementId -> GetElementsUtil.getRelevantElements(mapImpl, elementId, getElements.getView(), getElements.getDirectedType(), getElements.getIncludeIncomingOutGoing(), getElements.getSeedMatching()).stream()); elements = elements.flatMap(e -> Streams.toStream(mapImpl.getElements(e))); elements = GetElementsUtil.applyView(elements, schema, getElements.getView()); elements = elements.map(element -> mapImpl.cloneElement(element, schema)); elements = elements.map(element -> { ViewUtil.removeProperties(getElements.getView(), element); return element; }); return new WrappedCloseableIterator<>(elements.iterator()); } }
@Override public CloseableIterator<EntityId> iterator() { // For each EntityId, get relevant edges with group-by properties // Create full Element // Apply view // Extract adjacent vertices Stream<Element> elementStream = Streams.toStream(getAdjacentIds.getInput()) .flatMap(entityId -> GetElementsUtil.getRelevantElements(mapImpl, entityId, getAdjacentIds.getView(), getAdjacentIds.getDirectedType(), getAdjacentIds.getIncludeIncomingOutGoing(), SeedMatching.SeedMatchingType.RELATED) .stream() .map(mapImpl::getAggElement)); // Apply the view elementStream = GetElementsUtil.applyView(elementStream, schema, getAdjacentIds.getView()); final Stream<EntityId> adjacentIdsStream = elementStream .filter(Objects::nonNull) .map(element -> { final Object nextVertex; if (EdgeId.MatchedVertex.DESTINATION == ((EdgeId) element).getMatchedVertex()) { nextVertex = ((EdgeId) element).getSource(); } else { nextVertex = ((EdgeId) element).getDestination(); } return new EntitySeed(nextVertex); }); return new WrappedCloseableIterator<>(adjacentIdsStream.iterator()); } }
@Override public CloseableIterator<Element> iterator() { Stream<Element> elements = mapImpl.getAllElements(getAllElements.getView().getGroups()); elements = GetElementsUtil.applyDirectedTypeFilter(elements, getAllElements.getView().hasEdges(), getAllElements.getDirectedType()); elements = GetElementsUtil.applyView(elements, schema, getAllElements.getView()); elements = elements.map(element -> mapImpl.cloneElement(element, schema)); elements = elements.map(element -> { ViewUtil.removeProperties(getAllElements.getView(), element); return element; }); return new WrappedCloseableIterator<>(elements.iterator()); } }