]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateList.java
747cd78c7c2a5a4381677f288a4782cd789eac51
[simantics/interop.git] / org.simantics.interop.update / src / org / simantics / interop / update / model / UpdateList.java
1 package org.simantics.interop.update.model;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.HashSet;
6 import java.util.List;
7
8 import org.simantics.db.ReadGraph;
9 import org.simantics.db.Resource;
10 import org.simantics.db.Statement;
11 import org.simantics.db.exception.DatabaseException;
12 import org.simantics.utils.datastructures.Pair;
13
14 public class UpdateList {
15         private HashSet<Pair<Statement, Statement>> changes;
16         private HashSet<Pair<Statement, Statement>> selected;
17         
18         public UpdateList() {
19                 changes = new HashSet<>();
20                 selected = new HashSet<>();
21         }
22         
23         public UpdateList(Collection<Pair<Statement, Statement>> changes) {
24                 this.changes = new HashSet<>(changes);
25                 this.selected = new HashSet<>();
26         }
27         
28         public Collection<Pair<Statement, Statement>> getChanges() {
29                 return changes;
30         }
31         
32         public HashSet<Pair<Statement, Statement>> getSelected() {
33                 return selected;
34         }
35         
36         public void addChange(Pair<Statement, Statement> change) {
37                 changes.add(change);
38         }
39         
40         public void removeChange(Pair<Statement, Statement> change) {
41                 changes.remove(change);
42                 selected.remove(change);
43         }
44         
45         public void addSelected(Pair<Statement, Statement> change) {
46                 selected.add(change);
47         }
48         
49         public void removeSelected(Pair<Statement, Statement> change) {
50                 selected.remove(change);
51         }
52         
53         public boolean isSelected(Pair<Statement, Statement> change) {
54                 return selected.contains(change);
55         }
56         
57         public void clear() {
58                 changes.clear();
59                 selected.clear();
60         }
61         
62         public void clearSelected() {
63                 selected.clear();
64         }
65         
66         public Collection<Pair<Statement, Statement>> getChanges(ReadGraph g, Resource r) throws DatabaseException{
67                 List<Pair<Statement, Statement>> list = new ArrayList<>();
68                 for (Pair<Statement, Statement> pair : changes) {
69                         if (pair.first != null) {
70                                 if (pair.first.getSubject().equals(r)) {
71                                         list.add(pair);
72                                         continue;
73                                 }
74                                 if (pair.first.getObject().equals(r)) {
75                                         list.add(pair);
76                                         continue;
77                                 }
78                         }
79                         if (pair.second != null) {
80                                 if (pair.second.getSubject().equals(r)) {
81                                         list.add(pair);
82                                         continue;
83                                 }
84                                 if (pair.second.getObject().equals(r)) {
85                                         list.add(pair);
86                                         continue;
87                                 }
88                         }
89                 }
90                 return list;
91         }
92 }