X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax.base%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2Fbase%2FAbstractImporter.java;h=34936318f3cec738e3fe8b58a7efac3bd3de8065;hb=refs%2Fheads%2Frelease%2F1.32.1;hp=f175fc4b5a204dd658bb5f20f475f71b019f6ed5;hpb=81ede25bbf4e80f6363c16fc13ecb1add3720acb;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/AbstractImporter.java b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/AbstractImporter.java index f175fc4..3493631 100644 --- a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/AbstractImporter.java +++ b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/AbstractImporter.java @@ -9,6 +9,7 @@ import org.simantics.db.common.request.DelayedWriteRequest; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.util.Layer0Utils; +import org.simantics.db.service.XSupport; import org.simantics.message.ILogger; import org.simantics.message.MessageService; @@ -19,13 +20,20 @@ public abstract class AbstractImporter { private Session session; private File file; private ILogger logger; + private XMLParser parser; - private static final boolean USE_DELAYED = false; + private static final boolean USE_DELAYED = true; public AbstractImporter(Session session, File file) { this.session = session; this.file = file; } + + public AbstractImporter(Session session, File file, XMLParser parser) { + this.session = session; + this.file = file; + this.parser = parser; + } public Resource doImport() throws DatabaseException { return doImport(MessageService.getDefault()); } @@ -35,7 +43,10 @@ public abstract class AbstractImporter { if (USE_DELAYED) { ImportDelayedRequest req = new ImportDelayedRequest(); session.syncRequest(req); - return req.getResult(); + Resource dr = req.getResult(); + XSupport xs = session.getService(XSupport.class); + Resource result = xs.convertDelayedResourceToResource(dr); + return result; } else { ImportRequest req = new ImportRequest(); session.syncRequest(req); @@ -47,7 +58,8 @@ public abstract class AbstractImporter { return file; } - public abstract void configure(XMLParser parser); + public void configure(XMLParser parser){}; + private class ImportRequest extends WriteRequest { private Resource result; @@ -86,8 +98,15 @@ public abstract class AbstractImporter { private Resource doImport(WriteGraph graph) throws DatabaseException { Layer0Utils.setDependenciesIndexingDisabled(graph, true); try { - XMLParser parser = new XMLParser(graph); - configure(parser); + + if (parser == null) { + parser = new XMLParser(); + parser.setGraph(graph); + configure(parser); + } else { + parser.setGraph(graph); + } + parser.parse(file, logger); System.out.println(file.getAbsolutePath() + " imported"); Resource root = parser.getRoot();