public GraphDiff compress(GraphDiff diff) { if (diff.isNoop()) { return diff; } CompressAction action = new CompressAction(); diff.apply(action); return action.getCompressedDiff(); }
@Override public void apply(GraphChangeHandler tracker) { if (delete) { tracker.arcDeleted(nodeId, targetNodeId, arcId); } else { tracker.arcCreated(nodeId, targetNodeId, arcId); } }
GraphDiff filter(GraphDiff in) { diffs = new ArrayList<>(); in.apply(this); return new CompoundDiff(diffs); }
/** * Iterates over diffs list, calling "apply" on each individual diff. */ public void apply(GraphChangeHandler tracker) { if (diffs == null) { return; } // implements a naive linear commit - simply replay stored operations for (GraphDiff change : diffs) { change.apply(tracker); } }
public void nodeIdChanged(Object nodeId, Object newId) { clientDiff.add(new NodeIdChangeOperation(nodeId, newId)); }
@Override public void undo(GraphChangeHandler tracker) { tracker.nodeCreated(nodeId); } }
@Override public void undo(GraphChangeHandler tracker) { tracker.nodePropertyChanged(nodeId, property, newValue, oldValue); } }
public void nodeIdChanged(Object nodeId, Object newId) { registerDiff(new NodeIdChangeOperation(nodeId, newId)); }
@Override public void undo(GraphChangeHandler tracker) { tracker.nodeRemoved(nodeId); } }
@Override public void undo(GraphChangeHandler tracker) { tracker.nodeIdChanged(newNodeId, nodeId); } }
@Override public void undo(GraphChangeHandler tracker) { tracker.arcCreated(nodeId, targetNodeId, arcId); }
@Override public void undo(GraphChangeHandler tracker) { tracker.arcDeleted(nodeId, targetNodeId, arcId); }
@Override public void nodePropertyChanged( Object nodeId, String property, Object oldValue, Object newValue) { super.nodePropertyChanged(nodeId, property, oldValue, newValue); Persistent object = (Persistent) context.getGraphManager().getNode(nodeId); context.propertyChanged(object, property, oldValue, newValue); }
/** * Implements a Comparable interface method to compare based on diffId * property. */ @Override public int compareTo(NodeDiff o) { return diffId - o.getDiffId(); } }
public void apply(GraphChangeHandler tracker) { if (delete) { tracker.arcDeleted(nodeId, targetNodeId, arcId); } else { tracker.arcCreated(nodeId, targetNodeId, arcId); } }
public void run() { diff.apply(CayenneContextMergeHandler.this); } });
@Override public void apply(GraphChangeHandler tracker) { tracker.nodeCreated(nodeId); }