if("http:/".equals(uri)) return identity;
String[] tokens = uri.substring("http://".length()).split("/");
for(String token : tokens) {
- identity = findExternalWithNameAndParent(tg, identity.resource, token);
+ identity = findExternalWithNameAndParent(tg, identity.resource, URIStringUtils.unescape(token));
if (identity == null) {
return null;
}
return identity;
}
-
+
+ /**
+ * Provided a tg and a resource uri, returns the identity of the tg if the uri_ matches the tg exactly
+ * @param tg
+ * @param uri_
+ * @return
+ */
+ public static Identity getIdentity2(TransferableGraph1 tg, String uri_) {
+ Collection<Identity> identities = TransferableGraphUtils.getRoots(tg);
+ for (Identity i : identities) {
+ Identity id = getIdentity2(tg, uri_, i);
+ if (id != null) {
+ return id;
+ }
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @param tg
+ * @param uri_
+ * @param id
+ * @return
+ */
+ public static Identity getIdentity2(TransferableGraph1 tg, String uri_, Identity id) {
+ String uri = TransferableGraphUtils.getURI(tg, id.resource);
+
+ if (uri_.equals(uri)) {
+ return id;
+ }
+
+ if (uri_.startsWith(uri)) {
+ Collection<Identity> childIdentitiesOfRoot = TransferableGraphUtils.getChildren2(tg, id);
+ for (Identity i2 : childIdentitiesOfRoot) {
+ Identity id2 = getIdentity2(tg, uri_, i2);
+ if (id2 != null) {
+ return id2;
+ }
+ }
+ }
+
+ return null;
+ }
+
public static Identity getIdentity(TransferableGraph1 tg, int resource) {
for(Identity id : tg.identities) {
if(id.resource == resource) return id;
if(definition instanceof External) {
External def = (External)definition;
if(def.parent == -1) return "http:/";
- else return getURI(identities, def.parent) + "/" + def.name;
+ else return getURI(identities, def.parent) + "/" + URIStringUtils.escape(def.name);
} else if(definition instanceof Root) {
Root def = (Root)definition;
if(def.name.isEmpty()) return "http:/";
return def.name;
} else if (definition instanceof Internal) {
Internal def = (Internal)definition;
- return getURI(identities, def.parent) + "/" + def.name;
+ return getURI(identities, def.parent) + "/" + URIStringUtils.escape(def.name);
} else {
return "";
}