if (obj.getClass() != this.getClass())
return false;
PropertyChange c = (PropertyChange)obj;
- return pair.equals(c.pair);
+ if (!leftSubject.equals(c.leftSubject))
+ return false;
+ if (!rightSubject.equals(c.rightSubject))
+ return false;
+ if (pair.first != null && pair.first.equals(c.pair.first))
+ return true;
+ if (pair.second != null && pair.second.equals(c.pair.second))
+ return true;
+ return false;
}
public void apply(WriteGraph graph) throws DatabaseException {
} else {
graph.deny(s,pred);
}
+ applied = true;
} else if (graph.isInstanceOf(pair.second.getObject(), L0.SCLValue)) {
Resource pred = pair.second.getPredicate();
graph.deny(s, pred);
graph.claim(valueResource, L0.InstanceOf, graph.getSingleObject(pair.second.getObject(), L0.InstanceOf));
AddDeleteUpdateOp.copyProperties(graph, pair.second.getObject(), valueResource);
graph.claim(s, pred, valueResource);
+ applied = true;
+ } else {
+ Resource type = graph.getPossibleType(pair.second.getObject(), L0.Value);
+ if (type != null && graph.hasStatement(type, L0.Enumeration, type)) {
+ Resource pred = pair.second.getPredicate();
+ graph.deny(s, pred);
+ graph.claim(s, pred, pair.second.getObject());
+ applied = true;
+ }
+
}
- applied = true;
+
}
/**
}
public void setCustomValue(Object customValue) {
+ if (applied) {
+ throw new RuntimeException("Cannot change already applied value");
+ }
this.customValue = customValue;
}