X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fadapter%2Fimpl%2FStringIndexModifierImpl.java;h=452e5e8f265b54de4100aaedeaa0621e7fa2cb93;hp=33fed9cc172a1386d3248b8748b2c5e4f680023a;hb=a571699746e406c8fd0f69eaf20a0b005e68c592;hpb=3363d703decd994069d66740681a72c03ce6acf4 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/StringIndexModifierImpl.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/StringIndexModifierImpl.java index 33fed9cc1..452e5e8f2 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/StringIndexModifierImpl.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/impl/StringIndexModifierImpl.java @@ -16,11 +16,13 @@ import java.util.List; import org.simantics.databoard.Bindings; import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.RecordBinding; import org.simantics.databoard.binding.error.BindingException; import org.simantics.databoard.parser.repository.DataTypeSyntaxError; import org.simantics.databoard.parser.repository.DataValueRepository; import org.simantics.databoard.type.ArrayType; import org.simantics.databoard.type.Datatype; +import org.simantics.databoard.type.RecordType; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.VirtualGraph; @@ -142,7 +144,15 @@ public final class StringIndexModifierImpl implements StringIndexModifier { OrderedSetUtils.replace(graph, resource, list.get(index), el); } else { Datatype dt = graph.getPossibleRelatedValue(resource, l0.HasDataType, Bindings.getBindingUnchecked(Datatype.class)); - if (dt instanceof ArrayType) { + if (dt instanceof RecordType) { + RecordType rt = (RecordType) dt; + RecordBinding rb = Bindings.getBinding(rt); + Binding indexBinding = rb.getComponentBinding(index); + Object parsedValue = indexBinding.parseValue(value, new DataValueRepository()); + Object v = graph.getValue(resource, rb); + rb.setComponent(v, index, parsedValue); + graph.claimValue(resource, v, rb); + } else if (dt instanceof ArrayType) { ArrayType at = (ArrayType) dt; Binding binding = Bindings.getBinding(at); Binding indexBinding = Bindings.getBinding(at.componentType());