]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop/src/org/simantics/interop/test/GraphComparator.java
Handle asserted property statements
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / test / GraphComparator.java
index f5c4dfc8f61e5f1128908e05eef225deeb0df3d4..8701ebecee88376bd852e5a080844d170d8df6aa 100644 (file)
@@ -32,6 +32,7 @@ import org.simantics.db.Statement;
 import org.simantics.db.common.request.ReadRequest;
 import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.interop.test.GraphChanges.Modification;
 import org.simantics.layer0.Layer0;
 import org.simantics.utils.datastructures.BijectionMap;
 import org.simantics.utils.datastructures.MapList;
@@ -55,21 +56,21 @@ public class GraphComparator {
 
        private Resource r1;
        private Resource r2;
-       private Set<Resource> strong = new HashSet<Resource>();       // List of relations that identify object, if subject is already identified. 
-       private List<Resource> traversed = new ArrayList<Resource>(); // list of relations that are traversed (and tested)
-       private List<Resource> tested = new ArrayList<Resource>();    // list of relations that are tested, but not traversed
-       private List<Resource> nonTraversed = new ArrayList<Resource>(); // list of relations that are not traversed
-       private List<Resource> nonTested = new ArrayList<Resource>(); // list of relations that are not tested
-       
-       private List<Statement> changes1 = new ArrayList<Statement>();
-       private List<Statement> changes2 = new ArrayList<Statement>();
-       private List<Pair<Statement,Statement>> modifications = new ArrayList<Pair<Statement,Statement>>();
-       private Set<Statement> changes1Set = new HashSet<Statement>();
-       private Set<Statement> changes2Set = new HashSet<Statement>();
-       private Set<Pair<Statement,Statement>> modificationsSet = new HashSet<Pair<Statement,Statement>>();
+       private Set<Resource> strong = new HashSet<>();       // List of relations that identify object, if subject is already identified. 
+       private List<Resource> traversed = new ArrayList<>(); // list of relations that are traversed (and tested)
+       private List<Resource> tested = new ArrayList<>();    // list of relations that are tested, but not traversed
+       private List<Resource> nonTraversed = new ArrayList<>(); // list of relations that are not traversed
+       private List<Resource> nonTested = new ArrayList<>(); // list of relations that are not tested
+       
+       private List<Statement> changes1 = new ArrayList<>();
+       private List<Statement> changes2 = new ArrayList<>();
+       private List<Modification> modifications = new ArrayList<>();
+       private Set<Statement> changes1Set = new HashSet<>();
+       private Set<Statement> changes2Set = new HashSet<>();
+       private Set<Modification> modificationsSet = new HashSet<>();
 
-       private BijectionMap<Statement, Statement> comparableStatements = new BijectionMap<Statement, Statement>();
-       private BijectionMap<Resource, Resource> comparableResources = new BijectionMap<Resource, Resource>();
+       private BijectionMap<Statement, Statement> comparableStatements = new BijectionMap<>();
+       private BijectionMap<Resource, Resource> comparableResources = new BijectionMap<>();
        
        private Set<Resource> processedResources = new HashSet<Resource>();
        
@@ -838,8 +839,8 @@ public class GraphComparator {
                }
        }
        
-       private void addModification(Statement s1, Statement s2) {
-               Pair<Statement, Statement> mod = new Pair<Statement, Statement>(s1,s2);
+       private void addModification(Resource sub1, Statement s1, Resource sub2, Statement s2) {
+               Modification mod = new Modification(sub1, sub2, s1, s2);
                if (!modificationsSet.contains(mod)) {
                        modificationsSet.add(mod);
                        modifications.add(mod);
@@ -1194,16 +1195,18 @@ public class GraphComparator {
 //                                                     boolean eq = compareValue(v1, v2);
                                                        boolean eq = compareValue(g,b,s1.getObject(), s2.getObject());
                                                        if (!eq) {
-                                                               addModification(s1, s2);
-                                                               addComparable(s1, s2);
+                                                               addModification(r1,s1,r2,s2);
+                                                               if (!s1.isAsserted(r1) && !s2.isAsserted(r2))
+                                                                       addComparable(s1, s2);
                                                        }
                                                } else {
                                                        if (!s1.getObject().equals(s1.getSubject()) && !s2.getObject().equals(s2.getSubject()))
                                                                compareProps(s1.getObject(), s2.getObject());
                                                }
                                        } else {
-                                               addModification(s1, s2);
-                                               addComparable(s1, s2);
+                                               addModification(r1,s1,r2,s2);
+                                               if (!s1.isAsserted(r1) && !s2.isAsserted(r2))
+                                                       addComparable(s1, s2);
                                        }
                                        i1++;
                                        i2++;