Interface GraphReader
-
- All Known Implementing Classes:
GraphMLReader
,GraphSONReader
,GryoReader
,LegacyGraphSONReader
public interface GraphReader
Functions for reading a graph and its graph elements from a different serialization format. Implementations of this class do not need to explicitly guarantee that an object read with one method must have its format equivalent to another. In other words the input toreadVertex(InputStream, Function)
} need not also be readable byreadObject(InputStream, Class)
. In other words, implementations are free to optimize as is possible for a specific serialization method. That said, it is however important that the complementary "write" operation inGraphWriter
be capable of writing output compatible to its reader. In other words, the output ofGraphWriter.writeObject(OutputStream, Object)
should always be readable byreadObject(InputStream, Class)
and the output ofGraphWriter.writeGraph(OutputStream, Graph)
should always be readable byreadGraph(InputStream, Graph)
.- Author:
- Stephen Mallette (http://stephen.genoprime.com)
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
GraphReader.ReaderBuilder<T extends GraphReader>
Largely a marker interface for builder classes that construct aGraphReader
.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Edge
readEdge(InputStream inputStream, Function<Attachable<Edge>,Edge> edgeAttachMethod)
Reads a single edge from anInputStream
.void
readGraph(InputStream inputStream, Graph graphToWriteTo)
Reads an entire graph from anInputStream
.<C> C
readObject(InputStream inputStream, Class<? extends C> clazz)
Reads an arbitrary object using the registered serializers.Property
readProperty(InputStream inputStream, Function<Attachable<Property>,Property> propertyAttachMethod)
Reads a single property from anInputStream
.Vertex
readVertex(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod)
Reads a single vertex from anInputStream
.Vertex
readVertex(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod, Function<Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection)
Reads a single vertex from anInputStream
.default Optional<Vertex>
readVertex(InputStream inputStream, GraphFilter graphFilter)
Reads a single vertex from anInputStream
.VertexProperty
readVertexProperty(InputStream inputStream, Function<Attachable<VertexProperty>,VertexProperty> vertexPropertyAttachMethod)
Reads a single vertex property from anInputStream
.Iterator<Vertex>
readVertices(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod, Function<Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection)
Reads a set of one or more vertices from anInputStream
which were written byGraphWriter.writeVertices(OutputStream, Iterator)
.
-
-
-
Method Detail
-
readGraph
void readGraph(InputStream inputStream, Graph graphToWriteTo) throws IOException
Reads an entire graph from anInputStream
. This method is mean to load an emptyGraph
. It is up to individual implementations to manage transactions, but it is not required or enforced. Consult the documentation of an implementation to understand the approach it takes.- Parameters:
inputStream
- a stream containing an entire graph of vertices and edges as defined by the accompanyingGraphWriter.writeGraph(OutputStream, Graph)
.graphToWriteTo
- the graph to write to when reading from the stream.- Throws:
IOException
-
readVertex
default Optional<Vertex> readVertex(InputStream inputStream, GraphFilter graphFilter) throws IOException
Reads a single vertex from anInputStream
. This method will filter the read the read vertex by the providedGraphFilter
. If the graph filter will filter the vertex itself, then the returnedOptional
is empty.- Parameters:
inputStream
- a stream containing at least a single vertex as defined by the accompanyingGraphWriter.writeVertex(OutputStream, Vertex)
.graphFilter
- TheGraphFilter
to filter the vertex and its associated edges by.- Returns:
- the vertex with filtered edges or
Optional.empty()
if the vertex itself was filtered. - Throws:
IOException
-
readVertex
Vertex readVertex(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod) throws IOException
Reads a single vertex from anInputStream
. This method will read vertex properties but not edges. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream
- a stream containing at least a single vertex as defined by the accompanyingGraphWriter.writeVertex(OutputStream, Vertex)
.vertexAttachMethod
- a function that creates re-attaches aVertex
to aHost
object.- Throws:
IOException
-
readVertex
Vertex readVertex(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod, Function<Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection) throws IOException
Reads a single vertex from anInputStream
. This method will read vertex properties as well as edges given the direction supplied as an argument. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream
- a stream containing at least oneVertex
as defined by the accompanyingGraphWriter.writeVertices(OutputStream, Iterator, Direction)
method.vertexAttachMethod
- a function that creates re-attaches aVertex
to aHost
object.edgeAttachMethod
- a function that creates re-attaches aEdge
to aHost
object.attachEdgesOfThisDirection
- only edges of this direction are passed to theedgeMaker
.- Throws:
IOException
-
readVertices
Iterator<Vertex> readVertices(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod, Function<Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection) throws IOException
Reads a set of one or more vertices from anInputStream
which were written byGraphWriter.writeVertices(OutputStream, Iterator)
. This method will read vertex properties as well as edges given the direction supplied as an argument. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream
- a stream containing at least oneVertex
as defined by the accompanyingGraphWriter.writeVertices(OutputStream, Iterator, Direction)
orGraphWriter.writeVertices(OutputStream, Iterator)
methods.vertexAttachMethod
- a function that creates re-attaches aVertex
to aHost
object.edgeAttachMethod
- a function that creates re-attaches aEdge
to aHost
object.attachEdgesOfThisDirection
- only edges of this direction are passed to theedgeMaker
.- Throws:
IOException
-
readEdge
Edge readEdge(InputStream inputStream, Function<Attachable<Edge>,Edge> edgeAttachMethod) throws IOException
Reads a single edge from anInputStream
. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream
- a stream containing at least oneEdge
as defined by the accompanyingGraphWriter.writeEdge(OutputStream, Edge)
method.edgeAttachMethod
- a function that creates re-attaches aEdge
to aHost
object.- Throws:
IOException
-
readVertexProperty
VertexProperty readVertexProperty(InputStream inputStream, Function<Attachable<VertexProperty>,VertexProperty> vertexPropertyAttachMethod) throws IOException
Reads a single vertex property from anInputStream
. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream
- a stream containing at least oneVertexProperty
as written by the accompanyingGraphWriter.writeVertexProperty(OutputStream, VertexProperty)
method.vertexPropertyAttachMethod
- a function that creates re-attaches aVertexProperty
to aHost
object.- Returns:
- the value returned by the attach method.
- Throws:
IOException
-
readProperty
Property readProperty(InputStream inputStream, Function<Attachable<Property>,Property> propertyAttachMethod) throws IOException
Reads a single property from anInputStream
. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream
- a stream containing at least oneProperty
as written by the accompanyingGraphWriter.writeProperty(OutputStream, Property)
method.propertyAttachMethod
- a function that creates re-attaches aProperty
to aHost
object.- Returns:
- the value returned by the attach method.
- Throws:
IOException
-
readObject
<C> C readObject(InputStream inputStream, Class<? extends C> clazz) throws IOException
Reads an arbitrary object using the registered serializers.- Parameters:
inputStream
- a stream containing an object.clazz
- the class expected to be in the stream - may or may not be used by the underlying implementation.- Throws:
IOException
-
-