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;
}
}