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.interop.test.GraphChanges.Modification;
import org.simantics.utils.datastructures.Pair;
public class UpdateList {
- private HashSet<Pair<Statement, Statement>> changes;
- private HashSet<Pair<Statement, Statement>> selected;
+ private List<PropertyChange> changes;
public UpdateList() {
- changes = new HashSet<>();
- selected = new HashSet<>();
+ changes = new ArrayList<>();
}
- public UpdateList(Collection<Pair<Statement, Statement>> changes) {
- this.changes = new HashSet<>(changes);
- this.selected = new HashSet<>();
+ public UpdateList(Collection<PropertyChange> changes) {
+ this.changes = new ArrayList<>(changes);
}
- public Collection<Pair<Statement, Statement>> getChanges() {
- return changes;
+ public UpdateList(GraphChanges graphChanges, Collection<Modification> coll) {
+ this.changes = new ArrayList<>();
+ for (Modification p : coll) {
+ addChange(create(graphChanges, p.getLeftSub(),p.getRightSub(),new Pair<Statement, Statement>(p.getLeftStm(), p.getRightStm())));
+ }
}
- public HashSet<Pair<Statement, Statement>> getSelected() {
- return selected;
+ protected PropertyChange create(GraphChanges changes, Resource left, Resource right, Pair<Statement, Statement> change) {
+ return new PropertyChange(changes, left,right, change);
}
- public void addChange(Pair<Statement, Statement> change) {
- changes.add(change);
+ public List<PropertyChange> getChanges() {
+ return changes;
}
-
- public void removeChange(Pair<Statement, Statement> change) {
- changes.remove(change);
- selected.remove(change);
+
+ public void addChange(PropertyChange change) {
+ if (!changes.contains(change))
+ changes.add(change);
}
- public void addSelected(Pair<Statement, Statement> change) {
- selected.add(change);
+ public void removeChange(PropertyChange change) {
+ changes.remove(change);
}
- public void removeSelected(Pair<Statement, Statement> change) {
- selected.remove(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;
}