package org.javers.core.diff; import org.javers.core.graph.ObjectNode; import java.util.Collections; import java.util.Set; import static org.javers.common.collections.Sets.difference; /** * @author bartosz walacik */ public class GraphPair { private final ObjectGraph leftGraph; private final ObjectGraph rightGraph; private final Set<ObjectNode> onlyOnLeft; private final Set<ObjectNode> onlyOnRight; public GraphPair(ObjectGraph leftGraph, ObjectGraph rightGraph) { this.leftGraph = leftGraph; this.rightGraph = rightGraph; this.onlyOnLeft = difference(leftGraph.nodes(), rightGraph.nodes()); this.onlyOnRight = difference(rightGraph.nodes(), leftGraph.nodes()); } //for initial public GraphPair(ObjectGraph currentGraph) { this.leftGraph = new EmptyGraph(); this.rightGraph = currentGraph; this.onlyOnLeft = Collections.emptySet(); this.onlyOnRight = rightGraph.nodes(); } private class EmptyGraph extends ObjectGraph { EmptyGraph() { super(Collections.emptySet()); } } public Set<ObjectNode> getOnlyOnLeft() { return onlyOnLeft; } public Set<ObjectNode> getOnlyOnRight() { return onlyOnRight; } public Set<ObjectNode> getLeftNodeSet() { return leftGraph.nodes(); } public Set<ObjectNode> getRightNodeSet() { return rightGraph.nodes(); } }