-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.modeling.ui.property;\r
-\r
-import java.lang.reflect.Array;\r
-import java.util.Arrays;\r
-\r
-import org.simantics.db.layer0.util.PrimitiveValueParser;\r
-import org.simantics.utils.datastructures.slice.ValueRange;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- */\r
-public class ValueUtil {\r
-\r
- /**\r
- * @param object\r
- * @param range\r
- * @return\r
- * @throws ArrayIndexOutOfBoundsException if the specified index range is\r
- * out of bounds for the specified object if it is an array.\r
- * @throws IllegalArgumentException if the specified value is not an array\r
- */\r
- public static String arrayValueToString(Object object, ValueRange range) {\r
- if (object == null)\r
- return "";\r
-\r
- Class<?> clazz = object.getClass();\r
- if (!clazz.isArray())\r
- throw new IllegalArgumentException("object is not an array: " + clazz.getCanonicalName());\r
-\r
- int length = Array.getLength(object);\r
- assert range != null;\r
- if (range.start() >= length || range.end() > length)\r
- throw new ArrayIndexOutOfBoundsException(range + " out of array bounds [0," + length + "]");\r
-\r
- StringBuilder b = new StringBuilder();\r
-\r
- boolean first = true;\r
- for (int i = range.start(); i < range.end(); ++i) {\r
- if (!first) {\r
- b.append(",");\r
- }\r
- first = false;\r
- b.append(Array.get(object, i));\r
- }\r
- return b.toString();\r
- }\r
-\r
- public static String valueToString(Object object) {\r
- if (object == null)\r
- return "";\r
-\r
- if (object instanceof String[]) {\r
- String[] value = (String[]) object;\r
- if (value.length == 1)\r
- return value[0];\r
- else\r
- return Arrays.toString(value);\r
- } else if (object instanceof int[]) {\r
- int[] value = (int[]) object;\r
- if (value.length == 1)\r
- return String.valueOf(value[0]);\r
- else {\r
- StringBuffer buffer = new StringBuffer();\r
- if (value.length > 0) {\r
- buffer.append(value[0]);\r
- for (int i = 1; i < value.length; ++i) {\r
- buffer.append(", ");\r
- buffer.append(value[i]);\r
- }\r
- }\r
- return buffer.toString();\r
- }\r
- } else if (object instanceof boolean[]) {\r
- boolean[] value = (boolean[]) object;\r
- if (value.length == 1)\r
- return String.valueOf(value[0]);\r
- else\r
- return Arrays.toString(value);\r
- } else if (object instanceof double[]) {\r
- double[] value = (double[]) object;\r
- if (value.length == 1)\r
- return String.valueOf(value[0]);\r
- else {\r
- StringBuffer buffer = new StringBuffer();\r
- if(value.length > 0) {\r
- buffer.append(value[0]);\r
- for(int i=1;i<value.length;++i) {\r
- buffer.append(", ");\r
- buffer.append(value[i]);\r
- }\r
- }\r
- return buffer.toString();\r
- }\r
- } else if (object instanceof float[]) {\r
- float[] value = (float[]) object;\r
- if (value.length == 1)\r
- return String.valueOf(value[0]);\r
- else {\r
- StringBuffer buffer = new StringBuffer();\r
- if(value.length > 0) {\r
- buffer.append(value[0]);\r
- for(int i=1;i<value.length;++i) {\r
- buffer.append(", ");\r
- buffer.append(value[i]);\r
- }\r
- }\r
- return buffer.toString();\r
- }\r
- } else if (object instanceof long[]) {\r
- long[] value = (long[]) object;\r
- if (value.length == 1)\r
- return String.valueOf(value[0]);\r
- else\r
- return Arrays.toString(value);\r
- } else if (object instanceof byte[]) {\r
- byte[] value = (byte[]) object;\r
- if (value.length == 1)\r
- return String.valueOf(value[0]);\r
- else\r
- return Arrays.toString(value);\r
- }\r
- return object.toString();\r
- }\r
-\r
- /**\r
- * @param valueClass\r
- * @param label\r
- * @return\r
- * @throws IllegalArgumentException if parsing of the specified label into\r
- * the specified Class fails\r
- */\r
- public static Object parseLabelToObject(Class<?> valueClass, String label) {\r
- if (valueClass == boolean[].class) {\r
- return PrimitiveValueParser.parseBooleanArray(label);\r
- } else if (valueClass == int[].class) {\r
- return PrimitiveValueParser.parseIntArray(label);\r
- } else if (valueClass == long[].class) {\r
- return PrimitiveValueParser.parseLongArray(label);\r
- } else if (valueClass == float[].class) {\r
- return PrimitiveValueParser.parseFloatArray(label);\r
- } else if (valueClass == double[].class) {\r
- return PrimitiveValueParser.parseDoubleArray(label);\r
- } else if (valueClass == String[].class) {\r
- return new String[] { label };\r
- } else if (valueClass == boolean.class || valueClass == Boolean.class) {\r
- return PrimitiveValueParser.parseBoolean(label);\r
- } else if (valueClass == int.class || valueClass == Integer.class) {\r
- return PrimitiveValueParser.parseInt(label);\r
- } else if (valueClass == long.class || valueClass == Long.class) {\r
- return PrimitiveValueParser.parseLong(label);\r
- } else if (valueClass == float.class || valueClass == Float.class) {\r
- return PrimitiveValueParser.parseFloat(label);\r
- } else if (valueClass == double.class || valueClass == Double.class) {\r
- return PrimitiveValueParser.parseDouble(label);\r
- } else if (valueClass == Byte.class || valueClass == Byte.class) {\r
- return PrimitiveValueParser.parseByte(label);\r
- } else if (valueClass == String.class) {\r
- return label;\r
- }\r
- return null;\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * 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<value.length;++i) {
+ buffer.append(", ");
+ buffer.append(value[i]);
+ }
+ }
+ return buffer.toString();
+ }
+ } else if (object instanceof float[]) {
+ float[] value = (float[]) 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 long[]) {
+ long[] value = (long[]) object;
+ if (value.length == 1)
+ return String.valueOf(value[0]);
+ else
+ return Arrays.toString(value);
+ } else if (object instanceof byte[]) {
+ byte[] value = (byte[]) object;
+ if (value.length == 1)
+ return String.valueOf(value[0]);
+ else
+ return Arrays.toString(value);
+ }
+ return object.toString();
+ }
+
+ /**
+ * @param valueClass
+ * @param label
+ * @return
+ * @throws IllegalArgumentException if parsing of the specified label into
+ * the specified Class fails
+ */
+ public static Object parseLabelToObject(Class<?> 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;
+ }
+
+}