X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Fbinding%2Fimpl%2FIntArrayBinding.java;h=c6ee534f37a76bc4b990c79f53945eec3f28f92e;hb=refs%2Fchanges%2F15%2F3015%2F1;hp=6ba82f10df877b991d7fde6c0ab401b86b95df79;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/IntArrayBinding.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/IntArrayBinding.java index 6ba82f10d..c6ee534f3 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/IntArrayBinding.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/IntArrayBinding.java @@ -1,44 +1,44 @@ -/******************************************************************************* - * Copyright (c) 2010 Association for Decentralized Information Management in - * Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ +/******************************************************************************* + * Copyright (c) 2010 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ package org.simantics.databoard.binding.impl; -import java.lang.reflect.Array; -import java.util.IdentityHashMap; -import java.util.Iterator; -import java.util.Set; - -import org.simantics.databoard.binding.ArrayBinding; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.binding.IntegerBinding; -import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.binding.error.UnsupportedOperationException; -import org.simantics.databoard.type.ArrayType; -import org.simantics.databoard.type.IntegerType; -import org.simantics.databoard.type.NumberType; -import org.simantics.databoard.util.IdentityPair; +import java.lang.reflect.Array; +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.Set; + +import org.simantics.databoard.binding.ArrayBinding; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.IntegerBinding; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.binding.error.UnsupportedOperationException; +import org.simantics.databoard.type.ArrayType; +import org.simantics.databoard.type.IntegerType; +import org.simantics.databoard.type.NumberType; +import org.simantics.databoard.util.IdentityPair; /** * Binds Integer[] Type to int[] Class. */ public final class IntArrayBinding extends ArrayBinding { - public static IntArrayBinding createFrom(ArrayType type) { - return new IntArrayBinding(type, new IntegerBindingDefault((IntegerType) type.componentType)); - } - - public IntArrayBinding(ArrayType type, Binding componentBinding) { - super(type, componentBinding); - } - + public static IntArrayBinding createFrom(ArrayType type) { + return new IntArrayBinding(type, new IntegerBindingDefault((IntegerType) type.componentType)); + } + + public IntArrayBinding(ArrayType type, Binding componentBinding) { + super(type, componentBinding); + } + @Override public Object create() { return new int[0]; @@ -68,54 +68,54 @@ public final class IntArrayBinding extends ArrayBinding { */ public Object create(int[] array) { return array; - } - - @Override - public Object createDefault() - throws BindingException - { - NumberType nt = (NumberType) type().componentType; - if (nt.getRange() == null) { - return new int[ type().minLength() ]; - } - return super.createDefault(); - } + } + + @Override + public Object createDefault() + throws BindingException + { + NumberType nt = (NumberType) type().componentType; + if (nt.getRange() == null) { + return new int[ type().minLength() ]; + } + return super.createDefault(); + } + + + @Override + public void readFrom(Binding srcBinding, Object src, Object dst) + throws BindingException { + // Src Binding + ArrayBinding sb = (ArrayBinding) srcBinding; + // Src Component Binding + IntegerBinding scb = (IntegerBinding) sb.getComponentBinding(); + + int[] d = (int[]) dst; + if (d.length != sb.size(src)) throw new BindingException("int[] is length immutable"); + + for (int i=0; i