]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/AbstractImporter.java
Don't continue parsing XML file if root element is not recognised
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / AbstractImporter.java
index af5c2c3da0fc43c1da6ea4f42e53129aa0fd43c3..f47dd9395c90e2338236fb0508ac9572a856327c 100644 (file)
@@ -2,8 +2,6 @@ package org.simantics.xml.sax.base;
 \r
 import java.io.File;\r
 \r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Status;\r
 import org.simantics.db.Resource;\r
 import org.simantics.db.Session;\r
 import org.simantics.db.WriteGraph;\r
@@ -21,6 +19,7 @@ public abstract class AbstractImporter {
        private Session session;\r
        private File file;\r
        private ILogger logger;\r
+       private XMLParser parser;\r
        \r
        private static final boolean USE_DELAYED = false;\r
        \r
@@ -28,6 +27,12 @@ public abstract class AbstractImporter {
                this.session = session;\r
                this.file = file;\r
        }\r
+       \r
+       public AbstractImporter(Session session, File file, XMLParser parser)  {\r
+               this.session = session;\r
+               this.file = file;\r
+               this.parser = parser;\r
+       }\r
        public Resource doImport() throws DatabaseException {\r
                return doImport(MessageService.getDefault());   \r
        }\r
@@ -49,7 +54,8 @@ public abstract class AbstractImporter {
                return file;\r
        }\r
        \r
-       public abstract void configure(XMLParser parser);\r
+       public void configure(XMLParser parser){};\r
+       \r
        \r
        private class ImportRequest extends WriteRequest {\r
                private Resource result;\r
@@ -59,6 +65,8 @@ public abstract class AbstractImporter {
 \r
                @Override\r
                public void perform(WriteGraph graph) throws DatabaseException {\r
+                       Layer0Utils.addCommentMetadata(graph, "Import file " + file.getName());\r
+                       graph.markUndoPoint();\r
                        result = doImport(graph);\r
                }\r
                \r
@@ -86,8 +94,15 @@ public abstract class AbstractImporter {
        private Resource doImport(WriteGraph graph) throws DatabaseException {\r
                Layer0Utils.setDependenciesIndexingDisabled(graph, true);\r
                try {\r
-                       XMLParser parser = new XMLParser(graph);\r
-                       configure(parser);\r
+                       \r
+                       if (parser == null) {\r
+                               parser = new XMLParser();\r
+                               parser.setGraph(graph);\r
+                               configure(parser);\r
+                       } else {\r
+                               parser.setGraph(graph);\r
+                       }\r
+                       \r
                        parser.parse(file, logger);\r
                        System.out.println(file.getAbsolutePath() + " imported");\r
                        Resource root = parser.getRoot();\r