|
29 | 29 | import com.arcadedb.integration.exporter.ExporterContext;
|
30 | 30 | import com.arcadedb.integration.exporter.ExporterSettings;
|
31 | 31 | import com.arcadedb.integration.importer.ConsoleLogger;
|
| 32 | +import com.arcadedb.log.LogManager; |
32 | 33 | import com.arcadedb.schema.DocumentType;
|
33 | 34 | import com.arcadedb.schema.LocalEdgeType;
|
34 | 35 | import com.arcadedb.schema.LocalSchema;
|
35 | 36 | import com.arcadedb.schema.LocalVertexType;
|
36 | 37 | import com.arcadedb.serializer.JsonGraphSerializer;
|
37 | 38 | import com.arcadedb.serializer.json.JSONObject;
|
38 | 39 |
|
39 |
| -import java.io.File; |
40 |
| -import java.io.FileOutputStream; |
41 |
| -import java.io.IOException; |
42 |
| -import java.io.OutputStreamWriter; |
43 |
| -import java.util.ArrayList; |
44 |
| -import java.util.Iterator; |
45 |
| -import java.util.List; |
46 |
| -import java.util.zip.GZIPOutputStream; |
| 40 | +import java.io.*; |
| 41 | +import java.util.*; |
| 42 | +import java.util.logging.*; |
| 43 | +import java.util.zip.*; |
47 | 44 |
|
48 | 45 | public class JsonlExporterFormat extends AbstractExporterFormat {
|
49 | 46 | public static final String NAME = "jsonl";
|
50 | 47 | protected final JSONObject sharedJson = new JSONObject();
|
51 | 48 | private OutputStreamWriter writer;
|
52 | 49 | private final static int VERSION = 1;
|
53 | 50 |
|
54 |
| - public JsonlExporterFormat( |
55 |
| - final DatabaseInternal database, |
56 |
| - final ExporterSettings settings, |
57 |
| - final ExporterContext context, |
| 51 | + public JsonlExporterFormat(final DatabaseInternal database, final ExporterSettings settings, final ExporterContext context, |
58 | 52 | final ConsoleLogger logger) {
|
59 | 53 | super(database, settings, context, logger);
|
60 | 54 | }
|
@@ -88,18 +82,12 @@ public void exportDatabase() throws Exception {
|
88 | 82 | DatabaseFactory.getDefaultCharset())) {
|
89 | 83 | writer = fileWriter;
|
90 | 84 |
|
91 |
| - writeJsonLine("info", new JSONObject() |
92 |
| - .put("description", "ArcadeDB Database Export") |
93 |
| - .put("exporterVersion", VERSION)// |
94 |
| - .put("dbVersion", Constants.getRawVersion()) |
95 |
| - .put("dbBranch", Constants.getBranch()) |
96 |
| - .put("dbBuild", Constants.getBuildNumber()) |
97 |
| - .put("dbTimestamp", Constants.getTimestamp())); |
| 85 | + writeJsonLine("info", new JSONObject().put("description", "ArcadeDB Database Export").put("exporterVersion", VERSION)// |
| 86 | + .put("dbVersion", Constants.getRawVersion()).put("dbBranch", Constants.getBranch()) |
| 87 | + .put("dbBuild", Constants.getBuildNumber()).put("dbTimestamp", Constants.getTimestamp())); |
98 | 88 |
|
99 | 89 | final long now = System.currentTimeMillis();
|
100 |
| - writeJsonLine("db", new JSONObject() |
101 |
| - .put("name", database.getName()) |
102 |
| - .put("executedOn", dateFormat.format(now)) |
| 90 | + writeJsonLine("db", new JSONObject().put("name", database.getName()).put("executedOn", dateFormat.format(now)) |
103 | 91 | .put("executedOnTimestamp", now));
|
104 | 92 |
|
105 | 93 | writeJsonLine("schema", ((LocalSchema) database.getSchema()).toJSON());
|
@@ -142,41 +130,59 @@ public String getName() {
|
142 | 130 | private void exportVertices(final List<String> vertexTypes, final JsonGraphSerializer graphSerializer) throws IOException {
|
143 | 131 | for (final String type : vertexTypes) {
|
144 | 132 | for (final Iterator<Record> cursor = database.iterateType(type, false); cursor.hasNext(); ) {
|
145 |
| - final Vertex record = cursor.next().asVertex(true); |
146 |
| - |
147 |
| - if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString())) |
148 |
| - continue; |
149 |
| - |
150 |
| - writeJsonLine("v", graphSerializer.serializeGraphElement(record)); |
151 |
| - context.vertices.incrementAndGet(); |
| 133 | + Vertex record = null; |
| 134 | + try { |
| 135 | + record = cursor.next().asVertex(true); |
| 136 | + |
| 137 | + if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString())) |
| 138 | + continue; |
| 139 | + |
| 140 | + writeJsonLine("v", graphSerializer.serializeGraphElement(record)); |
| 141 | + context.vertices.incrementAndGet(); |
| 142 | + } catch (Exception e) { |
| 143 | + LogManager.instance() |
| 144 | + .log(this, Level.SEVERE, "Error on exporting vertex %s", e, record != null ? record.getIdentity() : null); |
| 145 | + } |
152 | 146 | }
|
153 | 147 | }
|
154 | 148 | }
|
155 | 149 |
|
156 | 150 | private void exportEdges(final List<String> edgeTypes, final JsonGraphSerializer graphSerializer) throws IOException {
|
157 | 151 | for (final String type : edgeTypes) {
|
158 | 152 | for (final Iterator<Record> cursor = database.iterateType(type, false); cursor.hasNext(); ) {
|
159 |
| - final Edge record = cursor.next().asEdge(true); |
160 |
| - |
161 |
| - if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString())) |
162 |
| - continue; |
163 |
| - |
164 |
| - writeJsonLine("e", graphSerializer.serializeGraphElement(record)); |
165 |
| - context.edges.incrementAndGet(); |
| 153 | + Edge record = null; |
| 154 | + try { |
| 155 | + record = cursor.next().asEdge(true); |
| 156 | + |
| 157 | + if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString())) |
| 158 | + continue; |
| 159 | + |
| 160 | + writeJsonLine("e", graphSerializer.serializeGraphElement(record)); |
| 161 | + context.edges.incrementAndGet(); |
| 162 | + } catch (Exception e) { |
| 163 | + LogManager.instance() |
| 164 | + .log(this, Level.SEVERE, "Error on exporting vertex %s", e, record != null ? record.getIdentity() : null); |
| 165 | + } |
166 | 166 | }
|
167 | 167 | }
|
168 | 168 | }
|
169 | 169 |
|
170 | 170 | private void exportDocuments(final List<String> documentTypes, final JsonGraphSerializer graphSerializer) throws IOException {
|
171 | 171 | for (final String type : documentTypes) {
|
172 | 172 | for (final Iterator<Record> cursor = database.iterateType(type, false); cursor.hasNext(); ) {
|
173 |
| - final Document record = cursor.next().asDocument(true); |
174 |
| - |
175 |
| - if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString())) |
176 |
| - continue; |
177 |
| - |
178 |
| - writeJsonLine("d", graphSerializer.serializeGraphElement(record)); |
179 |
| - context.documents.incrementAndGet(); |
| 173 | + Document record = null; |
| 174 | + try { |
| 175 | + record = cursor.next().asDocument(true); |
| 176 | + |
| 177 | + if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString())) |
| 178 | + continue; |
| 179 | + |
| 180 | + writeJsonLine("d", graphSerializer.serializeGraphElement(record)); |
| 181 | + context.documents.incrementAndGet(); |
| 182 | + } catch (Exception e) { |
| 183 | + LogManager.instance() |
| 184 | + .log(this, Level.SEVERE, "Error on exporting vertex %s", e, record != null ? record.getIdentity() : null); |
| 185 | + } |
180 | 186 | }
|
181 | 187 | }
|
182 | 188 | }
|
|
0 commit comments