-/*******************************************************************************\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.db.impl;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.List;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.utils.Literals;\r
-import org.simantics.db.exception.ServiceException;\r
-import org.simantics.db.exception.ValidationException;\r
-import org.simantics.layer0.Layer0;\r
-\r
-public class DatabaseUtils {\r
-\r
- public static String getReadableName(ReadGraph graph, Resource resource) throws ValidationException, ServiceException {\r
- Layer0 b = Layer0.getInstance(graph);\r
- \r
- String uri = graph.getPossibleURI(resource);\r
- if(uri != null) return uri;\r
- \r
- List<String> names = new ArrayList<String>(1);\r
- for(Resource nameResource : graph.getObjects(resource, b.HasName)) {\r
- Object value = graph.getPossibleValue(nameResource);\r
- if(value != null) {\r
- names.add(Literals.shortString(Literals.literalToString(value)));\r
- }\r
- }\r
- if(!names.isEmpty()) {\r
- if(names.size() == 1)\r
- return names.get(0);\r
- else {\r
- StringBuilder bb = new StringBuilder();\r
- bb.append('[');\r
- for(int i=0;i<names.size();++i) {\r
- if(i>0)\r
- bb.append(", ");\r
- bb.append(names.get(i));\r
- }\r
- bb.append(']');\r
- return bb.toString();\r
- }\r
- }\r
- StringBuilder bb = new StringBuilder();\r
- Object val = graph.getPossibleValue(resource);\r
- if(val != null) {\r
- if(val instanceof double[])\r
- bb.append(Literals.shortString(Arrays.toString((double[])val)));\r
- else if(val instanceof float[])\r
- bb.append(Literals.shortString(Arrays.toString((float[])val)));\r
- else if(val instanceof int[])\r
- bb.append(Literals.shortString(Arrays.toString((int[])val)));\r
- else if(val instanceof boolean[])\r
- bb.append(Literals.shortString(Arrays.toString((boolean[])val)));\r
- else if(val instanceof long[])\r
- bb.append(Literals.shortString(Arrays.toString((long[])val)));\r
- else if(val instanceof byte[])\r
- bb.append(Literals.shortString(Arrays.toString((byte[])val)));\r
- else if(val instanceof String[])\r
- bb.append(Literals.shortString(Arrays.toString((String[])val)));\r
- else \r
- bb.append(Literals.shortString(val));\r
- }\r
- else\r
- bb.append(resource.getResourceId());\r
- boolean ok = false;\r
- for(Resource r : graph.getObjects(resource, b.InstanceOf)) {\r
- bb.append(" : (" + getReadableName(graph, r) + ")");\r
- ok = true;\r
- }\r
- if(!ok) {\r
- for(Resource r : graph.getObjects(resource, b.Inherits)) {\r
- bb.append(" <T (" + getReadableName(graph, r) + ")");\r
- ok = true;\r
- } \r
- if(!ok) {\r
- for(Resource r : graph.getObjects(resource, b.SubrelationOf)) {\r
- bb.append(" <R (" + getReadableName(graph, r) + ")");\r
- ok = true;\r
- } \r
- }\r
- }\r
- return bb.toString();\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.db.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.utils.Literals;
+import org.simantics.db.exception.ServiceException;
+import org.simantics.db.exception.ValidationException;
+import org.simantics.layer0.Layer0;
+
+public class DatabaseUtils {
+
+ public static String getReadableName(ReadGraph graph, Resource resource) throws ValidationException, ServiceException {
+ Layer0 b = Layer0.getInstance(graph);
+
+ String uri = graph.getPossibleURI(resource);
+ if(uri != null) return uri;
+
+ List<String> names = new ArrayList<String>(1);
+ for(Resource nameResource : graph.getObjects(resource, b.HasName)) {
+ Object value = graph.getPossibleValue(nameResource);
+ if(value != null) {
+ names.add(Literals.shortString(Literals.literalToString(value)));
+ }
+ }
+ if(!names.isEmpty()) {
+ if(names.size() == 1)
+ return names.get(0);
+ else {
+ StringBuilder bb = new StringBuilder();
+ bb.append('[');
+ for(int i=0;i<names.size();++i) {
+ if(i>0)
+ bb.append(", ");
+ bb.append(names.get(i));
+ }
+ bb.append(']');
+ return bb.toString();
+ }
+ }
+ StringBuilder bb = new StringBuilder();
+ Object val = graph.getPossibleValue(resource);
+ if(val != null) {
+ if(val instanceof double[])
+ bb.append(Literals.shortString(Arrays.toString((double[])val)));
+ else if(val instanceof float[])
+ bb.append(Literals.shortString(Arrays.toString((float[])val)));
+ else if(val instanceof int[])
+ bb.append(Literals.shortString(Arrays.toString((int[])val)));
+ else if(val instanceof boolean[])
+ bb.append(Literals.shortString(Arrays.toString((boolean[])val)));
+ else if(val instanceof long[])
+ bb.append(Literals.shortString(Arrays.toString((long[])val)));
+ else if(val instanceof byte[])
+ bb.append(Literals.shortString(Arrays.toString((byte[])val)));
+ else if(val instanceof String[])
+ bb.append(Literals.shortString(Arrays.toString((String[])val)));
+ else
+ bb.append(Literals.shortString(val));
+ }
+ else
+ bb.append(resource.getResourceId());
+ boolean ok = false;
+ for(Resource r : graph.getObjects(resource, b.InstanceOf)) {
+ bb.append(" : (" + getReadableName(graph, r) + ")");
+ ok = true;
+ }
+ if(!ok) {
+ for(Resource r : graph.getObjects(resource, b.Inherits)) {
+ bb.append(" <T (" + getReadableName(graph, r) + ")");
+ ok = true;
+ }
+ if(!ok) {
+ for(Resource r : graph.getObjects(resource, b.SubrelationOf)) {
+ bb.append(" <R (" + getReadableName(graph, r) + ")");
+ ok = true;
+ }
+ }
+ }
+ return bb.toString();
+ }
+
+}