Exemplo n.º 1
0
  private void mergeGraph(GraphModel merge) {

    // Add any new nodes
    for (GraphNode node : merge.getNodes()) {
      if (null == resultModel.findNode(node.getId())) {
        // TODO: Should be cloning the node.
        resultModel.addNode(node);

        // Speed up edge lookups
        Set<GraphEdge> empty = Sets.newHashSet();
        headToEdges.put(node, empty);
      }
    }

    // Add any new edges
    for (GraphEdge edge : merge.getEdges()) {
      Set<GraphEdge> forHead = headToEdges.get(edge.getHead());
      if (null == forHead) {
        continue;
      }
      if (!forHead.contains(edge)) {
        resultModel.addEdge(edge.getRelation(), edge.getHead(), edge.getTail());
        forHead.add(edge);
      }
    }
  }