X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.databoard%2Fsrc%2Forg%2Fsimantics%2Fdataboard%2Fbinding%2Futil%2FRandomValue.java;h=9fde678737b400c613330407838d42709e0bc166;hb=refs%2Fchanges%2F38%2F238%2F2;hp=09363921ba21529b249cd52567d824150f9852d0;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/util/RandomValue.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/util/RandomValue.java index 09363921b..9fde67873 100644 --- a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/util/RandomValue.java +++ b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/util/RandomValue.java @@ -1,63 +1,63 @@ -/******************************************************************************* - * 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.util; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Random; -import java.util.WeakHashMap; - -import org.simantics.databoard.Bindings; -import org.simantics.databoard.Datatypes; -import org.simantics.databoard.adapter.AdaptException; -import org.simantics.databoard.binding.ArrayBinding; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.binding.Binding.Visitor; -import org.simantics.databoard.binding.BooleanBinding; -import org.simantics.databoard.binding.ByteBinding; -import org.simantics.databoard.binding.DoubleBinding; -import org.simantics.databoard.binding.FloatBinding; -import org.simantics.databoard.binding.IntegerBinding; -import org.simantics.databoard.binding.LongBinding; -import org.simantics.databoard.binding.MapBinding; -import org.simantics.databoard.binding.OptionalBinding; -import org.simantics.databoard.binding.RecordBinding; -import org.simantics.databoard.binding.StringBinding; -import org.simantics.databoard.binding.UnionBinding; -import org.simantics.databoard.binding.VariantBinding; -import org.simantics.databoard.binding.error.BindingConstructionException; -import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.binding.error.RuntimeBindingConstructionException; -import org.simantics.databoard.binding.error.RuntimeBindingException; -import org.simantics.databoard.binding.factory.BindingScheme; -import org.simantics.databoard.binding.factory.MutableBindingFactory; -import org.simantics.databoard.type.ArrayType; -import org.simantics.databoard.type.BooleanType; -import org.simantics.databoard.type.ByteType; -import org.simantics.databoard.type.Component; -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 org.simantics.databoard.type.VariantType; -import org.simantics.databoard.util.Limit; -import org.simantics.databoard.util.Range; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Random; +import java.util.WeakHashMap; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.Datatypes; +import org.simantics.databoard.adapter.AdaptException; +import org.simantics.databoard.binding.ArrayBinding; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.binding.Binding.Visitor; +import org.simantics.databoard.binding.BooleanBinding; +import org.simantics.databoard.binding.ByteBinding; +import org.simantics.databoard.binding.DoubleBinding; +import org.simantics.databoard.binding.FloatBinding; +import org.simantics.databoard.binding.IntegerBinding; +import org.simantics.databoard.binding.LongBinding; +import org.simantics.databoard.binding.MapBinding; +import org.simantics.databoard.binding.OptionalBinding; +import org.simantics.databoard.binding.RecordBinding; +import org.simantics.databoard.binding.StringBinding; +import org.simantics.databoard.binding.UnionBinding; +import org.simantics.databoard.binding.VariantBinding; +import org.simantics.databoard.binding.error.BindingConstructionException; +import org.simantics.databoard.binding.error.BindingException; +import org.simantics.databoard.binding.error.RuntimeBindingConstructionException; +import org.simantics.databoard.binding.error.RuntimeBindingException; +import org.simantics.databoard.binding.factory.BindingScheme; +import org.simantics.databoard.binding.factory.MutableBindingFactory; +import org.simantics.databoard.type.ArrayType; +import org.simantics.databoard.type.BooleanType; +import org.simantics.databoard.type.ByteType; +import org.simantics.databoard.type.Component; +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 org.simantics.databoard.type.VariantType; +import org.simantics.databoard.util.Limit; +import org.simantics.databoard.util.Range; /** * Visitor that creates a instance with random value. @@ -86,8 +86,8 @@ public class RandomValue implements Visitor { public Random random; /** Map of default values already created. Used to link back to recursive records */ - Map map = new WeakHashMap(1); - + Map map = new WeakHashMap(1); + BindingScheme scheme = new MutableBindingFactory( new HashMap() ); static String CHARS = "abcdefghijklmnopqrstuvwxyz ,.-'/-+ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!\"#�%&/()=\n\\\\r'"; @@ -285,33 +285,33 @@ public class RandomValue implements Visitor { @Override public Object visit(VariantBinding b) { - try { + try { Object result = pickCached() ? map.get(b) : null; if (result!=null) return result; int maxDepth = random.nextInt(3)+1; Datatype randomType = randomType(0, maxDepth); - Binding randomBinding; - randomBinding = scheme.getBinding( randomType ); + Binding randomBinding; + randomBinding = scheme.getBinding( randomType ); Object randomValue = randomBinding.accept(this); result = b.createUnchecked(randomBinding, randomValue); map.put(b, result); return result; - } catch (BindingConstructionException e) { - throw new RuntimeBindingConstructionException(e); - } + } catch (BindingConstructionException e) { + throw new RuntimeBindingConstructionException(e); + } + } + + boolean isKeyShortEnough(Binding binding, Object value) { + try { + String key; + key = (String) Bindings.adapt(value, binding, Bindings.STR_VARIANT); + return key.length()<=200; + } catch (AdaptException e) { + throw new RuntimeException(e); + } } - - boolean isKeyShortEnough(Binding binding, Object value) { - try { - String key; - key = (String) Bindings.adapt(value, binding, Bindings.STR_VARIANT); - return key.length()<=200; - } catch (AdaptException e) { - throw new RuntimeException(e); - } - } @Override public Object visit(MapBinding b) { @@ -324,19 +324,19 @@ public class RandomValue implements Visitor { Binding valueBinding = b.getValueBinding(); Object[] keys = new Object[c]; Object[] values = new Object[c]; - for (int i=0; i