]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.update/src/org/simantics/interop/update/model/ModelUpdate.java
Handle asserted property statements
[simantics/interop.git] / org.simantics.interop.update / src / org / simantics / interop / update / model / ModelUpdate.java
index cbdfc8f48f5cefe15c5b2ffe570b0201b269c509..5f400df4c653285946551ea0f2addf8c4c81f497 100644 (file)
@@ -18,6 +18,7 @@ import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.util.Layer0Utils;
 import org.simantics.db.request.Read;
 import org.simantics.interop.test.GraphChanges;
+import org.simantics.interop.test.GraphChanges.Modification;
 import org.simantics.interop.test.GraphComparator;
 import org.simantics.utils.datastructures.BijectionMap;
 import org.simantics.utils.datastructures.Pair;
@@ -240,7 +241,11 @@ public abstract class ModelUpdate {
                        for (PropertyChange rc : r) {
                                if (comparable.containsRight(rc))
                                        continue;
-                               if (lc.getFirst().equals(rc.getFirst())) {
+                               if (lc.getFirst() != null && lc.getFirst().equals(rc.getFirst())) {
+                                       comparable.map(lc, rc);
+                                       break;
+                               }
+                               if (lc.getSecond() != null && lc.getSecond().equals(rc.getSecond())) {
                                        comparable.map(lc, rc);
                                        break;
                                }
@@ -372,9 +377,9 @@ public abstract class ModelUpdate {
                protected GraphChanges filterChanges(ReadGraph g, GraphChanges changes) throws DatabaseException 
            {
                        
-                       List<Pair<Statement,Statement>> modifications = new ArrayList<Pair<Statement,Statement>>();
+                       List<Modification> modifications = new ArrayList<Modification>();
                        
-               for (Pair<Statement, Statement> mod : changes.getModifications()) {
+               for (Modification mod : changes.getModifications()) {
                        
                        boolean accept = true;
                        for (ChangeFilter filter : filters) {
@@ -393,7 +398,7 @@ public abstract class ModelUpdate {
 
        
        public interface ChangeFilter {
-               public boolean accept(ReadGraph g, Pair<Statement, Statement> change) throws DatabaseException;
+               public boolean accept(ReadGraph g, Modification change) throws DatabaseException;
        }
 
        
@@ -417,12 +422,12 @@ public abstract class ModelUpdate {
                }
                
                @Override
-               public boolean accept(ReadGraph g, Pair<Statement, Statement> change) throws DatabaseException {
+               public boolean accept(ReadGraph g, Modification change) throws DatabaseException {
                        //filter floating point values that have less than 1% difference.
-                       if (!g.hasValue(change.first.getObject()) || !g.hasValue(change.second.getObject()))
+                       if (!g.hasValue(change.getLeftStm().getObject()) || !g.hasValue(change.getRightStm().getObject()))
                                return true;
-               Object v1 = g.getValue(change.first.getObject());
-               Object v2 = g.getValue(change.second.getObject());
+               Object v1 = g.getValue(change.getLeftStm().getObject());
+               Object v2 = g.getValue(change.getRightStm().getObject());
                
                if (v1 instanceof Double && v2 instanceof Double) {
                        double d1 = (Double)v1;
@@ -471,7 +476,7 @@ public abstract class ModelUpdate {
                        if (pair.getFirst() != null) {
                                boolean found = false;
                                for (PropertyChange pair2 : updateList2.getChanges()) {
-                                       if (pair.getFirst().equals(pair2.getSecond())) {
+                                       if (pair.getFirst() != null && pair.getFirst().equals(pair2.getSecond())) {
                                                found = true;
                                                break;
                                        }