X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.update%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fupdate%2Fmodel%2FPropertyChange.java;fp=org.simantics.interop.update%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fupdate%2Fmodel%2FPropertyChange.java;h=9867a396601c5557f1f1ee9c363bf98f18983eb3;hb=b0205b09bbd81755eb69452eae0142d5a93f95a4;hp=0000000000000000000000000000000000000000;hpb=6fd88055dcf1a4982cc607222e77907a786173a8;p=simantics%2Finterop.git diff --git a/org.simantics.interop.update/src/org/simantics/interop/update/model/PropertyChange.java b/org.simantics.interop.update/src/org/simantics/interop/update/model/PropertyChange.java new file mode 100644 index 0000000..9867a39 --- /dev/null +++ b/org.simantics.interop.update/src/org/simantics/interop/update/model/PropertyChange.java @@ -0,0 +1,91 @@ +package org.simantics.interop.update.model; + +import org.simantics.db.Resource; +import org.simantics.db.Statement; +import org.simantics.db.WriteGraph; +import org.simantics.db.exception.DatabaseException; +import org.simantics.interop.test.GraphChanges; +import org.simantics.utils.datastructures.Pair; + +public class PropertyChange { + protected GraphChanges changes; + protected Pair pair; + protected boolean applied = false; + protected boolean selected = false; + + + public PropertyChange(GraphChanges changes, Statement first, Statement second) { + this.pair = new Pair(first, second); + this.changes = changes; + } + + public PropertyChange(GraphChanges changes, Pair change) { + this.pair = change; + this.changes = changes; + } + + public Statement getFirst() { + return pair.first; + } + + public Statement getSecond() { + return pair.second; + } + + public GraphChanges getChanges() { + return changes; + } + + @Override + public int hashCode() { + return pair.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + if (obj.getClass() != this.getClass()) + return false; + PropertyChange c = (PropertyChange)obj; + return pair.equals(c.pair); + } + + public void apply(WriteGraph graph) throws DatabaseException { + if (applied) + return; + if (pair.second == null) { + graph.deny(pair.first); + return; + } + Resource s = changes.getComparable().getLeft(pair.second.getSubject()); + //Resource s = pair.first.getSubject(); + Resource pred = pair.second.getPredicate(); + if (graph.hasValue(pair.second.getObject())) { + Object value = graph.getValue(pair.second.getObject()); + graph.claimLiteral(s, pred, value); + } else { + graph.deny(s,pred); + } + applied = true; + + } + + public boolean select(boolean select) { + if (applied) + return false; + this.selected = select; + return true; + } + + + public boolean selected() { + return selected; + } + + public boolean applied() { + return applied; + } + + +}