]> gerrit.simantics Code Review - simantics/interop.git/commitdiff
Accessing UpdateOperations with SCL. 21/4621/1
authorMarko Luukkainen <marko.luukkainen@semantum.fi>
Tue, 1 Dec 2020 17:36:43 +0000 (19:36 +0200)
committerMarko Luukkainen <marko.luukkainen@semantum.fi>
Tue, 1 Dec 2020 17:36:43 +0000 (19:36 +0200)
Accessing Graph Comparator changed statements
Fixed potential NPE in floating point value filter.

gitlab #28

Change-Id: I6f17ed281cb33855c5f5ca0fd7e480de43be77d9

org.simantics.interop.update/scl/Interop/Update.scl
org.simantics.interop.update/src/org/simantics/interop/update/model/ModelUpdate.java
org.simantics.interop/src/org/simantics/interop/test/GraphComparator.java

index 2c9124874b66ee2f746d3d9f6a49f164fbb90e56..9badee25eb79b25f14fc5bf64d4e51407bf747d1 100644 (file)
@@ -43,6 +43,15 @@ importJava "org.simantics.interop.update.model.ModelUpdate" where
   
   @JavaName defaultSelections
   setDefaultSelections :: ModelUpdate -> <Proc>()
+
+importJava "org.simantics.interop.update.model.UpdateOperations" where
+  data UpdateOperations
+  
+  @JavaName getUpdateOp
+  getUpdateOpWithResource :: UpdateOperations -> Resource -> <Proc> Maybe UpdateOp
+  
+  @JavaName getUpdateOp
+  getUpdateOpWithStatement :: UpdateOperations -> Statement -> <Proc> Maybe UpdateOp
   
 importJava "org.simantics.interop.update.model.UpdateTree" where
   data UpdateTree
@@ -53,6 +62,9 @@ importJava "org.simantics.interop.update.model.UpdateTree" where
   @JavaName getNode
   getNode :: UpdateTree -> Resource -> <Proc> Maybe UpdateNode
   
+  @JavaName getUpdateOps
+  getUpdateOps :: UpdateTree -> <Proc> UpdateOperations
+  
 importJava "org.simantics.interop.update.model.UpdateList" where
   data UpdateList
   
index ff56d43ea6f6bd3ac1430dc3ee959b5eb4428ef4..aabe29d58c59d5e09ec2cdf8f017dc6df46a1113 100644 (file)
@@ -491,6 +491,8 @@ public abstract class ModelUpdate {
                @Override
                public boolean accept(ReadGraph g, Modification change) throws DatabaseException {
                        //filter floating point values that have less than 1% difference.
+                       if (change.getLeftStm() == null || change.getRightStm() == null)
+                               return true;
                        if (!g.hasValue(change.getLeftStm().getObject()) || !g.hasValue(change.getRightStm().getObject()))
                                return true;
                Object v1 = g.getValue(change.getLeftStm().getObject());
index aae895b7a5835ce068829e6e4dffbefe3b8158ea..3b7bb31d8e4a7fb41ef41950dbdc320ffa88bb7f 100644 (file)
@@ -790,6 +790,14 @@ public class GraphComparator {
                return new GraphChanges(r1,r2,changes1,changes2,modifications,comparableResources);
        }
        
+       public List<Statement> getChanges1() {
+               return changes1;
+       }
+       
+       public List<Statement> getChanges2() {
+               return changes2;
+       }
+       
        private void addComparable(Statement left, Statement right) throws DatabaseException {
                addComparable(left.getObject(), right.getObject());
                comparableStatements.map(left, right);