-package org.simantics.graph.query;\r
-\r
-\r
-public class UriUtils {\r
-\r
- public static Path uriToPath(String uri) {\r
- String[] segments;\r
- Path cur;\r
- if(uri.startsWith("http:/")) {\r
- if(uri.length() == 6)\r
- return Paths.Root;\r
- segments = uri.substring(7).split("/");\r
- cur = Paths.Root;\r
- }\r
- else {\r
- int p = uri.indexOf('/');\r
- if(p == -1)\r
- return new PathRoot(uri);\r
- else {\r
- segments = uri.substring(p+1).split("/");\r
- cur = new PathRoot(uri.substring(0, p));\r
- }\r
- }\r
-\r
- for(String segment : segments)\r
- cur = new PathChild(segment, cur);\r
- return cur;\r
- }\r
- \r
-}\r
+package org.simantics.graph.query;
+
+import org.simantics.databoard.util.URIStringUtils;
+
+public class UriUtils {
+
+ public static Path uriToPath(String uri) {
+ String[] segments;
+ Path cur;
+ if(uri.startsWith("http:/")) {
+ if(uri.length() == 6)
+ return Paths.Root;
+ segments = uri.substring(7).split("/");
+ cur = Paths.Root;
+ }
+ else {
+ int p = uri.indexOf('/');
+ if(p == -1)
+ return new PathRoot(uri);
+ else {
+ segments = uri.substring(p+1).split("/");
+ cur = new PathRoot(uri.substring(0, p));
+ }
+ }
+
+ for(String segment : segments)
+ cur = new PathChild(segment, cur);
+ return cur;
+ }
+
+ public static Path uriToPathUnescaped(String uri) {
+ String[] segments;
+ Path cur;
+ if(uri.startsWith("http:/")) {
+ if(uri.length() == 6)
+ return Paths.Root;
+ segments = uri.substring(7).split("/");
+ cur = Paths.Root;
+ }
+ else {
+ int p = uri.indexOf('/');
+ if(p == -1)
+ return new PathRoot(URIStringUtils.unescape(uri));
+ else {
+ segments = uri.substring(p+1).split("/");
+ cur = new PathRoot(URIStringUtils.unescape(uri.substring(0, p)));
+ }
+ }
+
+ for(String segment : segments)
+ cur = new PathChild(URIStringUtils.unescape(segment), cur);
+ return cur;
+ }
+
+}