Example usage for com.google.common.collect SortedMapDifference entriesOnlyOnRight

List of usage examples for com.google.common.collect SortedMapDifference entriesOnlyOnRight

Introduction

In this page you can find the example usage for com.google.common.collect SortedMapDifference entriesOnlyOnRight.

Prototype

@Override
    SortedMap<K, V> entriesOnlyOnRight();

Source Link

Usage

From source file:org.geogit.api.plumbing.diff.TreeDifference.java

private SortedMap<NodeRef, NodeRef> findRenames(SortedMapDifference<String, MutableTree> difference) {

    SortedMap<String, MutableTree> entriesOnlyOnLeft = difference.entriesOnlyOnLeft();
    SortedMap<String, MutableTree> entriesOnlyOnRight = difference.entriesOnlyOnRight();

    SortedMap<NodeRef, NodeRef> matches = newTreeMap();

    for (Map.Entry<String, MutableTree> right : entriesOnlyOnRight.entrySet()) {
        for (Map.Entry<String, MutableTree> left : entriesOnlyOnLeft.entrySet()) {

            Node leftNode = left.getValue().getNode();
            Node rightNode = right.getValue().getNode();

            if (rightNode.getObjectId().equals(leftNode.getObjectId())) {
                String leftParent = NodeRef.parentPath(left.getKey());
                String rightParent = NodeRef.parentPath(right.getKey());

                NodeRef leftRef = new NodeRef(leftNode, leftParent, ObjectId.NULL);
                NodeRef rightRef = new NodeRef(rightNode, rightParent, ObjectId.NULL);
                matches.put(leftRef, rightRef);
            }/*  w ww  . j  a v a2s .  c om*/
        }
    }
    return matches;
}

From source file:org.geogit.api.plumbing.diff.TreeDifference.java

/**
 * Finds child refs that exist on the right root tree, don't exist on the left root tree, and
 * are not renames./* w w  w  .j  a v a2  s.c  o m*/
 * 
 * @return
 */
public SortedSet<NodeRef> findNewTrees() {

    SortedMap<String, MutableTree> leftEntries = leftTree.getChildrenAsMap();
    SortedMap<String, MutableTree> rightEntries = rightTree.getChildrenAsMap();

    SortedMapDifference<String, MutableTree> difference;
    difference = difference(leftEntries, rightEntries);

    Map<String, MutableTree> entriesOnlyOnRight;
    entriesOnlyOnRight = newHashMap(difference.entriesOnlyOnRight());

    // ignore renames
    Map<NodeRef, NodeRef> pureRenames = findRenames(difference);
    for (NodeRef renamedTo : pureRenames.values()) {
        entriesOnlyOnRight.remove(renamedTo.path());
    }

    SortedSet<NodeRef> newTreeRefs = Sets.newTreeSet();
    for (Map.Entry<String, MutableTree> newTree : entriesOnlyOnRight.entrySet()) {
        Node node = newTree.getValue().getNode();
        String parentPath = NodeRef.parentPath(newTree.getKey());
        // pass NULL to the NodeRef metadataId, to it defers to the one in the Node in case it
        // has one (see NodeRef.getMetadataId())
        ObjectId metadataId = ObjectId.NULL;
        NodeRef ref = new NodeRef(node, parentPath, metadataId);
        newTreeRefs.add(ref);
    }
    return newTreeRefs;
}