1 package org.simantics.xml.sax.base;
\r
5 import org.eclipse.core.runtime.IStatus;
\r
6 import org.eclipse.core.runtime.Status;
\r
7 import org.simantics.db.Resource;
\r
8 import org.simantics.db.Session;
\r
9 import org.simantics.db.WriteGraph;
\r
10 import org.simantics.db.common.request.DelayedWriteRequest;
\r
11 import org.simantics.db.common.request.WriteRequest;
\r
12 import org.simantics.db.exception.DatabaseException;
\r
13 import org.simantics.db.layer0.util.Layer0Utils;
\r
14 import org.simantics.message.ILogger;
\r
15 import org.simantics.message.MessageService;
\r
18 public abstract class AbstractImporter {
\r
21 private Session session;
\r
23 private ILogger logger;
\r
25 private static final boolean USE_DELAYED = false;
\r
27 public AbstractImporter(Session session, File file) {
\r
28 this.session = session;
\r
31 public Resource doImport() throws DatabaseException {
\r
32 return doImport(MessageService.getDefault());
\r
35 public Resource doImport(ILogger logger) throws DatabaseException {
\r
36 this.logger = logger;
\r
38 ImportDelayedRequest req = new ImportDelayedRequest();
\r
39 session.syncRequest(req);
\r
40 return req.getResult();
\r
42 ImportRequest req = new ImportRequest();
\r
43 session.syncRequest(req);
\r
44 return req.getResult();
\r
48 public File getFile() {
\r
52 public abstract void configure(XMLParser parser);
\r
54 private class ImportRequest extends WriteRequest {
\r
55 private Resource result;
\r
56 public ImportRequest() {
\r
61 public void perform(WriteGraph graph) throws DatabaseException {
\r
62 result = doImport(graph);
\r
65 public Resource getResult() {
\r
70 private class ImportDelayedRequest extends DelayedWriteRequest {
\r
71 private Resource result;
\r
72 public ImportDelayedRequest() {
\r
77 public void perform(WriteGraph graph) throws DatabaseException {
\r
78 result = doImport(graph);
\r
81 public Resource getResult() {
\r
86 private Resource doImport(WriteGraph graph) throws DatabaseException {
\r
87 Layer0Utils.setDependenciesIndexingDisabled(graph, true);
\r
89 XMLParser parser = new XMLParser(graph);
\r
91 parser.parse(file, logger);
\r
92 System.out.println(file.getAbsolutePath() + " imported");
\r
93 Resource root = parser.getRoot();
\r
95 throw new DatabaseException(file.getAbsolutePath() + " import failed. File is corrupted, or is not given type");
\r
98 } catch (DatabaseException e) {
\r
100 } catch (Exception e) {
\r
101 throw new DatabaseException(e);
\r