1 package org.simantics.xml.sax.base;
\r
5 import org.simantics.db.Resource;
\r
6 import org.simantics.db.Session;
\r
7 import org.simantics.db.WriteGraph;
\r
8 import org.simantics.db.common.request.DelayedWriteRequest;
\r
9 import org.simantics.db.common.request.WriteRequest;
\r
10 import org.simantics.db.exception.DatabaseException;
\r
11 import org.simantics.db.layer0.util.Layer0Utils;
\r
12 import org.simantics.message.ILogger;
\r
13 import org.simantics.message.MessageService;
\r
16 public abstract class AbstractImporter {
\r
19 private Session session;
\r
21 private ILogger logger;
\r
23 private static final boolean USE_DELAYED = false;
\r
25 public AbstractImporter(Session session, File file) {
\r
26 this.session = session;
\r
29 public Resource doImport() throws DatabaseException {
\r
30 return doImport(MessageService.getDefault());
\r
33 public Resource doImport(ILogger logger) throws DatabaseException {
\r
34 this.logger = logger;
\r
36 ImportDelayedRequest req = new ImportDelayedRequest();
\r
37 session.syncRequest(req);
\r
38 return req.getResult();
\r
40 ImportRequest req = new ImportRequest();
\r
41 session.syncRequest(req);
\r
42 return req.getResult();
\r
46 public File getFile() {
\r
50 public abstract void configure(XMLParser parser);
\r
52 private class ImportRequest extends WriteRequest {
\r
53 private Resource result;
\r
54 public ImportRequest() {
\r
59 public void perform(WriteGraph graph) throws DatabaseException {
\r
60 result = doImport(graph);
\r
63 public Resource getResult() {
\r
68 private class ImportDelayedRequest extends DelayedWriteRequest {
\r
69 private Resource result;
\r
70 public ImportDelayedRequest() {
\r
75 public void perform(WriteGraph graph) throws DatabaseException {
\r
76 result = doImport(graph);
\r
79 public Resource getResult() {
\r
84 private Resource doImport(WriteGraph graph) throws DatabaseException {
\r
85 Layer0Utils.setDependenciesIndexingDisabled(graph, true);
\r
87 XMLParser parser = new XMLParser(graph);
\r
89 parser.parse(file, logger);
\r
90 System.out.println(file.getAbsolutePath() + " imported");
\r
91 Resource root = parser.getRoot();
\r
93 throw new DatabaseException(file.getAbsolutePath() + " import failed. File is corrupted, or is not given type");
\r
96 } catch (DatabaseException e) {
\r
98 } catch (Exception e) {
\r
99 throw new DatabaseException(e);
\r