org.neo4j.graphdb.Path.lastRelationship()方法的使用及代码示例

x33g5p2x  于2022-01-26 转载在 其他  
字(8.4k)|赞(0)|评价(0)|浏览(84)

本文整理了Java中org.neo4j.graphdb.Path.lastRelationship()方法的一些代码示例,展示了Path.lastRelationship()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Path.lastRelationship()方法的具体详情如下:
包路径:org.neo4j.graphdb.Path
类名称:Path
方法名:lastRelationship

Path.lastRelationship介绍

[英]Returns the last Relationship in this path.
[中]返回此路径中的最后一个关系。

代码示例

代码示例来源:origin: neo4j/neo4j

@Override
public Relationship lastRelationship()
{
  return path.lastRelationship();
}

代码示例来源:origin: neo4j/neo4j

@Override
  protected Relationship convert( Path path )
  {
    return path.lastRelationship();
  }
};

代码示例来源:origin: neo4j/neo4j

@Override
  boolean exclude( Path path )
  {
    return !predicate.test( path.lastRelationship() );
  }
}

代码示例来源:origin: neo4j/neo4j

@Override
long getId( Path source )
{
  return source.lastRelationship().getId();
}

代码示例来源:origin: neo4j/neo4j

@Override
boolean idEquals( Path source, long idToCompare )
{
  Relationship relationship = source.lastRelationship();
  return relationship != null && relationship.getId() == idToCompare;
}

代码示例来源:origin: neo4j/neo4j

@Override
public RelationshipValue lastRelationship()
{
  return ValueUtils.fromRelationshipProxy( path.lastRelationship() );
}

代码示例来源:origin: neo4j/neo4j

private Direction getDirectionOfLastRelationship( Path path )
  {
    assert path.length() > 0;
    Direction direction = Direction.INCOMING;
    if ( path.endNode().equals( path.lastRelationship().getEndNode() ) )
    {
      direction = Direction.OUTGOING;
    }
    return direction;
  }
};

代码示例来源:origin: neo4j/neo4j

@Override
  public Evaluation evaluate( Path path, BranchState<Double> state )
  {
    double nextState = state.getState();
    if ( path.length() > 0 )
    {
      nextState += costEvaluator.getCost( path.lastRelationship(), OUTGOING );
      state.setState( nextState );
    }
    return Evaluation.EXCLUDE_AND_CONTINUE;
  }
}

代码示例来源:origin: neo4j/neo4j

@Override
  public Evaluation evaluate( Path path, BranchState<Double> state )
  {
    double nextState = state.getState();
    if ( path.length() > 0 )
    {
      nextState += costEvaluator.getCost( path.lastRelationship(), OUTGOING );
      state.setState( nextState );
    }
    if ( path.endNode().equals( endNode ) )
    {
      shortestSoFar.setValue( Math.min( shortestSoFar.doubleValue(), nextState ) );
      return Evaluation.INCLUDE_AND_PRUNE;
    }
    return Evaluation.EXCLUDE_AND_CONTINUE;
  }
}

代码示例来源:origin: neo4j/neo4j

public static Path path( Node node, Link... links )
{
  List<Node> nodes = new ArrayList<>( links.length + 1 );
  List<Relationship> relationships = new ArrayList<>( links.length );
  List<PropertyContainer> mixed = new ArrayList<>( links.length * 2 + 1 );
  nodes.add( node );
  mixed.add( node );
  Path path = mock( Path.class );
  when( path.startNode() ).thenReturn( node );
  Relationship last = null;
  for ( Link link : links )
  {
    last = link.relationship;
    relationships.add( last );
    mixed.add( last );
    node = link.checkNode( node );
    nodes.add( node );
    mixed.add( node );
  }
  when( path.endNode() ).thenReturn( node );
  when( path.iterator() ).thenAnswer( withIteratorOf( mixed ) );
  when( path.nodes() ).thenReturn( nodes );
  when( path.relationships() ).thenReturn( relationships );
  when( path.lastRelationship() ).thenReturn( last );
  when( path.length() ).thenReturn( links.length );
  when( path.reverseNodes() ).thenReturn( reverse( nodes ) );
  when( path.reverseRelationships() ).thenReturn( reverse( relationships ) );
  return path;
}

代码示例来源:origin: neo4j/neo4j

@Override
public Iterable<Relationship> expand( Path path, BranchState<Integer> state )
{
  if ( path.length() > 0 )
  {
    int newState = state.getState() + ((Number)path.lastRelationship().getProperty( "weight" )).intValue();
    state.setState( newState );
    encounteredState.put( path.endNode(), newState );
  }
  return path.endNode().getRelationships();
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldHandleSingleRelationshipPath()
{
  // Given
  Node start, end;
  Relationship relationship;
  try ( Transaction tx = db.beginTx() )
  {
    start = db.createNode();
    end = db.createNode();
    relationship = start.createRelationshipTo( end, RelationshipType.withName( "R" ) );
    tx.success();
  }
  // When
  Path mapped = mapper.mapPath( path( asNodeValues( start, end ), asRelationshipsValues( relationship ) ) );
  // Then
  try ( Transaction ignore = db.beginTx() )
  {
    assertThat( mapped.length(), equalTo( 1 ) );
    assertThat( mapped.startNode(), equalTo( start ) );
    assertThat( mapped.endNode(), equalTo( end ) );
    assertThat( Iterables.asList( mapped.relationships() ), equalTo( singletonList( relationship ) ) );
    assertThat( Iterables.asList( mapped.reverseRelationships() ), equalTo( singletonList( relationship ) ) );
    assertThat( Iterables.asList( mapped.nodes() ), equalTo( Arrays.asList( start, end ) ) );
    assertThat( Iterables.asList( mapped.reverseNodes() ), equalTo( Arrays.asList( end, start ) ) );
    assertThat( mapped.lastRelationship(), equalTo( relationship ) );
    assertThat( Iterators.asList( mapped.iterator() ), equalTo( Arrays.asList( start, relationship, end ) ) );
  }
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldHandleSingleNodePath()
{
  // Given
  Node node;
  try ( Transaction tx = db.beginTx() )
  {
    node = db.createNode();
    tx.success();
  }
  // When
  Path mapped = mapper.mapPath( path( asNodeValues( node ), asRelationshipsValues() ) );
  // Then
  try ( Transaction ignore = db.beginTx() )
  {
    assertThat( mapped.length(), equalTo( 0 ) );
    assertThat( mapped.startNode(), equalTo( node ) );
    assertThat( mapped.endNode(), equalTo( node ) );
    assertThat( Iterables.asList( mapped.relationships() ), hasSize( 0 ) );
    assertThat( Iterables.asList( mapped.reverseRelationships() ), hasSize( 0 ) );
    assertThat( Iterables.asList( mapped.nodes() ), equalTo( singletonList( node ) ) );
    assertThat( Iterables.asList( mapped.reverseNodes() ), equalTo( singletonList( node ) ) );
    assertThat( mapped.lastRelationship(), nullValue() );
    assertThat( Iterators.asList( mapped.iterator() ), equalTo( singletonList( node ) ) );
  }
}

代码示例来源:origin: neo4j/neo4j

@Override
public Iterable<Relationship> expand( Path path, BranchState<Double> state )
{
  double newState = state.getState();
  if ( path.length() > 0 )
  {
    newState += (Double) path.lastRelationship().getProperty( "length" );
    state.setState( newState );
  }
  seenBranchStates.put( path.endNode(), newState );
  return path.endNode().getRelationships( OUTGOING );
}

代码示例来源:origin: neo4j/neo4j

assertThat( Iterables.asList( mapped.nodes() ), equalTo( Arrays.asList( a, b, c, d, e ) ) );
assertThat( Iterables.asList( mapped.reverseNodes() ), equalTo( Arrays.asList( e, d, c, b, a ) ) );
assertThat( mapped.lastRelationship(), equalTo( r4 ) );
assertThat( Iterators.asList( mapped.iterator() ),
    equalTo( Arrays.asList( a, r1, b, r2, c, r3, d, r4, e ) ) );

代码示例来源:origin: neo4j/neo4j

@Test
public void testSmallestPossibleInit()
{
  Traverser traversal = getGraphDb().traversalDescription().traverse( node( "1" ) );
  int count = 0;
  try ( Transaction transaction = beginTx() )
  {
    for ( Path position : traversal )
    {
      count++;
      assertNotNull( position );
      assertNotNull( position.endNode() );
      if ( position.length() > 0 )
      {
        assertNotNull( position.lastRelationship() );
      }
    }
    assertNotEquals( "empty traversal", 0, count );
    transaction.success();
  }
}

代码示例来源:origin: neo4j/neo4j

.evaluator( path ->
  Relationship rel = path.lastRelationship();
  boolean relIsOfType = rel != null && rel.isType( type );
  boolean prune =

代码示例来源:origin: neo4j/neo4j

private void assertPathIsCorrect( Path path )
{
  Node a = node( "A" );
  Relationship to1 = getFistRelationship( a );
  Node b = to1.getEndNode();
  Relationship to2 = getFistRelationship( b );
  Node c = to2.getEndNode();
  Relationship to3 = getFistRelationship( c );
  Node d = to3.getEndNode();
  Relationship to4 = getFistRelationship( d );
  Node e = to4.getEndNode();
  assertEquals( (Integer) 4, (Integer) path.length() );
  assertEquals( a, path.startNode() );
  assertEquals( e, path.endNode() );
  assertEquals( to4, path.lastRelationship() );
  assertContainsInOrder( path, a, to1, b, to2, c, to3, d, to4, e );
  assertContainsInOrder( path.nodes(), a, b, c, d, e );
  assertContainsInOrder( path.relationships(), to1, to2, to3, to4 );
  assertContainsInOrder( path.reverseNodes(), e, d, c, b, a );
  assertContainsInOrder( path.reverseRelationships(), to4, to3, to2, to1 );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void ensureCorrectPathEntitiesInShortPath()
{
  /*
   * (a)-->(b)
   */
  createGraph( "a TO b" );
  Node a = getNodeWithName( "a" );
  Node b = getNodeWithName( "b" );
  Relationship r = a.getSingleRelationship( to, OUTGOING );
  Path path = Iterables.single( getGraphDb().bidirectionalTraversalDescription()
    .mirroredSides( getGraphDb().traversalDescription().relationships( to, OUTGOING ).uniqueness( NODE_PATH ) )
    .collisionEvaluator( Evaluators.atDepth( 1 ) )
    .sideSelector( SideSelectorPolicies.LEVEL, 1 )
    .traverse( a, b ) );
  assertContainsInOrder( path.nodes(), a, b );
  assertContainsInOrder( path.reverseNodes(), b, a );
  assertContainsInOrder( path.relationships(), r );
  assertContainsInOrder( path.reverseRelationships(), r );
  assertContainsInOrder( path, a, r, b );
  assertEquals( a, path.startNode() );
  assertEquals( b, path.endNode() );
  assertEquals( r, path.lastRelationship() );
}

代码示例来源:origin: org.neo4j/neo4j-graphdb-api

@Override
boolean idEquals( Path source, long idToCompare )
{
  Relationship relationship = source.lastRelationship();
  return relationship != null && relationship.getId() == idToCompare;
}

相关文章