]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.debug.browser/src/org/simantics/debug/browser/utils/Values.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.debug.browser / src / org / simantics / debug / browser / utils / Values.java
index 0038de53321e5a6cdbab551a8c0808d0448eb640..2a5381555428429a46e41b7ab33ba238045aaaca 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2016 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
- *     THTH ry - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.debug.browser.utils;\r
-\r
-import java.io.IOException;\r
-import java.lang.reflect.Array;\r
-import java.util.Arrays;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.Databoard;\r
-import org.simantics.databoard.binding.ArrayBinding;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.databoard.binding.error.BindingException;\r
-import org.simantics.databoard.serialization.Serializer;\r
-import org.simantics.databoard.type.ArrayType;\r
-import org.simantics.databoard.type.Datatype;\r
-import org.simantics.databoard.util.ObjectUtils;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.utils.CommonDBUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.variable.RVI;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.db.layer0.variable.Variables;\r
-import org.simantics.layer0.Layer0;\r
-\r
-public class Values {\r
-\r
-    private static int RESOURCE_NAME_MAX_LENGTH = 1000;\r
-    private static int RESOURCE_VALUE_MAX_SIZE = 16384;\r
-\r
-    public static ValueInfo getPossibleValueInfo(ReadGraph graph, Resource r) {\r
-        try {\r
-            if (!graph.hasValue(r))\r
-                return null;\r
-\r
-            String value = null;\r
-            String datatype = null;\r
-\r
-            Layer0 L0 = Layer0.getInstance(graph);\r
-            Datatype type = graph.getPossibleRelatedValue(r, L0.HasDataType, Bindings.getBindingUnchecked(Datatype.class));\r
-            if (type != null) {\r
-                if (graph.isInstanceOf(r, L0.RVI)) {\r
-                    try {\r
-                        RVI rvi = graph.getPossibleValue(r, graph.getService(Databoard.class).getBindingUnchecked(RVI.class));\r
-                        Resource owner = CommonDBUtils.getPossibleOwner(graph, r);\r
-                        if (owner != null) {\r
-                            Variable context  = Variables.getPossibleConfigurationContext(graph, owner);\r
-                            if (context != null)  \r
-                                value = rvi.asPossibleString(graph, context);\r
-                        }\r
-                        if (value == null)\r
-                            value = rvi.toString( graph );\r
-                        if (value != null)\r
-                            datatype = "Relative Variable Identifier (RVI)";\r
-                    } catch (DatabaseException e) {\r
-                        // Fall through to more generic mechanisms\r
-                    }\r
-                }\r
-\r
-                // Generic datatype-based fallback method\r
-                if (value == null) {\r
-                    Binding b = Bindings.getBinding(type);\r
-                    Object v = graph.getPossibleValue(r, b);\r
-                    Serializer s = Bindings.getSerializerUnchecked(b);\r
-                    int size = s.getSize(v);\r
-                    if (size > RESOURCE_VALUE_MAX_SIZE) {\r
-                        value = "Approx. " + size + " byte literal";\r
-                    } else {\r
-                        if (b instanceof ArrayBinding) {\r
-                            // Manipulate data type to contain actual array\r
-                            // length for printing purposes.\r
-                            int arraySize = ((ArrayBinding) b).size(v);\r
-                            ArrayType atype = (ArrayType) type;\r
-                            atype.setLength(Integer.toString(arraySize));\r
-                        }\r
-                        value = b.toString(v, false);\r
-                    }\r
-//                    datatype = type.toSingleLineString();\r
-//                    datatype = type.toString();\r
-//                    datatype = DataTypePrinter2.print(type);\r
-                    datatype = Bindings.getBindingUnchecked(Datatype.class).toString(type, false);\r
-                }\r
-            }\r
-\r
-            // Final fallback if there's no datatype specified\r
-            ValueInfo info = null;\r
-            if (value != null)\r
-                info = new ValueInfo(r, value, datatype);\r
-            if (info == null)\r
-                info = toSimpleValueInfo(r, graph.getValue(r));\r
-\r
-            return info;\r
-        } catch (DatabaseException e) {\r
-            return null;\r
-        } catch (IOException e) {\r
-            return null;\r
-        } catch (BindingException e) {\r
-            return null;\r
-        }\r
-    }\r
-\r
-    private static ValueInfo toSimpleValueInfo(Resource r, Object value) {\r
-        Class<?> clazz = value.getClass();\r
-        if (clazz.isArray()) {\r
-            int length = Array.getLength(value);\r
-            if (length > RESOURCE_NAME_MAX_LENGTH) {\r
-                if (value instanceof byte[]) {\r
-                    byte[] arr = (byte[]) value;\r
-                    byte[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);\r
-                    return truncated(r, "byte", Arrays.toString(arr2), arr.length);\r
-                } else if (value instanceof int[]) {\r
-                    int[] arr = (int[]) value;\r
-                    int[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);\r
-                    return truncated(r, "int", Arrays.toString(arr2), arr.length);\r
-                } else if (value instanceof long[]) {\r
-                    long[] arr = (long[]) value;\r
-                    long[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);\r
-                    return truncated(r, "long", Arrays.toString(arr2), arr.length);\r
-                } else if (value instanceof float[]) {\r
-                    float[] arr = (float[]) value;\r
-                    float[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);\r
-                    return truncated(r, "float", Arrays.toString(arr2), arr.length);\r
-                } else if (value instanceof double[]) {\r
-                    double[] arr = (double[]) value;\r
-                    double[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);\r
-                    return truncated(r, "double", Arrays.toString(arr2), arr.length);\r
-                } else if (value instanceof boolean[]) {\r
-                    boolean[] arr = (boolean[]) value;\r
-                    boolean[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);\r
-                    return truncated(r, "boolean", Arrays.toString(arr2), arr.length);\r
-                } else if (value instanceof Object[]) {\r
-                    Object[] arr = (Object[]) value;\r
-                    Object[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);\r
-                    return truncated(r, "Object", Arrays.toString(arr2), arr.length);\r
-                } else {\r
-                    return new ValueInfo(r, "", "Unknown big array " + clazz.getCanonicalName());\r
-                }\r
-            } else {\r
-                return new ValueInfo(r, ObjectUtils.toString(value), clazz.getComponentType() + "[" + length + "]");\r
-            }\r
-        }\r
-        return new ValueInfo(r, ObjectUtils.toString(value), clazz.getCanonicalName());\r
-    }\r
-\r
-    private static ValueInfo truncated(Resource r, String type, String value, int originalLength) {\r
-        return new ValueInfo(r, value, type + "[" + RESOURCE_NAME_MAX_LENGTH + "/" + originalLength + "]");\r
-    }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2016 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:
+ *     THTH ry - initial API and implementation
+ *******************************************************************************/
+package org.simantics.debug.browser.utils;
+
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.util.Arrays;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.Databoard;
+import org.simantics.databoard.binding.ArrayBinding;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.databoard.binding.error.BindingException;
+import org.simantics.databoard.serialization.Serializer;
+import org.simantics.databoard.type.ArrayType;
+import org.simantics.databoard.type.Datatype;
+import org.simantics.databoard.util.ObjectUtils;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.utils.CommonDBUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.RVI;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.db.layer0.variable.Variables;
+import org.simantics.layer0.Layer0;
+
+public class Values {
+
+    private static int RESOURCE_NAME_MAX_LENGTH = 1000;
+    private static int RESOURCE_VALUE_MAX_SIZE = 16384;
+
+    public static ValueInfo getPossibleValueInfo(ReadGraph graph, Resource r) {
+        try {
+            if (!graph.hasValue(r))
+                return null;
+
+            String value = null;
+            String datatype = null;
+
+            Layer0 L0 = Layer0.getInstance(graph);
+            Datatype type = graph.getPossibleRelatedValue(r, L0.HasDataType, Bindings.getBindingUnchecked(Datatype.class));
+            if (type != null) {
+                if (graph.isInstanceOf(r, L0.RVI)) {
+                    try {
+                        RVI rvi = graph.getPossibleValue(r, graph.getService(Databoard.class).getBindingUnchecked(RVI.class));
+                        Resource owner = CommonDBUtils.getPossibleOwner(graph, r);
+                        if (owner != null) {
+                            Variable context  = Variables.getPossibleConfigurationContext(graph, owner);
+                            if (context != null)  
+                                value = rvi.asPossibleString(graph, context);
+                        }
+                        if (value == null)
+                            value = rvi.toString( graph );
+                        if (value != null)
+                            datatype = "Relative Variable Identifier (RVI)";
+                    } catch (DatabaseException e) {
+                        // Fall through to more generic mechanisms
+                    }
+                }
+
+                // Generic datatype-based fallback method
+                if (value == null) {
+                    Binding b = Bindings.getBinding(type);
+                    Object v = graph.getPossibleValue(r, b);
+                    Serializer s = Bindings.getSerializerUnchecked(b);
+                    int size = s.getSize(v);
+                    if (size > RESOURCE_VALUE_MAX_SIZE) {
+                        value = "Approx. " + size + " byte literal";
+                    } else {
+                        if (b instanceof ArrayBinding) {
+                            // Manipulate data type to contain actual array
+                            // length for printing purposes.
+                            int arraySize = ((ArrayBinding) b).size(v);
+                            ArrayType atype = (ArrayType) type;
+                            atype.setLength(Integer.toString(arraySize));
+                        }
+                        value = b.toString(v, false);
+                    }
+//                    datatype = type.toSingleLineString();
+//                    datatype = type.toString();
+//                    datatype = DataTypePrinter2.print(type);
+                    datatype = Bindings.getBindingUnchecked(Datatype.class).toString(type, false);
+                }
+            }
+
+            // Final fallback if there's no datatype specified
+            ValueInfo info = null;
+            if (value != null)
+                info = new ValueInfo(r, value, datatype);
+            if (info == null)
+                info = toSimpleValueInfo(r, graph.getValue(r));
+
+            return info;
+        } catch (DatabaseException e) {
+            return null;
+        } catch (IOException e) {
+            return null;
+        } catch (BindingException e) {
+            return null;
+        }
+    }
+
+    private static ValueInfo toSimpleValueInfo(Resource r, Object value) {
+        Class<?> clazz = value.getClass();
+        if (clazz.isArray()) {
+            int length = Array.getLength(value);
+            if (length > RESOURCE_NAME_MAX_LENGTH) {
+                if (value instanceof byte[]) {
+                    byte[] arr = (byte[]) value;
+                    byte[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);
+                    return truncated(r, "byte", Arrays.toString(arr2), arr.length);
+                } else if (value instanceof int[]) {
+                    int[] arr = (int[]) value;
+                    int[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);
+                    return truncated(r, "int", Arrays.toString(arr2), arr.length);
+                } else if (value instanceof long[]) {
+                    long[] arr = (long[]) value;
+                    long[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);
+                    return truncated(r, "long", Arrays.toString(arr2), arr.length);
+                } else if (value instanceof float[]) {
+                    float[] arr = (float[]) value;
+                    float[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);
+                    return truncated(r, "float", Arrays.toString(arr2), arr.length);
+                } else if (value instanceof double[]) {
+                    double[] arr = (double[]) value;
+                    double[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);
+                    return truncated(r, "double", Arrays.toString(arr2), arr.length);
+                } else if (value instanceof boolean[]) {
+                    boolean[] arr = (boolean[]) value;
+                    boolean[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);
+                    return truncated(r, "boolean", Arrays.toString(arr2), arr.length);
+                } else if (value instanceof Object[]) {
+                    Object[] arr = (Object[]) value;
+                    Object[] arr2 = Arrays.copyOf(arr, RESOURCE_NAME_MAX_LENGTH);
+                    return truncated(r, "Object", Arrays.toString(arr2), arr.length);
+                } else {
+                    return new ValueInfo(r, "", "Unknown big array " + clazz.getCanonicalName());
+                }
+            } else {
+                return new ValueInfo(r, ObjectUtils.toString(value), clazz.getComponentType() + "[" + length + "]");
+            }
+        }
+        return new ValueInfo(r, ObjectUtils.toString(value), clazz.getCanonicalName());
+    }
+
+    private static ValueInfo truncated(Resource r, String type, String value, int originalLength) {
+        return new ValueInfo(r, value, type + "[" + RESOURCE_NAME_MAX_LENGTH + "/" + originalLength + "]");
+    }
+
+}