X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.update%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fupdate%2Fmodel%2FAddDeleteUpdateOp.java;h=0ddbcb76c1c36e46ad4b91883bda75b1cdcda9f6;hb=refs%2Fchanges%2F03%2F4903%2F1;hp=3bd21b05a92208620dfec0e2f7b27e5e24fdaccd;hpb=2c057c11921105f229a7e8214d09bcd82450ac26;p=simantics%2Finterop.git diff --git a/org.simantics.interop.update/src/org/simantics/interop/update/model/AddDeleteUpdateOp.java b/org.simantics.interop.update/src/org/simantics/interop/update/model/AddDeleteUpdateOp.java index 3bd21b0..0ddbcb7 100644 --- a/org.simantics.interop.update/src/org/simantics/interop/update/model/AddDeleteUpdateOp.java +++ b/org.simantics.interop.update/src/org/simantics/interop/update/model/AddDeleteUpdateOp.java @@ -42,10 +42,10 @@ public abstract class AddDeleteUpdateOp extends UpdateOp { @Override public boolean requiresOp(UpdateOp op) { if (add) { - if (getParentOps().contains(op)) + if (getParentOps().contains(op) && op.isAdd()) return true; } else { - if (getSubOps().contains(op)) + if (getSubOps().contains(op) && op.isDelete()) return true; } return false; @@ -67,7 +67,7 @@ public abstract class AddDeleteUpdateOp extends UpdateOp { continue; if (g.isInstanceOf(s.getObject(), l0.Literal)) { Object value = g.getPossibleValue(s.getObject()); - System.out.println(NameUtils.getSafeName(g, s.getSubject()) + " " + NameUtils.getSafeName(g, s.getPredicate()) + " " + NameUtils.getSafeName(g, s.getObject()) + " " + value); + //System.out.println(NameUtils.getSafeName(g, s.getSubject()) + " " + NameUtils.getSafeName(g, s.getPredicate()) + " " + NameUtils.getSafeName(g, s.getObject()) + " " + value); if (value != null) { Statement valueStm = g.getPossibleStatement(destination, s.getPredicate()); Resource valueResource = null; @@ -87,7 +87,13 @@ public abstract class AddDeleteUpdateOp extends UpdateOp { g.claim(destination, s.getPredicate(), valueResource); copyProperties(g, s.getObject(), valueResource); } else { - throw new DatabaseException("Expected to copy property resource " + s.getObject()); + Resource type = g.getPossibleType(s.getObject(), l0.Value); + if (type != null && g.hasStatement(type, l0.Enumeration, type)) { + g.deny(destination, s.getPredicate()); + g.claim(destination, s.getPredicate(), s.getObject()); + } else { + throw new DatabaseException("Expected to copy property resource " + s.getObject()); + } } } }