]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateList.java
PropertyChange class (instead of Pair)
[simantics/interop.git] / org.simantics.interop.update / src / org / simantics / interop / update / model / UpdateList.java
index 747cd78c7c2a5a4381677f288a4782cd789eac51..6f66ba399326f0eb4ffa480d3b9d3874c54841f4 100644 (file)
@@ -9,79 +9,86 @@ import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.Statement;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.interop.test.GraphChanges;
 import org.simantics.utils.datastructures.Pair;
 
 public class UpdateList {
-       private HashSet<Pair<Statement, Statement>> changes;
-       private HashSet<Pair<Statement, Statement>> selected;
+       private HashSet<PropertyChange> changes;
        
        public UpdateList() {
                changes = new HashSet<>();
-               selected = new HashSet<>();
        }
        
-       public UpdateList(Collection<Pair<Statement, Statement>> changes) {
+       public UpdateList(Collection<PropertyChange> changes) {
                this.changes = new HashSet<>(changes);
-               this.selected = new HashSet<>();
        }
        
-       public Collection<Pair<Statement, Statement>> getChanges() {
-               return changes;
+       public UpdateList(GraphChanges graphChanges, Collection<Pair<Statement, Statement>> coll) {
+               this.changes = new HashSet<>();
+               for (Pair<Statement, Statement> p : coll) {
+                       changes.add(create(graphChanges, p));
+               }
        }
        
-       public HashSet<Pair<Statement, Statement>> getSelected() {
-               return selected;
+       protected PropertyChange create(GraphChanges changes, Pair<Statement, Statement> change) {
+               return new PropertyChange(changes, change);
        }
        
-       public void addChange(Pair<Statement, Statement> change) {
+       public Collection<PropertyChange> getChanges() {
+               return changes;
+       }
+
+       public void addChange(PropertyChange change) {
                changes.add(change);
        }
        
-       public void removeChange(Pair<Statement, Statement> change) {
+       public void removeChange(PropertyChange change) {
                changes.remove(change);
-               selected.remove(change);
-       }
-       
-       public void addSelected(Pair<Statement, Statement> change) {
-               selected.add(change);
        }
        
-       public void removeSelected(Pair<Statement, Statement> change) {
-               selected.remove(change);
-       }
-       
-       public boolean isSelected(Pair<Statement, Statement> change) {
-               return selected.contains(change);
+       public Collection<PropertyChange> getSelected() {
+               HashSet<PropertyChange> selected = new HashSet<>();
+               for (PropertyChange c : selected) {
+                       if (c.selected())
+                               selected.add(c);
+               }
+               return selected;
        }
        
-       public void clear() {
-               changes.clear();
-               selected.clear();
+       public void clearSelected() {
+               for (PropertyChange c : changes)
+                       c.select(false);
        }
        
-       public void clearSelected() {
-               selected.clear();
+       public PropertyChange getChange(ReadGraph g, Statement s) throws DatabaseException {
+               for (PropertyChange c : changes) {
+                       if (s.equals(c.pair.first))
+                               return c;
+                       if (s.equals(c.pair.second))
+                               return c;
+               }
+               return null;
        }
        
-       public Collection<Pair<Statement, Statement>> getChanges(ReadGraph g, Resource r) throws DatabaseException{
-               List<Pair<Statement, Statement>> list = new ArrayList<>();
-               for (Pair<Statement, Statement> pair : changes) {
-                       if (pair.first != null) {
-                               if (pair.first.getSubject().equals(r)) {
+       public Collection<PropertyChange> getChanges(ReadGraph g, Resource r) throws DatabaseException{
+               List<PropertyChange> list = new ArrayList<>();
+               for (PropertyChange pair : changes) {
+                       if (pair.getFirst() != null) {
+                               if (pair.getFirst().getSubject().equals(r)) {
                                        list.add(pair);
                                        continue;
                                }
-                               if (pair.first.getObject().equals(r)) {
+                               if (pair.getFirst().getObject().equals(r)) {
                                        list.add(pair);
                                        continue;
                                }
                        }
-                       if (pair.second != null) {
-                               if (pair.second.getSubject().equals(r)) {
+                       if (pair.getSecond() != null) {
+                               if (pair.getSecond().getSubject().equals(r)) {
                                        list.add(pair);
                                        continue;
                                }
-                               if (pair.second.getObject().equals(r)) {
+                               if (pair.getSecond().getObject().equals(r)) {
                                        list.add(pair);
                                        continue;
                                }