]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/AbstractImporter.java
Make it possible to customise element parsers before imports
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / AbstractImporter.java
index f47dd9395c90e2338236fb0508ac9572a856327c..9a1765083b3dc13b768d28ef86c60c0be19d43f3 100644 (file)
@@ -9,6 +9,7 @@ import org.simantics.db.common.request.DelayedWriteRequest;
 import org.simantics.db.common.request.WriteRequest;\r
 import org.simantics.db.exception.DatabaseException;\r
 import org.simantics.db.layer0.util.Layer0Utils;\r
+import org.simantics.db.service.XSupport;\r
 import org.simantics.message.ILogger;\r
 import org.simantics.message.MessageService;\r
 \r
@@ -21,7 +22,7 @@ public abstract class AbstractImporter {
        private ILogger logger;\r
        private XMLParser parser;\r
        \r
-       private static final boolean USE_DELAYED = false;\r
+       private static final boolean USE_DELAYED = true;\r
        \r
        public AbstractImporter(Session session, File file)  {\r
                this.session = session;\r
@@ -42,7 +43,10 @@ public abstract class AbstractImporter {
                if (USE_DELAYED) {\r
                        ImportDelayedRequest req = new ImportDelayedRequest();\r
                        session.syncRequest(req);\r
-                       return req.getResult();\r
+                       Resource dr = req.getResult();\r
+                       XSupport xs = session.getService(XSupport.class);\r
+                       Resource result = xs.convertDelayedResourceToResource(dr);\r
+                       return result;\r
                } else {\r
                        ImportRequest req = new ImportRequest();\r
                        session.syncRequest(req);\r
@@ -116,4 +120,13 @@ public abstract class AbstractImporter {
                        throw new DatabaseException(e);\r
                } \r
        }\r
+       \r
+       public XMLElementParser getParser(String elementId) {\r
+               return parser.getParser(elementId);\r
+       }\r
+\r
+       public void setParser(String elementId, XMLElementParser p) {\r
+               parser.setParser(elementId, p);\r
+       }\r
+\r
 }\r