]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateTree.java
Retrieving UpdateNodes with a Resource reference
[simantics/interop.git] / org.simantics.interop.update / src / org / simantics / interop / update / model / UpdateTree.java
index de5ea90e48a94af527c240dd90778ba5493efaaa..a2066f4108c33e35a92d10b28ab9314c2153c34f 100644 (file)
@@ -7,7 +7,6 @@ import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.interop.test.GraphChanges;
-import org.simantics.interop.update.model.UpdateNode.Status;
 
 
 public class UpdateTree {
@@ -21,7 +20,7 @@ public class UpdateTree {
        public UpdateTree(ReadGraph g, GraphChanges changes, UpdateOperations updateOps) throws DatabaseException {
                this.changes = changes;
                this.nodes = new HashMap<Resource, UpdateNode>();
-               this.rootNode = createNode(Status.EXIST, changes.getResource1());
+               this.rootNode = createNode(g, UpdateStatus.EXIST, changes.getResource1());
                nodes.put(changes.getResource1(), rootNode);
                nodes.put(changes.getResource2(), rootNode);
                this.updateOps = updateOps;
@@ -37,25 +36,29 @@ public class UpdateTree {
                return rootNode;
        }
        
-       protected UpdateNode createNode(Status status, Resource r) {
-               return new UpdateNode(status, r);
+       public GraphChanges getChanges() {
+               return changes;
        }
        
-       protected UpdateNode createNode(Status status, UpdateOp op) {
-               return new UpdateNode(status, op);
+       protected UpdateNode createNode(ReadGraph g, UpdateStatus status, Resource r) throws DatabaseException {
+               return new UpdateNode(g,status, r);
        }
        
-       private UpdateNode createNode(Resource r1, Resource r2) {
+       protected UpdateNode createNode(ReadGraph g, UpdateStatus status, UpdateOp op) throws DatabaseException{
+               return new UpdateNode(g,status, op);
+       }
+       
+       private UpdateNode createNode(ReadGraph g, Resource r1, Resource r2) throws DatabaseException {
                UpdateNode node = null;
                if (r1 != null && r2 != null) {
-                       node =  createNode(Status.EXIST, r1);
+                       node =  createNode(g, UpdateStatus.EXIST, r1);
                        nodes.put(r1, node);
                        nodes.put(r2, node);
                } else if (r1 != null) {
-                       node = createNode(Status.DELETED ,updateOps.getUpdateOp(r1));
+                       node = createNode(g,UpdateStatus.DELETED ,updateOps.getUpdateOp(r1));
                        nodes.put(r1, node);
                } else if (r2 != null) {
-                       node = createNode(Status.NEW, updateOps.getUpdateOp(r2));
+                       node = createNode(g,UpdateStatus.NEW, updateOps.getUpdateOp(r2));
                        nodes.put(r2, node);
                }
                return node;
@@ -70,12 +73,12 @@ public class UpdateTree {
                if (nodes.containsKey(r2))
                        return nodes.get(r2);
                
-               UpdateNode node = createNode(r1, r2);
+               UpdateNode node = createNode(g, r1, r2);
                connectParent(g,node);
                return node;
        }
        
-       protected UpdateNode getNode(Resource r) {
+       public UpdateNode getNode(Resource r) {
                return nodes.get(r);
        }
        
@@ -104,9 +107,9 @@ public class UpdateTree {
                UpdateNode parent = nodes.get(parentResource);
                if (parent == null) {
                        if (changes.getComparable().containsLeft(parentResource)) {
-                               parent = createNode(parentResource, changes.getComparable().getRight(parentResource));
+                               parent = createNode(g, parentResource, changes.getComparable().getRight(parentResource));
                        } else if (changes.getComparable().containsRight(parentResource)) {
-                               parent = createNode(changes.getComparable().getLeft(parentResource) ,parentResource);
+                               parent = createNode(g, changes.getComparable().getLeft(parentResource) ,parentResource);
                        } else {
                                return null;
                        }