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;
import java.util.Map;
import java.util.Set;
-import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
-import org.osgi.framework.Bundle;
import org.simantics.Simantics;
import org.simantics.databoard.Bindings;
import org.simantics.db.ReadGraph;
import org.simantics.graph.representation.Identity;
import org.simantics.graph.representation.Root;
import org.simantics.graph.representation.TransferableGraph1;
+import org.simantics.graph.representation.TransferableGraphUtils;
import org.simantics.graphfile.ontology.GraphFileResource;
import org.simantics.layer0.Layer0;
import org.simantics.modeling.internal.Activator;
+import org.simantics.project.management.GraphBundle;
+import org.simantics.project.management.GraphBundleEx;
+import org.simantics.project.management.GraphBundleRef;
+import org.simantics.project.management.PlatformUtil;
import org.simantics.utils.FileUtils;
import org.simantics.utils.datastructures.Pair;
import org.slf4j.LoggerFactory;
}
});
- if (thisOntology == null)
+ if (thisOntology == null)
throw new DatabaseException("Failed to dump the containing ontology of " + r + " into TransferableGraph1");
dependencies.add(thisOntology.second);
-
- for (Bundle b : Activator.getContext().getBundles()) {
- String id = b.getSymbolicName();
- String name = (String) b.getHeaders().get("Bundle-Name");
- if (name == null) name = id;
- if (name.equals(thisOntology.first))
- continue;
- URL tg = b.getEntry("/graph.tg");
- if (tg == null) continue;
- File f = url2file(FileLocator.resolve(tg), b.getSymbolicName());
- try {
- dependencies.add(GraphCompiler.read(f));
- } catch (Exception e) {
- throw new IOException("Failed to read compiled transferable graph as dependency: " + f, e);
+
+ Collection<GraphBundle> tgs = PlatformUtil.getAllGraphs();
+
+ for (GraphBundle b : tgs) {
+ TransferableGraph1 tg = b.getGraph();
+ Identity id = TransferableGraphUtils.getIdentity2(tg, thisOntology.first);
+ if(id == null) {
+ dependencies.add(tg);
}
}
-
Simantics.sync(new ReadRequest() {
@Override
public void run(ReadGraph graph) throws DatabaseException {