private void resolveMonitor( Node node ) { if ( dataMonitor == null ) { GraphDatabaseService service = node.getGraphDatabase(); if ( service instanceof GraphDatabaseFacade ) { Monitors monitors = ((GraphDatabaseFacade) service).getDependencyResolver().resolveDependency( Monitors.class ); dataMonitor = monitors.newMonitor( DataMonitor.class ); } } }
private Relationship createRelationship( Node node ) { try ( Transaction tx = node.getGraphDatabase().beginTx() ) { Relationship rel = node.createRelationshipTo( node, MyRelTypes.TEST ); tx.success(); return rel; } }
@PluginTarget( Node.class ) public Node getThisNodeOrById( @Source Node start, @Parameter( name = "id", optional = true ) Long id ) { optional = id; if ( id == null ) { return start; } try ( Transaction tx = start.getGraphDatabase().beginTx() ) { Node node = start.getGraphDatabase().getNodeById( id ); tx.success(); return node; } }
public static void destroy( Map<String, Node> nodes ) { if ( nodes.isEmpty() ) { return; } GraphDatabaseService db = nodes.values().iterator().next().getGraphDatabase(); try ( Transaction tx = db.beginTx() ) { for ( Node node : db.getAllNodes() ) { for ( Relationship rel : node.getRelationships() ) { rel.delete(); } node.delete(); } tx.success(); } }
void setProperty( String nodeName, String propertyName, Object propertyValue ) { Node i = this.getNode( nodeName ); GraphDatabaseService db = i.getGraphDatabase(); try ( Transaction tx = db.beginTx() ) { i.setProperty( propertyName, propertyValue ); tx.success(); } }
@PluginTarget( Node.class ) public Node getThisNodeOrById( @Source Node start, @Parameter( name = "id", optional = true ) Long id ) { optional = id; if ( id == null ) { return start; } return start.getGraphDatabase() .getNodeById( id ); }
@PluginTarget( Node.class ) public Iterable<Relationship> getRelationshipsBetween( @Source final Node start, @Parameter( name = "other" ) final Node end ) { List<Relationship> result = new ArrayList<>(); try ( Transaction tx = start.getGraphDatabase().beginTx() ) { for ( Relationship relationship : start.getRelationships() ) { if ( relationship.getOtherNode( start ).equals( end ) ) { result.add( relationship ); } } tx.success(); } return result; }
@PluginTarget( Node.class ) public Iterable<Relationship> createRelationships( @Source Node start, @Parameter( name = "type" ) RelationshipType type, @Parameter( name = "nodes" ) Iterable<Node> nodes ) { List<Relationship> result = new ArrayList<>(); try ( Transaction tx = start.getGraphDatabase().beginTx() ) { for ( Node end : nodes ) { result.add( start.createRelationshipTo( end, type ) ); } tx.success(); } return result; }
@Name( GET_CONNECTED_NODES ) @PluginTarget( Node.class ) public Iterable<Node> getAllConnectedNodes( @Source Node start ) { ArrayList<Node> nodes = new ArrayList<>(); try ( Transaction tx = start.getGraphDatabase().beginTx() ) { for ( Relationship rel : start.getRelationships() ) { nodes.add( rel.getOtherNode( start ) ); } tx.success(); } return nodes; }
@Override protected Traverser instantiateTraverser( Node start, Node end ) { GraphDatabaseService db = start.getGraphDatabase(); TraversalDescription sideBase = db.traversalDescription().breadthFirst().uniqueness( NODE_PATH ); return db.bidirectionalTraversalDescription().mirroredSides( sideBase.expand( expander ) ) .sideSelector( LEVEL_STOP_DESCENT_ON_RESULT, maxDepth ) .collisionEvaluator( toDepth( maxDepth ) ) .traverse( start, end ); }
@PluginTarget( Node.class ) public Iterable<Relationship> createRelationships( @Source Node start, @Parameter( name = "type" ) RelationshipType type, @Parameter( name = "nodes" ) Iterable<Node> nodes ) { List<Relationship> result = new ArrayList<>(); try ( Transaction tx = start.getGraphDatabase().beginTx() ) { for ( Node end : nodes ) { result.add( start.createRelationshipTo( end, type ) ); } tx.success(); } return result; }
@Override void extraData( MappingSerializer serializer ) { if ( !isDeleted() ) { MappingWriter writer = serializer.writer; MappingWriter properties = writer.newMapping( RepresentationType.PROPERTIES, "data" ); new PropertiesRepresentation( node ).serialize( properties ); if ( writer.isInteractive() ) { serializer.putList( "relationship_types", ListRepresentation.relationshipTypes( node.getGraphDatabase().getAllRelationshipTypes() ) ); } properties.done(); } }
private static Function<Node,StartRelationship> incoming( String type ) { return node -> { GraphDatabaseService db = node.getGraphDatabase(); RelationshipType relType = withName( type ); return new StartRelationship( db.createNode().createRelationshipTo( node, relType ).getId(), Direction.INCOMING, relType ); }; }
private static Function<Node,StartRelationship> outgoing( String type ) { return node -> { GraphDatabaseService db = node.getGraphDatabase(); RelationshipType relType = withName( type ); return new StartRelationship( node.createRelationshipTo( db.createNode(), relType ).getId(), Direction.OUTGOING, relType ); }; }
private Relationship getFirstRelationshipFromRomeoNode() { Node romeo = getNode( "Romeo" ); try ( Transaction transaction = romeo.getGraphDatabase().beginTx() ) { ResourceIterable<Relationship> relationships = (ResourceIterable<Relationship>) romeo.getRelationships(); try ( ResourceIterator<Relationship> iterator = relationships.iterator() ) { return iterator.next(); } } }
@PluginTarget( Node.class ) public Path pathToReference( @Source Node me ) { PathFinder<Path> finder = GraphAlgoFactory.shortestPath( PathExpanders.allTypesAndDirections(), 6 ); return finder.findSinglePath( me.getGraphDatabase() .createNode(), me ); } }
@Override protected Traverser instantiateTraverser( Node start, Node end ) { // Bidirectional traversal GraphDatabaseService db = start.getGraphDatabase(); TraversalDescription base = db.traversalDescription().depthFirst().uniqueness( uniqueness() ); return db.bidirectionalTraversalDescription() .startSide( base.expand( expander ).evaluator( toDepth( maxDepth / 2 ) ) ) .endSide( base.expand( expander.reverse() ).evaluator( toDepth( maxDepth - maxDepth / 2 ) ) ) .traverse( start, end ); } }
private ResourceIterable<WeightedPath> findPaths( Node start, Node end, boolean multiplePaths ) { PathInterest interest; if ( multiplePaths ) { interest = stopAfterLowestWeight ? PathInterestFactory.allShortest() : PathInterestFactory.all(); } else { interest = PathInterestFactory.single(); } GraphDatabaseService db = start.getGraphDatabase(); TraversalDescription traversalDescription = db.traversalDescription().uniqueness( Uniqueness.NONE ) .expand( expander, initialState ); lastTraverser = traversalDescription.order( new SelectorFactory( end, interest ) ) .evaluator( includeWhereEndNodeIs( end ) ) .traverse( start ); return Iterators.asResourceIterable( new WeightedPathIterator( lastTraverser.iterator(), costEvaluator, stopAfterLowestWeight ) ); }
@Test @Graph( "I know you" ) public void get_Relationship_by_ID() throws JsonParseException { Node node = data.get().get( "I" ); Relationship relationship; try ( Transaction transaction = node.getGraphDatabase().beginTx() ) { relationship = node.getSingleRelationship( RelationshipType.withName( "know" ), Direction.OUTGOING ); } String response = gen().expectedStatus( com.sun.jersey.api.client.ClientResponse.Status.OK.getStatusCode() ).get( getRelationshipUri( relationship ) ).entity(); assertTrue( JsonHelper.jsonToMap( response ).containsKey( "start" ) ); }
@Override protected Traverser instantiateTraverser( Node start, Node end ) { GraphDatabaseService db = start.getGraphDatabase(); TraversalDescription side = db.traversalDescription().breadthFirst().uniqueness( uniqueness ).order( ( startSource, expander ) -> new LiteDepthFirstSelector( startSource, startThreshold, expander ) ); return db.bidirectionalTraversalDescription().startSide( side.expand( expander ).evaluator( toDepth( onDepth / 2 ) ) ) .endSide( side.expand( expander.reverse() ).evaluator( toDepth( onDepth - onDepth / 2 ) ) ) .collisionEvaluator( atDepth( onDepth ) ) // TODO Level side selector will make the traversal return wrong result, why? // .sideSelector( SideSelectorPolicies.LEVEL, onDepth ) .traverse( start, end ); } }