X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.graph%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Fquery%2FUriUtils.java;fp=bundles%2Forg.simantics.graph%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Fquery%2FUriUtils.java;h=6911f782d75e24a902476187fd428f2a7bd2f404;hp=ef22553244d78de555f5ee2a2ed1d3cc809c1eec;hb=da0a902de6b2b4c7b4b635d11b397f663db8ecd9;hpb=b913419ca9037bf9734c56a5f079024c3a1cd177 diff --git a/bundles/org.simantics.graph/src/org/simantics/graph/query/UriUtils.java b/bundles/org.simantics.graph/src/org/simantics/graph/query/UriUtils.java index ef2255324..6911f782d 100644 --- a/bundles/org.simantics.graph/src/org/simantics/graph/query/UriUtils.java +++ b/bundles/org.simantics.graph/src/org/simantics/graph/query/UriUtils.java @@ -1,5 +1,6 @@ package org.simantics.graph.query; +import org.simantics.databoard.util.URIStringUtils; public class UriUtils { @@ -27,4 +28,28 @@ public class UriUtils { 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; + } + }