]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateList.java
Store Property change selections to UpdateList
[simantics/interop.git] / org.simantics.interop.update / src / org / simantics / interop / update / model / UpdateList.java
index 255d9ea93491787a0be294e681476ed570eadac9..447ddff2579bf19421044cb82e0bb548c2bee842 100644 (file)
@@ -1,35 +1,88 @@
 package org.simantics.interop.update.model;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.List;
 
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
 import org.simantics.db.Statement;
+import org.simantics.db.exception.DatabaseException;
 import org.simantics.utils.datastructures.Pair;
 
 public class UpdateList {
        private HashSet<Pair<Statement, Statement>> changes;
+       private HashSet<Pair<Statement, Statement>> selected;
        
        public UpdateList() {
                changes = new HashSet<>();
+               selected = new HashSet<>();
        }
        
        public UpdateList(Collection<Pair<Statement, Statement>> changes) {
                this.changes = new HashSet<>(changes);
+               this.selected = new HashSet<>();
        }
        
        public Collection<Pair<Statement, Statement>> getChanges() {
                return changes;
        }
        
+       public HashSet<Pair<Statement, Statement>> getSelected() {
+               return selected;
+       }
+       
        public void addChange(Pair<Statement, Statement> change) {
                changes.add(change);
        }
        
        public void removeChange(Pair<Statement, Statement> 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 void clear() {
                changes.clear();
+               selected.clear();
+       }
+       
+       public void clearSelected() {
+               selected.clear();
+       }
+       
+       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)) {
+                                       list.add(pair);
+                                       continue;
+                               }
+                               if (pair.first.getObject().equals(r)) {
+                                       list.add(pair);
+                                       continue;
+                               }
+                       }
+                       if (pair.second != null) {
+                               if (pair.second.getSubject().equals(r)) {
+                                       list.add(pair);
+                                       continue;
+                               }
+                               if (pair.second.getObject().equals(r)) {
+                                       list.add(pair);
+                                       continue;
+                               }
+                       }
+               }
+               return list;
        }
 }