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.graph.compiler.GraphCompiler;
import org.simantics.graph.compiler.GraphCompilerPreferences;
import org.simantics.graph.compiler.ValidationMode;
+import org.simantics.graph.compiler.internal.ltk.ISource;
+import org.simantics.graph.compiler.internal.ltk.Problem;
import org.simantics.graph.db.TransferableGraphException;
import org.simantics.graph.db.TransferableGraphSource;
import org.simantics.graph.db.TransferableGraphs;
import org.simantics.graph.representation.TransferableGraph1;
import org.simantics.graphfile.ontology.GraphFileResource;
import org.simantics.layer0.Layer0;
-import org.simantics.ltk.ISource;
-import org.simantics.ltk.Problem;
import org.simantics.modeling.internal.Activator;
import org.simantics.utils.FileUtils;
import org.simantics.utils.datastructures.Pair;
+import org.slf4j.LoggerFactory;
/**
* @author Antti Villberg
*/
public class CompilePGraphs {
+ private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(CompilePGraphs.class);
+
public static interface UserAgent {
void reportProblems(CompilationResult result);
}
}
public static void compilePGraphs(Resource r, UserAgent userAgent) throws IOException, DatabaseException {
+ compilePGraphs(r, userAgent, new NullProgressMonitor());
+ }
+
+ public static void compilePGraphs(Resource r, UserAgent userAgent, IProgressMonitor monitor) throws IOException, DatabaseException {
final Collection<ISource> sources = new ArrayList<>();
Collection<TransferableGraph1> dependencies = new ArrayList<>();
- for (Bundle b : Activator.getContext().getBundles()) {
- 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);
- }
- }
-
- final TransferableGraph1 thisOntology = Simantics.sync(new UniqueRead<TransferableGraph1>() {
+ final Pair<String, TransferableGraph1> thisOntology = Simantics.sync(new UniqueRead<Pair<String, TransferableGraph1>>() {
@Override
- public TransferableGraph1 perform(ReadGraph graph) throws DatabaseException {
+ public Pair<String, TransferableGraph1> perform(ReadGraph graph) throws DatabaseException {
Layer0 L0 = Layer0.getInstance(graph);
Resource parent = graph.getSingleObject(r, L0.PartOf);
}
};
+ String uri = graph.getURI(r);
SimanticsClipboardImpl clipboard = new SimanticsClipboardImpl();
- ch.copyToClipboard(graph, clipboard);
+ ch.copyToClipboard(graph, clipboard, monitor);
for (Set<Representation> object : clipboard.getContents()) {
TransferableGraph1 tg = ClipboardUtils.accept(graph, object, SimanticsKeys.KEY_TRANSFERABLE_GRAPH);
if (tg != null)
- return tg;
+ return Pair.make(uri, tg);
}
return null;
if (thisOntology == null)
throw new DatabaseException("Failed to dump the containing ontology of " + r + " into TransferableGraph1");
- dependencies.add(thisOntology);
+ 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);
+ }
+ }
+
Simantics.sync(new ReadRequest() {
@Override
}
});
}
+
+ // Delete index to get rid of floating old instances of the same ontology
+// DatabaseIndexing.deleteAllIndexes();
}
private static File extractLib(URL libURL, String libName) throws FileNotFoundException, IOException {
Logger.defaultLogError(e);
}
} else {
- System.err.println("Unsupported URL protocol '" + url + "' for FastLZ native library file '" + fileName);
+ LOGGER.warn("Unsupported URL protocol");
}
return null;
}