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
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
+ private static final boolean USE_DELAYED = true;\r
\r
public AbstractImporter(Session session, File file) {\r
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
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
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
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
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