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=f47dd9395c90e2338236fb0508ac9572a856327c;hb=90d821c64af7690fe7e108c3f5b89da8fa5395fc;hp=9e0d57dac8a0f6acb8aafbc3e99d8f07262fccf5;hpb=7fc4b8cf590d204939974dbae460b709112803f0;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 9e0d57d..f47dd93 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 @@ -19,6 +19,7 @@ public abstract class AbstractImporter { private Session session; private File file; private ILogger logger; + private XMLParser parser; private static final boolean USE_DELAYED = false; @@ -26,6 +27,12 @@ public abstract class AbstractImporter { 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()); } @@ -47,7 +54,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; @@ -57,6 +65,8 @@ public abstract class AbstractImporter { @Override public void perform(WriteGraph graph) throws DatabaseException { + Layer0Utils.addCommentMetadata(graph, "Import file " + file.getName()); + graph.markUndoPoint(); result = doImport(graph); } @@ -84,8 +94,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();