}
public static void writeTransferableGraph(RequestProcessor processor, String format, int version, TreeMap<String, Variant> metadata, TransferableGraphSource source, File target, TGStatusMonitor monitor) throws Exception {
- final Serializer datatypeSerializer = Bindings.getSerializerUnchecked(Datatype.class);
try (RandomAccessBinary out = new BinaryFile(target, 128*1024)) {
- DataContainer container = new DataContainer(format, version, metadata, null);
- DataContainers.writeHeader(out, container);
- datatypeSerializer.serialize((DataOutput) out, Datatypes.getDatatypeUnchecked(TransferableGraph1.class));
- writeTransferableGraph(processor, source, out, monitor);
+ DataContainers.writeHeader(out, new DataContainer(format, version, metadata, null));
+ writeTransferableGraphVariant(processor, source, out, monitor);
+ }
+ }
+
+ public static void writeTransferableGraph(RequestProcessor processor, TransferableGraphSource source, File target, TGStatusMonitor monitor) throws Exception {
+ try (RandomAccessBinary out = new BinaryFile(target, 128*1024)) {
+ writeTransferableGraphVariant(processor, source, out, monitor);
}
}
+ public static void writeTransferableGraphVariant(RequestProcessor processor, TransferableGraphSource source, RandomAccessBinary out, TGStatusMonitor monitor) throws Exception {
+ Bindings.getSerializerUnchecked(Datatype.class).serialize(out, Datatypes.getDatatypeUnchecked(TransferableGraph1.class));
+ writeTransferableGraph(processor, source, out, monitor);
+ }
+
private static TGStatusMonitor safeMonitor(TGStatusMonitor mon) {
return mon == null ? TGStatusMonitor.NULL_MONITOR : mon;
}
public static TransferableGraph1 create(ReadGraph graph, TransferableGraphSource source) throws DatabaseException {
- final TIntArrayList statements = new TIntArrayList();
- final ArrayList<Value> values = new ArrayList<>();
- final ArrayList<Identity> identities = new ArrayList<>();
-
try {
+ ArrayList<Identity> identities = new ArrayList<>(source.getIdentityCount());
+ source.forIdentities(graph, i -> identities.add(i));
+ TIntArrayList statements = new TIntArrayList(source.getStatementCount());
source.forStatements(graph, r -> statements.addAll(r));
+ ArrayList<Value> values = new ArrayList<>(source.getValueCount());
source.forValues(graph, v -> values.add(v));
- source.forIdentities(graph, i -> identities.add(i));
return new TransferableGraph1(source.getResourceCount(),
identities.toArray(new Identity[identities.size()]),