X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Fbinding%2Ffactory%2FDefaultBindingFactory.java;h=8b5663597d28ebc0208d3f8fecccbeaa08bb9bc7;hb=refs%2Fchanges%2F38%2F238%2F2;hp=73f2d2f16d167d34de11a541e097cadf78890378;hpb=1956b6ed85e1df65c4df58e6cb0ac6aa296e6939;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/factory/DefaultBindingFactory.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/factory/DefaultBindingFactory.java index 73f2d2f16..8b5663597 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/factory/DefaultBindingFactory.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/factory/DefaultBindingFactory.java @@ -1,54 +1,54 @@ -/******************************************************************************* - * 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.factory; -import java.util.Map; - -import org.simantics.databoard.Bindings; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.binding.error.BindingConstructionException; -import org.simantics.databoard.binding.impl.BooleanArrayBinding; -import org.simantics.databoard.binding.impl.BooleanBindingDefault; -import org.simantics.databoard.binding.impl.ByteArrayBinding; -import org.simantics.databoard.binding.impl.ByteBindingDefault; -import org.simantics.databoard.binding.impl.DefaultMapBinding; -import org.simantics.databoard.binding.impl.DoubleArrayBinding; -import org.simantics.databoard.binding.impl.DoubleBindingDefault; -import org.simantics.databoard.binding.impl.FloatArrayBinding; -import org.simantics.databoard.binding.impl.FloatBindingDefault; -import org.simantics.databoard.binding.impl.IntArrayBinding; -import org.simantics.databoard.binding.impl.IntegerBindingDefault; -import org.simantics.databoard.binding.impl.LongArrayBinding; -import org.simantics.databoard.binding.impl.LongBindingDefault; -import org.simantics.databoard.binding.impl.ObjectArrayBinding; -import org.simantics.databoard.binding.impl.StringBindingDefault; -import org.simantics.databoard.binding.mutable.ContainerOptionalBinding; -import org.simantics.databoard.binding.mutable.UnionTaggedObjectBinding; -import org.simantics.databoard.type.ArrayType; -import org.simantics.databoard.type.BooleanType; -import org.simantics.databoard.type.ByteType; -import org.simantics.databoard.type.Datatype; -import org.simantics.databoard.type.DoubleType; -import org.simantics.databoard.type.FloatType; -import org.simantics.databoard.type.IntegerType; -import org.simantics.databoard.type.LongType; -import org.simantics.databoard.type.MapType; -import org.simantics.databoard.type.OptionalType; -import org.simantics.databoard.type.RecordType; -import org.simantics.databoard.type.StringType; -import org.simantics.databoard.type.UnionType; +import java.util.Map; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.error.BindingConstructionException; +import org.simantics.databoard.binding.impl.BooleanArrayBinding; +import org.simantics.databoard.binding.impl.BooleanBindingDefault; +import org.simantics.databoard.binding.impl.ByteArrayBinding; +import org.simantics.databoard.binding.impl.ByteBindingDefault; +import org.simantics.databoard.binding.impl.DefaultMapBinding; +import org.simantics.databoard.binding.impl.DoubleArrayBinding; +import org.simantics.databoard.binding.impl.DoubleBindingDefault; +import org.simantics.databoard.binding.impl.FloatArrayBinding; +import org.simantics.databoard.binding.impl.FloatBindingDefault; +import org.simantics.databoard.binding.impl.IntArrayBinding; +import org.simantics.databoard.binding.impl.IntegerBindingDefault; +import org.simantics.databoard.binding.impl.LongArrayBinding; +import org.simantics.databoard.binding.impl.LongBindingDefault; +import org.simantics.databoard.binding.impl.ObjectArrayBinding; +import org.simantics.databoard.binding.impl.StringBindingDefault; +import org.simantics.databoard.binding.mutable.ContainerOptionalBinding; +import org.simantics.databoard.binding.mutable.UnionTaggedObjectBinding; +import org.simantics.databoard.type.ArrayType; +import org.simantics.databoard.type.BooleanType; +import org.simantics.databoard.type.ByteType; +import org.simantics.databoard.type.Datatype; +import org.simantics.databoard.type.DoubleType; +import org.simantics.databoard.type.FloatType; +import org.simantics.databoard.type.IntegerType; +import org.simantics.databoard.type.LongType; +import org.simantics.databoard.type.MapType; +import org.simantics.databoard.type.OptionalType; +import org.simantics.databoard.type.RecordType; +import org.simantics.databoard.type.StringType; +import org.simantics.databoard.type.UnionType; /** - * DefaultBindingScheme is a type to binding mapping that binds any DataType to an Object. + * DefaultBindingScheme is a type to binding mapping that binds any DataType to an Object. * All resulting bindings typicaly immutable java classes. * * DataType | Class of the bound instance @@ -64,95 +64,95 @@ import org.simantics.databoard.type.UnionType; * OptionType | ValueContainer.class * RecordType | Object[].class * MapType | TreeMap.class - * VariantType | Variant.class - * ArrayType(Boolean) | boolean[].class - * ArrayType(Byte) | byte[].class - * ArrayType(Integer) | int[].class - * ArrayType(Long) | long[].class - * ArrayType(Float) | float[].class - * ArrayType(Double) | double[].class - * ArrayType(Byte) | byte[].class - * ArrayType( T ) | Object[].class + * VariantType | Variant.class + * ArrayType(Boolean) | boolean[].class + * ArrayType(Byte) | byte[].class + * ArrayType(Integer) | int[].class + * ArrayType(Long) | long[].class + * ArrayType(Float) | float[].class + * ArrayType(Double) | double[].class + * ArrayType(Byte) | byte[].class + * ArrayType( T ) | Object[].class * * * @author Toni Kalajainen */ -public class DefaultBindingFactory extends TypeBindingFactory { - - /** - * Construct a binding factory. - */ - public DefaultBindingFactory() { - super(); - } - - /** - * Construct a scheme factory that appends constructed bindings to the user given - * repository - * - * @param repository repository where bindings are placed - */ - public DefaultBindingFactory(Map repository) { - super(repository); - } - - @Override - protected Binding doConstruct(Datatype type) - throws BindingConstructionException { - - // Exact, non-annotated types - if (type.equals( Bindings.BOOLEAN.type() )) return Bindings.BOOLEAN; - if (type.equals( Bindings.BYTE.type() )) return Bindings.BYTE; - if (type.equals( Bindings.INTEGER.type() )) return Bindings.INTEGER; - if (type.equals( Bindings.LONG.type() )) return Bindings.LONG; - if (type.equals( Bindings.FLOAT.type() )) return Bindings.FLOAT; - if (type.equals( Bindings.DOUBLE.type() )) return Bindings.DOUBLE; - if (type.equals( Bindings.STRING.type() )) return Bindings.STRING; - if (type.equals( Bindings.VARIANT.type() )) return Bindings.VARIANT; - if (type.equals( Bindings.BOOLEAN_ARRAY.type() )) return Bindings.BOOLEAN_ARRAY; - if (type.equals( Bindings.BYTE_ARRAY.type() )) return Bindings.BYTE_ARRAY; - if (type.equals( Bindings.INT_ARRAY.type() )) return Bindings.INT_ARRAY; - if (type.equals( Bindings.LONG_ARRAY.type() )) return Bindings.LONG_ARRAY; - if (type.equals( Bindings.FLOAT_ARRAY.type() )) return Bindings.FLOAT_ARRAY; - if (type.equals( Bindings.DOUBLE_ARRAY.type() )) return Bindings.DOUBLE_ARRAY; - if (type.equals( Bindings.BOOLEAN_ARRAY.type() )) return Bindings.BOOLEAN_ARRAY; - if (type.equals( Bindings.STRING_ARRAY.type() )) return Bindings.STRING_ARRAY; - - // Annotated types - if (type instanceof BooleanType) return new BooleanBindingDefault((BooleanType)type); - if (type instanceof DoubleType) return new DoubleBindingDefault((DoubleType)type); - if (type instanceof FloatType) return new FloatBindingDefault((FloatType)type); - if (type instanceof ByteType) return new ByteBindingDefault((ByteType)type); - if (type instanceof IntegerType) return new IntegerBindingDefault((IntegerType)type); - if (type instanceof LongType) return new LongBindingDefault((LongType)type); - if (type instanceof StringType) return new StringBindingDefault((StringType)type); - - // Constructed types +public class DefaultBindingFactory extends TypeBindingFactory { + + /** + * Construct a binding factory. + */ + public DefaultBindingFactory() { + super(); + } + + /** + * Construct a scheme factory that appends constructed bindings to the user given + * repository + * + * @param repository repository where bindings are placed + */ + public DefaultBindingFactory(Map repository) { + super(repository); + } + + @Override + protected Binding doConstruct(Datatype type) + throws BindingConstructionException { + + // Exact, non-annotated types + if (type.equals( Bindings.BOOLEAN.type() )) return Bindings.BOOLEAN; + if (type.equals( Bindings.BYTE.type() )) return Bindings.BYTE; + if (type.equals( Bindings.INTEGER.type() )) return Bindings.INTEGER; + if (type.equals( Bindings.LONG.type() )) return Bindings.LONG; + if (type.equals( Bindings.FLOAT.type() )) return Bindings.FLOAT; + if (type.equals( Bindings.DOUBLE.type() )) return Bindings.DOUBLE; + if (type.equals( Bindings.STRING.type() )) return Bindings.STRING; + if (type.equals( Bindings.VARIANT.type() )) return Bindings.VARIANT; + if (type.equals( Bindings.BOOLEAN_ARRAY.type() )) return Bindings.BOOLEAN_ARRAY; + if (type.equals( Bindings.BYTE_ARRAY.type() )) return Bindings.BYTE_ARRAY; + if (type.equals( Bindings.INT_ARRAY.type() )) return Bindings.INT_ARRAY; + if (type.equals( Bindings.LONG_ARRAY.type() )) return Bindings.LONG_ARRAY; + if (type.equals( Bindings.FLOAT_ARRAY.type() )) return Bindings.FLOAT_ARRAY; + if (type.equals( Bindings.DOUBLE_ARRAY.type() )) return Bindings.DOUBLE_ARRAY; + if (type.equals( Bindings.BOOLEAN_ARRAY.type() )) return Bindings.BOOLEAN_ARRAY; + if (type.equals( Bindings.STRING_ARRAY.type() )) return Bindings.STRING_ARRAY; + + // Annotated types + if (type instanceof BooleanType) return new BooleanBindingDefault((BooleanType)type); + if (type instanceof DoubleType) return new DoubleBindingDefault((DoubleType)type); + if (type instanceof FloatType) return new FloatBindingDefault((FloatType)type); + if (type instanceof ByteType) return new ByteBindingDefault((ByteType)type); + if (type instanceof IntegerType) return new IntegerBindingDefault((IntegerType)type); + if (type instanceof LongType) return new LongBindingDefault((LongType)type); + if (type instanceof StringType) return new StringBindingDefault((StringType)type); + + // Constructed types if (type instanceof ArrayType) { ArrayType arrayType = (ArrayType) type; - Datatype componentType = arrayType.componentType(); + Datatype componentType = arrayType.componentType(); - if (componentType instanceof BooleanType) return BooleanArrayBinding.createFrom(arrayType); - if (componentType instanceof ByteType) return ByteArrayBinding.createFrom(arrayType); - if (componentType instanceof IntegerType) return IntArrayBinding.createFrom(arrayType); - if (componentType instanceof LongType) return LongArrayBinding.createFrom(arrayType); - if (componentType instanceof FloatType) return FloatArrayBinding.createFrom(arrayType); - if (componentType instanceof DoubleType) return DoubleArrayBinding.createFrom(arrayType); - - ObjectArrayBinding binding = new ObjectArrayBinding(arrayType, null); - inprogress.put(type, binding); - binding.componentBinding = construct( componentType ); - inprogress.remove(type); - return binding; + if (componentType instanceof BooleanType) return BooleanArrayBinding.createFrom(arrayType); + if (componentType instanceof ByteType) return ByteArrayBinding.createFrom(arrayType); + if (componentType instanceof IntegerType) return IntArrayBinding.createFrom(arrayType); + if (componentType instanceof LongType) return LongArrayBinding.createFrom(arrayType); + if (componentType instanceof FloatType) return FloatArrayBinding.createFrom(arrayType); + if (componentType instanceof DoubleType) return DoubleArrayBinding.createFrom(arrayType); + + ObjectArrayBinding binding = new ObjectArrayBinding(arrayType, null); + inprogress.put(type, binding); + binding.componentBinding = construct( componentType ); + inprogress.remove(type); + return binding; } if (type instanceof OptionalType) { OptionalType optionalType = (OptionalType) type; Datatype componentType = optionalType.componentType; ContainerOptionalBinding binding = new ContainerOptionalBinding( optionalType, null ); - inprogress.put(type, binding); - binding.componentBinding = construct( componentType ); - inprogress.remove(type); + inprogress.put(type, binding); + binding.componentBinding = construct( componentType ); + inprogress.remove(type); return binding; } @@ -160,11 +160,11 @@ public class DefaultBindingFactory extends TypeBindingFactory { RecordType recordType = (RecordType) type; Binding componentBindings[] = new Binding[ recordType.getComponentCount() ]; RecordObjectArrayBinding binding = new RecordObjectArrayBinding(recordType, componentBindings); - inprogress.put(type, binding); - for (int i=0; i