import org.simantics.db.ReadGraph;
import org.simantics.db.Resource;
import org.simantics.db.WriteGraph;
+import org.simantics.db.common.request.PossibleIndexRoot;
import org.simantics.db.common.request.ReadRequest;
import org.simantics.db.common.request.UniqueRead;
import org.simantics.db.common.request.WriteRequest;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.layer0.util.Layer0Utils;
+import org.simantics.graph.refactoring.GraphRefactoringUtils;
+import org.simantics.graph.representation.PrettyPrintTG;
+import org.simantics.graph.representation.TransferableGraph1;
import org.simantics.layer0.Layer0;
+import org.simantics.modeling.ModelingUtils;
+import org.simantics.modeling.ui.sharedontology.wizard.Constants;
import org.simantics.scl.compiler.errors.CompilationError;
import org.simantics.scl.compiler.errors.Locations;
import org.simantics.ui.workbench.ResourceEditorInput;
@Override
public Document perform(ReadGraph graph) throws DatabaseException {
Layer0 L0 = Layer0.getInstance(graph);
- currentText = graph.getRelatedValue(resource, L0.PGraph_definition, Bindings.STRING);
- errorHappened = false;
- return new Document(currentText != null ? currentText : "");
+ if(graph.isInstanceOf(resource, L0.PGraph)) {
+ currentText = graph.getRelatedValue(resource, L0.PGraph_definition, Bindings.STRING);
+ errorHappened = false;
+ return new Document(currentText != null ? currentText : "");
+ } else {
+ Resource indexRoot = graph.syncRequest(new PossibleIndexRoot(resource));
+ try {
+ if(indexRoot != null && graph.isInstanceOf(indexRoot, L0.Ontology)) {
+ TransferableGraph1 tg = ModelingUtils.exportSharedOntology(graph, indexRoot, null, Constants.SHARED_LIBRARY_FORMAT, Constants.SHARED_LIBRARY_CURRENT_VERSION);
+ GraphRefactoringUtils.fixOntologyExport(tg);
+ currentText = PrettyPrintTG.print(tg, false);
+ errorHappened = false;
+ }
+ return new Document(currentText != null ? currentText : "");
+ } catch (Exception e) {
+ throw new DatabaseException("Could not get PGraph from " + resource);
+ }
+ }
}
});
} catch (DatabaseException e) {