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> changes; private HashSet> selected; public UpdateList() { changes = new HashSet<>(); selected = new HashSet<>(); } public UpdateList(Collection> changes) { this.changes = new HashSet<>(changes); this.selected = new HashSet<>(); } public Collection> getChanges() { return changes; } public HashSet> getSelected() { return selected; } public void addChange(Pair change) { changes.add(change); } public void removeChange(Pair change) { changes.remove(change); selected.remove(change); } public void addSelected(Pair change) { selected.add(change); } public void removeSelected(Pair change) { selected.remove(change); } public boolean isSelected(Pair change) { return selected.contains(change); } public void clear() { changes.clear(); selected.clear(); } public void clearSelected() { selected.clear(); } public Collection> getChanges(ReadGraph g, Resource r) throws DatabaseException{ List> list = new ArrayList<>(); for (Pair 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; } }