]> gerrit.simantics Code Review - simantics/interop.git/commitdiff
Refactoring update dependency tree calculation
authorMarko Luukkainen <marko.luukkainen@vtt.fi>
Fri, 24 Feb 2017 11:15:04 +0000 (13:15 +0200)
committerMarko Luukkainen <marko.luukkainen@vtt.fi>
Fri, 24 Feb 2017 11:15:04 +0000 (13:15 +0200)
refs #7045

Change-Id: If298ffbcc83520c12683252ca9eaa4243e3addd3

org.simantics.interop.update/src/org/simantics/interop/update/editor/UpdateEditorInput.java
org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateTree.java

index f91f659830834c31a735a9c4332a984fa27e7782..3c0a025265f8041a8816ab3b569efdbd48d1bf8e 100644 (file)
@@ -1,8 +1,10 @@
 package org.simantics.interop.update.editor;
 
+import org.eclipse.ui.PartInitException;
 import org.simantics.db.Resource;
 import org.simantics.db.layer0.variable.RVI;
 import org.simantics.ui.workbench.ResourceEditorInput2;
+import org.simantics.utils.ui.workbench.WorkbenchUtils;
 
 /**
  * Editor input for ModelUpdateEditor
@@ -12,6 +14,7 @@ import org.simantics.ui.workbench.ResourceEditorInput2;
  */
 public class UpdateEditorInput extends ResourceEditorInput2{
 
+       private String editorID;
        private Resource r1;
        private Resource r2;
        
@@ -19,6 +22,7 @@ public class UpdateEditorInput extends ResourceEditorInput2{
                super(editorID, r1, model, rvi);
                this.r1 = r1;
                this.r2 = r2;
+               this.editorID = editorID;
        }
 
        public Resource getR1() {
@@ -30,4 +34,8 @@ public class UpdateEditorInput extends ResourceEditorInput2{
        }
        
        
+       public void openEditor() throws PartInitException {
+               WorkbenchUtils.openEditor(editorID, this);
+       }
+       
 }
index d06d70637b539618aff056b30fb08c8954c667bc..de5ea90e48a94af527c240dd90778ba5493efaaa 100644 (file)
@@ -75,19 +75,19 @@ public class UpdateTree {
                return node;
        }
        
+       protected UpdateNode getNode(Resource r) {
+               return nodes.get(r);
+       }
+       
        protected boolean connectParent(ReadGraph g, UpdateNode node) throws DatabaseException {
                UpdateNode parent = null;
                while (true) {
                        Resource parentResource = node.getParentResource(g);
                        parent = nodes.get(parentResource);
                        if (parent == null) {
-                               if (changes.getComparable().containsLeft(parentResource)) {
-                                       parent = createNode(parentResource, changes.getComparable().getRight(parentResource));
-                               } else if (changes.getComparable().containsRight(parentResource)) {
-                                       parent = createNode(changes.getComparable().getLeft(parentResource) ,parentResource);
-                               } else {
+                               parent = getOrCreate(g, parentResource);
+                               if (parent == null)
                                        return false;
-                               }
                                //parent.setStatus(Status.CONTAINS);
                                parent.addChild(node);
                                node = parent;
@@ -100,6 +100,23 @@ public class UpdateTree {
                }
        }
        
+       protected UpdateNode getOrCreate(ReadGraph g, Resource parentResource) throws DatabaseException {
+               UpdateNode parent = nodes.get(parentResource);
+               if (parent == null) {
+                       if (changes.getComparable().containsLeft(parentResource)) {
+                               parent = createNode(parentResource, changes.getComparable().getRight(parentResource));
+                       } else if (changes.getComparable().containsRight(parentResource)) {
+                               parent = createNode(changes.getComparable().getLeft(parentResource) ,parentResource);
+                       } else {
+                               return null;
+                       }
+                       //parent.setStatus(Status.CONTAINS
+               } 
+               return parent;
+       }
+       
+       
+       
        protected boolean handleCustom(ReadGraph g, UpdateOp op) throws DatabaseException {
                return false;
        }