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;
}
Identity consistsOf = findExternal(tg, "http://www.simantics.org/Layer0-1.1/ConsistsOf");
Identity hasName = findExternal(tg, "http://www.simantics.org/Layer0-1.1/HasName");
- for (int i = 0; i < tg.statements.length; i += 4) {
- if (tg.statements[i] == parentResource) {
- if (tg.statements[i + 1] == consistsOf.resource) {
- Identity identity = getIdentity(tg, tg.statements[i + 3]);
- if (identity != null) {
- if (identity.definition instanceof Internal) {
- Internal internal = (Internal) identity.definition;
- result.put(internal.name, identity);
- }
- } else {
- int possibleNameResource = getPossibleObject2(tg, tg.statements[i + 3], hasName);
- if (possibleNameResource != NOT_FOUND) {
- Value value = findValue(tg, possibleNameResource);
- if (value != null) {
- try {
- String name = (String) value.value.getValue(Bindings.STRING);
- result.put(name, new Identity(tg.statements[i + 3], new Internal(tg.statements[i], name)));
- } catch (AdaptException e) {
- e.printStackTrace();
+ if(consistsOf != null && hasName != null) {
+ for (int i = 0; i < tg.statements.length; i += 4) {
+ if (tg.statements[i] == parentResource) {
+ if (tg.statements[i + 1] == consistsOf.resource) {
+ Identity identity = getIdentity(tg, tg.statements[i + 3]);
+ if (identity != null) {
+ if (identity.definition instanceof Internal) {
+ Internal internal = (Internal) identity.definition;
+ result.put(internal.name, identity);
+ }
+ } else {
+ int possibleNameResource = getPossibleObject2(tg, tg.statements[i + 3], hasName);
+ if (possibleNameResource != NOT_FOUND) {
+ Value value = findValue(tg, possibleNameResource);
+ if (value != null) {
+ try {
+ String name = (String) value.value.getValue(Bindings.STRING);
+ result.put(name, new Identity(tg.statements[i + 3], new Internal(tg.statements[i], name)));
+ } catch (AdaptException e) {
+ e.printStackTrace();
+ }
}
}
}