X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2Fproperty%2FValueUtil.java;fp=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2Fproperty%2FValueUtil.java;h=c22538034ac992c759c2923f7cb15ad2a398e5e6;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=48770b891dc936e83ada8c85aa19b1e75cedc217;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/property/ValueUtil.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/property/ValueUtil.java index 48770b891..c22538034 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/property/ValueUtil.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/property/ValueUtil.java @@ -1,174 +1,174 @@ -/******************************************************************************* - * Copyright (c) 2007, 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.modeling.ui.property; - -import java.lang.reflect.Array; -import java.util.Arrays; - -import org.simantics.db.layer0.util.PrimitiveValueParser; -import org.simantics.utils.datastructures.slice.ValueRange; - -/** - * @author Tuukka Lehtonen - */ -public class ValueUtil { - - /** - * @param object - * @param range - * @return - * @throws ArrayIndexOutOfBoundsException if the specified index range is - * out of bounds for the specified object if it is an array. - * @throws IllegalArgumentException if the specified value is not an array - */ - public static String arrayValueToString(Object object, ValueRange range) { - if (object == null) - return ""; - - Class clazz = object.getClass(); - if (!clazz.isArray()) - throw new IllegalArgumentException("object is not an array: " + clazz.getCanonicalName()); - - int length = Array.getLength(object); - assert range != null; - if (range.start() >= length || range.end() > length) - throw new ArrayIndexOutOfBoundsException(range + " out of array bounds [0," + length + "]"); - - StringBuilder b = new StringBuilder(); - - boolean first = true; - for (int i = range.start(); i < range.end(); ++i) { - if (!first) { - b.append(","); - } - first = false; - b.append(Array.get(object, i)); - } - return b.toString(); - } - - public static String valueToString(Object object) { - if (object == null) - return ""; - - if (object instanceof String[]) { - String[] value = (String[]) object; - if (value.length == 1) - return value[0]; - else - return Arrays.toString(value); - } else if (object instanceof int[]) { - int[] value = (int[]) object; - if (value.length == 1) - return String.valueOf(value[0]); - else { - StringBuffer buffer = new StringBuffer(); - if (value.length > 0) { - buffer.append(value[0]); - for (int i = 1; i < value.length; ++i) { - buffer.append(", "); - buffer.append(value[i]); - } - } - return buffer.toString(); - } - } else if (object instanceof boolean[]) { - boolean[] value = (boolean[]) object; - if (value.length == 1) - return String.valueOf(value[0]); - else - return Arrays.toString(value); - } else if (object instanceof double[]) { - double[] value = (double[]) object; - if (value.length == 1) - return String.valueOf(value[0]); - else { - StringBuffer buffer = new StringBuffer(); - if(value.length > 0) { - buffer.append(value[0]); - for(int i=1;i 0) { - buffer.append(value[0]); - for(int i=1;i valueClass, String label) { - if (valueClass == boolean[].class) { - return PrimitiveValueParser.parseBooleanArray(label); - } else if (valueClass == int[].class) { - return PrimitiveValueParser.parseIntArray(label); - } else if (valueClass == long[].class) { - return PrimitiveValueParser.parseLongArray(label); - } else if (valueClass == float[].class) { - return PrimitiveValueParser.parseFloatArray(label); - } else if (valueClass == double[].class) { - return PrimitiveValueParser.parseDoubleArray(label); - } else if (valueClass == String[].class) { - return new String[] { label }; - } else if (valueClass == boolean.class || valueClass == Boolean.class) { - return PrimitiveValueParser.parseBoolean(label); - } else if (valueClass == int.class || valueClass == Integer.class) { - return PrimitiveValueParser.parseInt(label); - } else if (valueClass == long.class || valueClass == Long.class) { - return PrimitiveValueParser.parseLong(label); - } else if (valueClass == float.class || valueClass == Float.class) { - return PrimitiveValueParser.parseFloat(label); - } else if (valueClass == double.class || valueClass == Double.class) { - return PrimitiveValueParser.parseDouble(label); - } else if (valueClass == Byte.class || valueClass == Byte.class) { - return PrimitiveValueParser.parseByte(label); - } else if (valueClass == String.class) { - return label; - } - return null; - } - -} +/******************************************************************************* + * Copyright (c) 2007, 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.modeling.ui.property; + +import java.lang.reflect.Array; +import java.util.Arrays; + +import org.simantics.db.layer0.util.PrimitiveValueParser; +import org.simantics.utils.datastructures.slice.ValueRange; + +/** + * @author Tuukka Lehtonen + */ +public class ValueUtil { + + /** + * @param object + * @param range + * @return + * @throws ArrayIndexOutOfBoundsException if the specified index range is + * out of bounds for the specified object if it is an array. + * @throws IllegalArgumentException if the specified value is not an array + */ + public static String arrayValueToString(Object object, ValueRange range) { + if (object == null) + return ""; + + Class clazz = object.getClass(); + if (!clazz.isArray()) + throw new IllegalArgumentException("object is not an array: " + clazz.getCanonicalName()); + + int length = Array.getLength(object); + assert range != null; + if (range.start() >= length || range.end() > length) + throw new ArrayIndexOutOfBoundsException(range + " out of array bounds [0," + length + "]"); + + StringBuilder b = new StringBuilder(); + + boolean first = true; + for (int i = range.start(); i < range.end(); ++i) { + if (!first) { + b.append(","); + } + first = false; + b.append(Array.get(object, i)); + } + return b.toString(); + } + + public static String valueToString(Object object) { + if (object == null) + return ""; + + if (object instanceof String[]) { + String[] value = (String[]) object; + if (value.length == 1) + return value[0]; + else + return Arrays.toString(value); + } else if (object instanceof int[]) { + int[] value = (int[]) object; + if (value.length == 1) + return String.valueOf(value[0]); + else { + StringBuffer buffer = new StringBuffer(); + if (value.length > 0) { + buffer.append(value[0]); + for (int i = 1; i < value.length; ++i) { + buffer.append(", "); + buffer.append(value[i]); + } + } + return buffer.toString(); + } + } else if (object instanceof boolean[]) { + boolean[] value = (boolean[]) object; + if (value.length == 1) + return String.valueOf(value[0]); + else + return Arrays.toString(value); + } else if (object instanceof double[]) { + double[] value = (double[]) object; + if (value.length == 1) + return String.valueOf(value[0]); + else { + StringBuffer buffer = new StringBuffer(); + if(value.length > 0) { + buffer.append(value[0]); + for(int i=1;i 0) { + buffer.append(value[0]); + for(int i=1;i valueClass, String label) { + if (valueClass == boolean[].class) { + return PrimitiveValueParser.parseBooleanArray(label); + } else if (valueClass == int[].class) { + return PrimitiveValueParser.parseIntArray(label); + } else if (valueClass == long[].class) { + return PrimitiveValueParser.parseLongArray(label); + } else if (valueClass == float[].class) { + return PrimitiveValueParser.parseFloatArray(label); + } else if (valueClass == double[].class) { + return PrimitiveValueParser.parseDoubleArray(label); + } else if (valueClass == String[].class) { + return new String[] { label }; + } else if (valueClass == boolean.class || valueClass == Boolean.class) { + return PrimitiveValueParser.parseBoolean(label); + } else if (valueClass == int.class || valueClass == Integer.class) { + return PrimitiveValueParser.parseInt(label); + } else if (valueClass == long.class || valueClass == Long.class) { + return PrimitiveValueParser.parseLong(label); + } else if (valueClass == float.class || valueClass == Float.class) { + return PrimitiveValueParser.parseFloat(label); + } else if (valueClass == double.class || valueClass == Double.class) { + return PrimitiveValueParser.parseDouble(label); + } else if (valueClass == Byte.class || valueClass == Byte.class) { + return PrimitiveValueParser.parseByte(label); + } else if (valueClass == String.class) { + return label; + } + return null; + } + +}