Set<Resource> externals = new HashSet<>();
List<RootSpec> roots = new ArrayList<>();
+ Resource indexRoot = graph.syncRequest(new PossibleIndexRoot(resources.iterator().next()));
+ if(indexRoot == null) throw new DatabaseException("Composite is not part of any index root");
+ String indexRootUri = graph.getURI(indexRoot);
+
for(Resource resource : resources) {
// Process all connection joins.
// This is the only way to access all of them.
}
// Include resource as root
-// GUID rootId = graph.getRelatedValue(resource, L0.identifier, GUID.BINDING);
-// String rootName = graph.getRelatedValue(resource, L0.HasName, Bindings.STRING);
-// String escapedRootName = URIStringUtils.escape(rootName);
-// String escapedPath = ModelingUtils.getDiagramCompositePath(graph, resource);
CompositeInfo info = CompositeInfo.fromResource(graph, resource);
- roots.add(new RootSpec(resource, info.getTGName(), true));
+ roots.add(new RootSpec(resource, info.getTGName(), true, typeId(graph, L0, indexRootUri, resource)));
Resource id = graph.getPossibleObject(resource, L0.identifier);
if(id != null) exclusions.add(id);
// Include components as roots
for(Resource child : graph.sync(new ObjectsWithType(resource, L0.ConsistsOf, SR.Component))) {
DiagramComponentInfo cinfo = DiagramComponentInfo.fromResource(graph, info, child);
-// GUID childId = graph.getRelatedValue(resource, L0.identifier, GUID.BINDING);
-// String childName = graph.getRelatedValue(child, L0.HasName, Bindings.STRING);
id = graph.getPossibleObject(child, L0.identifier);
if(id != null) exclusions.add(id);
- roots.add(new RootSpec(child, cinfo.getTGName(info), true));
+ roots.add(new RootSpec(child, cinfo.getTGName(info), true, typeId(graph, L0, indexRootUri, child)));
}
}
- Resource model = graph.syncRequest(new PossibleIndexRoot(resources.iterator().next()));
- if(model == null) throw new DatabaseException("Composite is not part of any index root");
- roots.add(new RootSpec(model, "%model", false));
+ roots.add(new RootSpec(indexRoot, "%model", false));
TransferableGraphConfiguration2 config = TransferableGraphConfiguration2.createWithNames2(graph, roots, exclusions, true, false);
for (Resource external : externals)
return config;
}
+ private static String typeId(ReadGraph graph, Layer0 L0, String indexRootUri, Resource r) throws DatabaseException {
+ Resource type = graph.getPossibleType(r, L0.Entity);
+ if (type == null)
+ return Layer0.URIs.Entity;
+ String typeUri = graph.getPossibleURI(type);
+ if (typeUri == null || !typeUri.startsWith(indexRootUri))
+ return typeUri;
+ return "%model" + typeUri.substring(indexRootUri.length());
+ }
+
}