org.openrdf.repository
Class RepositoryResult<T>

java.lang.Object
  extended by info.aduna.iteration.CloseableIterationBase<T,RepositoryException>
      extended by org.openrdf.repository.RepositoryResult<T>
All Implemented Interfaces:
CloseableIteration<T,RepositoryException>, Iteration<T,RepositoryException>

public class RepositoryResult<T>
extends CloseableIterationBase<T,RepositoryException>

A RepositoryResult is a result collection of objects (for example Statement, Namespace, or Resource objects) that can be iterated over. It keeps an open connection to the backend for lazy retrieval of individual results. Additionally it has some utility methods to fetch all results and add them to a collection.

By default, a RepositoryResult is not necessarily a (mathematical) set: it may contain duplicate objects. Duplicate filtering can be { switched on, but this should not be used lightly as the filtering mechanism is potentially memory-intensive.

A RepositoryResult needs to be closed after use to free up any resources (open connections, read locks, etc.) it has on the underlying repository.

Author:
jeen, Arjohn Kampman
See Also:
RepositoryConnection.getStatements(org.openrdf.model.Resource, org.openrdf.model.URI, org.openrdf.model.Value, boolean, org.openrdf.model.Resource[]), RepositoryConnection.getNamespaces(), RepositoryConnection.getContextIDs()

Constructor Summary
RepositoryResult(CloseableIteration<? extends T,RepositoryException> iter)
           
 
Method Summary
<C extends Collection<T>>
C
addTo(C collection)
          Adds all objects of this RepositoryResult to the supplied collection.
 List<T> asList()
          Returns a List containing all objects of this RepositoryResult in order of iteration.
 void enableDuplicateFilter()
          Switches on duplicate filtering while iterating over objects.
protected  void handleClose()
          Called by CloseableIterationBase.close() when it is called for the first time.
 boolean hasNext()
          Returns true if the iteration has more elements.
 T next()
          Returns the next element in the iteration.
 void remove()
          Removes from the underlying collection the last element returned by the iteration (optional operation).
 
Methods inherited from class info.aduna.iteration.CloseableIterationBase
close, isClosed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RepositoryResult

public RepositoryResult(CloseableIteration<? extends T,RepositoryException> iter)
Method Detail

hasNext

public boolean hasNext()
                throws RepositoryException
Description copied from interface: Iteration
Returns true if the iteration has more elements. (In other words, returns true if Iteration.next() would return an element rather than throwing a NoSuchElementException.)

Returns:
true if the iteration has more elements.
Throws:
RepositoryException

next

public T next()
       throws RepositoryException
Description copied from interface: Iteration
Returns the next element in the iteration.

Returns:
the next element in the iteration.
Throws:
RepositoryException

remove

public void remove()
            throws RepositoryException
Description copied from interface: Iteration
Removes from the underlying collection the last element returned by the iteration (optional operation). This method can be called only once per call to next.

Throws:
RepositoryException

handleClose

protected void handleClose()
                    throws RepositoryException
Description copied from class: CloseableIterationBase
Called by CloseableIterationBase.close() when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.

Overrides:
handleClose in class CloseableIterationBase<T,RepositoryException>
Throws:
RepositoryException

enableDuplicateFilter

public void enableDuplicateFilter()
                           throws RepositoryException
Switches on duplicate filtering while iterating over objects. The RepositoryResult will keep track of the previously returned objects in a Set and on calling next() or hasNext() will ignore any objects that already occur in this Set.

Caution: use of this filtering mechanism is potentially memory-intensive.

Throws:
RepositoryException - if a problem occurred during initialization of the filter.

asList

public List<T> asList()
               throws RepositoryException
Returns a List containing all objects of this RepositoryResult in order of iteration. The RepositoryResult is fully consumed and automatically closed by this operation.

Note: use this method with caution! It pulls the entire RepositoryResult in memory and as such is potentially very memory-intensive.

Returns:
a List containing all objects of this RepositoryResult.
Throws:
RepositoryException - if a problem occurred during retrieval of the results.
See Also:
addTo(Collection)

addTo

public <C extends Collection<T>> C addTo(C collection)
                              throws RepositoryException
Adds all objects of this RepositoryResult to the supplied collection. The RepositoryResult is fully consumed and automatically closed by this operation.

Returns:
A reference to the collection that was supplied.
Throws:
RepositoryException - if a problem occurred during retrieval of the results.


Copyright © 2001-2012 Aduna. All Rights Reserved.