Package org.neo4j.graphdb

Examples of org.neo4j.graphdb.Relationship


            String wayName = null;
            OsmRelation wayRelation = null;

            for (int i = 0; i < partToMerge.size(); i++) {
                Relationship chunk = partToMerge.get(i);

                //Create Coordinate objects for the nodes. Sequence matters!
                Node startNode = chunk.getStartNode();
                Node endNode = chunk.getEndNode();

                Double startLat = (Double) startNode.getProperty(OsmEntityAttributeKey.NODE_LAT.name());
                Double startLon = (Double) startNode.getProperty(OsmEntityAttributeKey.NODE_LON.name());

                Double endLat = (Double) endNode.getProperty(OsmEntityAttributeKey.NODE_LAT.name());
                Double endLon = (Double) endNode.getProperty(OsmEntityAttributeKey.NODE_LON.name());

                coordinates.add(new Coordinate(startLon, startLat));
                coordinates.add(new Coordinate(endLon, endLat));

                //merge
                if (partToMerge.size() == 1) {
                    //TODO nothing to merge
                    continue;
                }

                if (i == 0) {
                    wayRelation = chunk.isType(OsmRelation.BIDIRECTIONAL) ? OsmRelation.BIDIRECTIONAL : OsmRelation.ONE_WAY;
                    wayName = chunk.hasProperty(OsmEntityAttributeKey.WAY_NAME.name()) ?
                            (String) chunk.getProperty(OsmEntityAttributeKey.WAY_NAME.name()) : null;

                    //Start relationship -> only start node survives
                    graphDb.index().forRelationships("ways").remove(chunk);
                    chunk.delete();

                } else {
                    graphDb.index().forRelationships("ways").remove(chunk);
                    chunk.delete();

                    graphDb.index().forNodes("nodes").remove(startNode);
                    startNode.delete();

                }
            }


            Coordinate[] coords = getCoordinates(coordinates);
            if (partToMerge.size() == 1) {
                Relationship relationship = partToMerge.get(0);
                double length = getDistanceInMeters(coords);

                relationship.setProperty(OsmEntityAttributeKey.WAY_DISTANCE.name(), length);

            } else if (partToMerge.size() > 1) {

                //Create new relationship
                Node startNode = partToMerge.get(0).getStartNode();
                Node endNode = partToMerge.get(partToMerge.size() - 1).getEndNode();
                Relationship newRelationship = startNode.createRelationshipTo(endNode, wayRelation);

                //Set relationship properties
                newRelationship.setProperty(OsmEntityAttributeKey.WAY_ID.name(), wayId);
                if (wayName != null) {
                    newRelationship.setProperty(OsmEntityAttributeKey.WAY_NAME.name(), wayName);
                }

                //Set geometry and distance
                LineString lineString = geometryFactory.createLineString(coords);

                double length = getDistanceInMeters(coords);
                String textGeometry = lineString.toText();

                newRelationship.setProperty(OsmEntityAttributeKey.WAY_DISTANCE.name(), length);
                newRelationship.setProperty(OsmEntityAttributeKey.WAY_GEOMETRY.name(), textGeometry);

                //Add to index
                graphDb.index().forRelationships("ways").add(newRelationship,
                        OsmEntityAttributeKey.WAY_ID.name(),
                        wayId);
View Full Code Here


                for (Node node : nodes) {

                    if (prevNode != null) {

                        // According to OSM spec ONE_WAY attribution is set in the direction starting from the first node
                        Relationship wayPartRel = prevNode.createRelationshipTo(node, oneWay ? OsmRelation.ONE_WAY : OsmRelation.BIDIRECTIONAL);
                        wayPartRel.setProperty(OsmEntityAttributeKey.WAY_ID.name(), wayId);
                        //Add WAY name if exists
                        if (wayName != null && !wayName.isEmpty()) {
                            wayPartRel.setProperty(OsmEntityAttributeKey.WAY_NAME.name(), wayName);
                        }

                        //add way/relation to index
                        parent.getGraphDb().index().forRelationships("ways").add(wayPartRel,
                                OsmEntityAttributeKey.WAY_ID.name(),
View Full Code Here

    public Node getStartNode(Long wayId) {

        IndexHits<Relationship> ways = db.index().forRelationships("ways").get(OsmEntityAttributeKey.WAY_ID.name(), wayId);
        while (ways.hasNext()) {
            Relationship relationship = ways.next();
            Iterator<Relationship> incoming = relationship.getStartNode().getRelationships(Direction.INCOMING).iterator();

            boolean isStartNode = true;
            while (incoming.hasNext()) {
                Relationship incomingRel = incoming.next();
                Long incomingWayId = (Long) incomingRel.getProperty(OsmEntityAttributeKey.WAY_ID.name());
                if (wayId.equals(incomingWayId)) {
                    isStartNode = false;
                    break;
                }
            }
View Full Code Here

        Node startNodeCandidate = null;
        boolean isRoundabout = false;

        IndexHits<Relationship> ways = db.index().forRelationships("ways").get(OsmEntityAttributeKey.WAY_ID.name(), wayId);
        while (ways.hasNext()) {
            Relationship relationship = ways.next();

            Node startNode = relationship.getStartNode();
            Node endNode = relationship.getEndNode();

            Long startNodeId = (Long) startNode.getProperty(OsmEntityAttributeKey.NODE_ID.name());
            Long endNodeId = (Long) endNode.getProperty(OsmEntityAttributeKey.NODE_ID.name());

            //put start\end nodes in cache
View Full Code Here

    Node memberB = createNode(graphDatabase, "Tony");
    Node memberC = createNode(graphDatabase, "Guillaume");
    Node memberD = createNode(graphDatabase, "Sebastien");
    // Link nodes between them by adding relationships
    // ---Relationship owned by the MemberA node
    Relationship r01 = createRelationship(graphDatabase, memberA, memberB, SocialNetworkRelationship.FRIEND);
    Relationship r02 = createRelationship(graphDatabase, memberA, memberC, SocialNetworkRelationship.TEAMMATE);
    // ---Relationship owned by the MemberB node
    Relationship r03 = createRelationship(graphDatabase, memberB, memberC, SocialNetworkRelationship.TEAMMATE);
    // ---Relationship owned by the MemberC node
    Relationship r04 = createRelationship(graphDatabase, memberC, memberB, SocialNetworkRelationship.FRIEND);
    // ---Relationship owned by the MemberD node
    Relationship r05 = createRelationship(graphDatabase, memberD, memberC, SocialNetworkRelationship.FRIEND);
    // Display relationship created above
    System.out.println("*** MEMBERS RELATIONSHIPS CREATED ***");
    displayRelationship(r01);
    displayRelationship(r02);
    displayRelationship(r03);
 
View Full Code Here

   *        Type of the relationship
   * @return a object representing the relationship
   * @throws Exception
   */
  private static Relationship createRelationship(GraphDatabaseService graphDb, Node ownerNode, Node counterpartNode, RelationshipType relationshipType) throws Exception {
    Relationship newRelationship = null;
    // Create and start a new transaction
    Transaction tx = graphDb.beginTx();
    try {
      // First check if the relationship do not already exists
      Iterator<Relationship> relationships = ownerNode.getRelationships(relationshipType, Direction.OUTGOING).iterator();
      while (relationships.hasNext()) {
        Relationship r = relationships.next();
        if (r.getEndNode().getProperty("MemberName").equals(counterpartNode.getProperty("MemberName"))) {
          newRelationship = r;
          break;
        }
      }
      // Seconds try only to the create a new relationship from the
View Full Code Here

        when(fromNode.getId()).thenReturn(0l);
       
        Node toNode = mock(Node.class);
        when(toNode.getId()).thenReturn(1l);
       
        Relationship mockRel = mock(Relationship.class);
        when(mockRel.getId()).thenReturn(0l);
        when(mockRel.getType()).thenReturn(DynamicRelationshipType.withName("LOVES"));
        when(mockRel.getStartNode()).thenReturn(fromNode);
        when(mockRel.getEndNode()).thenReturn(toNode);
       
        when(mockRel.getPropertyKeys()).thenReturn(Collections.<String> emptyList());
       
        RelationshipSerializationStrategy strategy = new RelationshipSerializationStrategy();
        strategy.serialize(mockRel, serializer);
        serializer.flush();
       
View Full Code Here

        when(fromNode.getId()).thenReturn(0l);
       
        Node toNode = mock(Node.class);
        when(toNode.getId()).thenReturn(1l);
       
        Relationship mockRel = mock(Relationship.class);
        when(mockRel.getId()).thenReturn(0l);
        when(mockRel.getType()).thenReturn(DynamicRelationshipType.withName("LOVES"));
        when(mockRel.getStartNode()).thenReturn(fromNode);
        when(mockRel.getEndNode()).thenReturn(toNode);
       
        when(mockRel.getPropertyKeys()).thenReturn(new ArrayList<String>() {
            private static final long serialVersionUID = 1248180220593789023L;
        {
            add("name");
            add("age");
            add("favorite_numbers");
        }});
       
        when(mockRel.getProperty("name")).thenReturn("bob");
        when(mockRel.getProperty("age")).thenReturn(12);
        when(mockRel.getProperty("favorite_numbers")).thenReturn(new int [] {1,2,3});
       
        RelationshipSerializationStrategy strategy = new RelationshipSerializationStrategy();
        strategy.serialize(mockRel, serializer);
        serializer.flush();
       
View Full Code Here

        RelationshipCreationDescription relToCreate = invocation.getContent();
       
        Node from = db.getNodeById(getNodeId(invocation));
        Node to   = db.getNodeById(relToCreate.getEndNodeId());
       
        Relationship rel = from.createRelationshipTo(to, relToCreate.getType());
        setProperties(rel, relToCreate);
       
        result.createdAt(url.reverse(rel), rel);
    }
View Full Code Here

    @Path(UrlReverseLookerUpper.PATH_RELATIONSHIP_PROPERTIES)
    @DeserializeWith(PropertyContainerDeserializationStrategy.class)
    public void setAllRelationshipProperties(Invocation invocation,
            Output result) throws Exception
    {
        Relationship rel = invocation.getDB().getRelationshipById(getRelationshipId(invocation));
        removeAllProperties(rel);
        setProperties(rel, invocation.<PropertyContainerDeserialization>getContent());
        result.okNoContent();
    }
View Full Code Here

TOP

Related Classes of org.neo4j.graphdb.Relationship

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.