org.neo4j.index.timeline
Class Timeline

java.lang.Object
  extended by org.neo4j.index.timeline.Timeline
All Implemented Interfaces:
TimelineIndex

public class Timeline
extends Object
implements TimelineIndex

An implementation of TimelineIndex on top of Neo4j, using BTree for indexing. Note: this implementation is not thread-safe (yet). Nodes added to a timeline will get a Relationship created to it so if you delete such a node later on you'll have to remove it from the timeline first (or in the same transaction at least).


Constructor Summary
Timeline(String name, Node underlyingNode, boolean indexed, GraphDatabaseService graphDb)
          Creates/loads a timeline.
Timeline(String name, Node underlyingNode, GraphDatabaseService graphDb)
          Creates/loads an indexed timeline.
 
Method Summary
 void addNode(Node nodeToAdd, long timestamp)
          Adds a node to this timeline with the given timestamp.
 void delete()
          Deletes this timeline.
 Iterable<Node> getAllNodes()
          Returns all added nodes in this timeline ordered by increasing timestamp.
 Iterable<Node> getAllNodes(Long afterTimestampOrNull, Long beforeTimestampOrNull)
          Convenience method which you can use TimelineIndex.getAllNodes(), TimelineIndex.getAllNodesAfter(long), TimelineIndex.getAllNodesBefore(long) and TimelineIndex.getAllNodesBetween(long, long) in a single method.
 Iterable<Node> getAllNodesAfter(long timestamp)
          Returns all the nodes after (exclusive) timestamp ordered by increasing timestamp.
 Iterable<Node> getAllNodesBefore(long timestamp)
          Returns all the nodes before (exclusive) timestamp ordered by increasing timestamp.
 Iterable<Node> getAllNodesBetween(long startTime, long endTime)
          Returns all the nodes after (exclusive) afterTimestamp and before (exclusive) beforeTimestamp ordered by increasing timestamp.
 Node getFirstNode()
          Returns the first node in the timeline, that is the node with the lowest timestamp or null if there's no nodes in the timeline.
 Node getLastNode()
          Returns the last node in the timeline, that is the node with the highest timestamp or null if there's no nodes in the timeline.
 Iterable<Node> getNodes(long timestamp)
          Returns nodes which were added with the given timestamp.
 long getTimestampForNode(Node node)
          Will return the timestamp for node if it has been added to this timeline.
 Node getUnderlyingNode()
          Returns the underlying node representing this timeline.
 void removeNode(Node nodeToRemove)
          Removes a node from the timeline.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Timeline

public Timeline(String name,
                Node underlyingNode,
                boolean indexed,
                GraphDatabaseService graphDb)
Creates/loads a timeline. The underlyingNode can either be a new (just created) node or a node that already represents a previously timeline.

Parameters:
name - The unique name of the timeline or null if timeline already exist
underlyingNode - The underlying node representing the timeline
indexed - Set to true if this timeline is indexed
graphDb - the GraphDatabaseService

Timeline

public Timeline(String name,
                Node underlyingNode,
                GraphDatabaseService graphDb)
Creates/loads an indexed timeline. The underlyingNode can either be a new (just created) node or a node that already represents a previously timeline.

Parameters:
name - The unique name of the timeline or null if timeline already exist
underlyingNode - The underlying node representing the timeline
graphDb - The GraphDatabaseService.
Method Detail

getUnderlyingNode

public Node getUnderlyingNode()
Returns the underlying node representing this timeline.

Returns:
The underlying node representing this timeline

getLastNode

public Node getLastNode()
Description copied from interface: TimelineIndex
Returns the last node in the timeline, that is the node with the highest timestamp or null if there's no nodes in the timeline.

Specified by:
getLastNode in interface TimelineIndex
Returns:
the last node in the timeline or null if timeline is empty.

getFirstNode

public Node getFirstNode()
Description copied from interface: TimelineIndex
Returns the first node in the timeline, that is the node with the lowest timestamp or null if there's no nodes in the timeline.

Specified by:
getFirstNode in interface TimelineIndex
Returns:
the first node in the timeline or null if timeline is empty.

addNode

public void addNode(Node nodeToAdd,
                    long timestamp)
Description copied from interface: TimelineIndex
Adds a node to this timeline with the given timestamp.

Specified by:
addNode in interface TimelineIndex
Parameters:
nodeToAdd - the node to add to this timeline.
timestamp - the timestamp to use

getTimestampForNode

public long getTimestampForNode(Node node)
Description copied from interface: TimelineIndex
Will return the timestamp for node if it has been added to this timeline. If node hasn't been added to this timeline a runtime exception will be thrown.

Specified by:
getTimestampForNode in interface TimelineIndex
Parameters:
node - the node to return the timestamp for.
Returns:
the timestamp for node.

removeNode

public void removeNode(Node nodeToRemove)
Description copied from interface: TimelineIndex
Removes a node from the timeline. It will throw an exception if nodeToRemove isn't added in this timeline.

Specified by:
removeNode in interface TimelineIndex
Parameters:
nodeToRemove - the node to remove from this timeline

getAllNodes

public Iterable<Node> getAllNodes(Long afterTimestampOrNull,
                                  Long beforeTimestampOrNull)
Description copied from interface: TimelineIndex
Convenience method which you can use TimelineIndex.getAllNodes(), TimelineIndex.getAllNodesAfter(long), TimelineIndex.getAllNodesBefore(long) and TimelineIndex.getAllNodesBetween(long, long) in a single method.

Specified by:
getAllNodes in interface TimelineIndex
Parameters:
afterTimestampOrNull - the start timestamp, nodes with greater timestamp value will be returned. Will be ignored if null.
beforeTimestampOrNull - the end timestamp, nodes with lesser timestamp value will be returned. Will be ignored if null.
Returns:
all nodes in this timeline ordered by timestamp. A range can be given with the startTimestampOrNull and/or endTimestampOrNull (where null means no restriction).

getAllNodes

public Iterable<Node> getAllNodes()
Description copied from interface: TimelineIndex
Returns all added nodes in this timeline ordered by increasing timestamp.

Specified by:
getAllNodes in interface TimelineIndex
Returns:
all the nodes in the timeline ordered by increasing timestamp.

getNodes

public Iterable<Node> getNodes(long timestamp)
Description copied from interface: TimelineIndex
Returns nodes which were added with the given timestamp.

Specified by:
getNodes in interface TimelineIndex
Parameters:
timestamp - the timestamp to get nodes for.
Returns:
nodes which were added with the given timestamp.

getAllNodesAfter

public Iterable<Node> getAllNodesAfter(long timestamp)
Description copied from interface: TimelineIndex
Returns all the nodes after (exclusive) timestamp ordered by increasing timestamp.

Specified by:
getAllNodesAfter in interface TimelineIndex
Parameters:
timestamp - the timestamp value, nodes with greater timestamp value will be returned.
Returns:
all nodes after (exclusive) timestamp ordered by increasing timestamp.

getAllNodesBefore

public Iterable<Node> getAllNodesBefore(long timestamp)
Description copied from interface: TimelineIndex
Returns all the nodes before (exclusive) timestamp ordered by increasing timestamp.

Specified by:
getAllNodesBefore in interface TimelineIndex
Parameters:
timestamp - the timestamp value, nodes with lesser timestamp value will be returned.
Returns:
all nodes before (exclusive) timestamp ordered by increasing timestamp.

getAllNodesBetween

public Iterable<Node> getAllNodesBetween(long startTime,
                                         long endTime)
Description copied from interface: TimelineIndex
Returns all the nodes after (exclusive) afterTimestamp and before (exclusive) beforeTimestamp ordered by increasing timestamp.

Specified by:
getAllNodesBetween in interface TimelineIndex
Parameters:
startTime - the start timestamp, nodes with greater timestamp value will be returned.
endTime - the end timestamp, nodes with lesser timestamp value will be returned.
Returns:
all nodes between (exclusive) the specified timestamps ordered by increasing timestamp.

delete

public void delete()
Description copied from interface: TimelineIndex
Deletes this timeline. Nodes added to the timeline will not be deleted, they are just disconnected from this timeline.

Specified by:
delete in interface TimelineIndex


Copyright © 2010 Neo4j. All Rights Reserved.