1 package org.simantics.db.layer0.util;
\r
3 import java.io.IOException;
\r
4 import java.util.TreeMap;
\r
6 import org.simantics.databoard.Bindings;
\r
7 import org.simantics.databoard.binding.Binding;
\r
8 import org.simantics.databoard.binding.mutable.Variant;
\r
9 import org.simantics.databoard.container.DataContainer;
\r
10 import org.simantics.databoard.serialization.Serializer;
\r
11 import org.simantics.databoard.type.Datatype;
\r
12 import org.simantics.databoard.util.binary.ByteBufferReadable;
\r
13 import org.simantics.db.ReadGraph;
\r
14 import org.simantics.graph.db.TransferableGraphSource;
\r
15 import org.simantics.graph.representation.Identity;
\r
16 import org.simantics.graph.representation.TransferableGraph1;
\r
17 import org.simantics.graph.representation.Value;
\r
19 public class TGTransferableGraphSource implements TransferableGraphSource {
\r
21 final private TransferableGraph1 tg;
\r
23 public TGTransferableGraphSource(TransferableGraph1 tg) {
\r
28 public DataContainer getHeader() throws Exception {
\r
33 public int getResourceCount() {
\r
34 return tg.resourceCount;
\r
38 public int getIdentityCount() {
\r
39 return tg.identities.length;
\r
43 public int getStatementCount() {
\r
44 return tg.statements.length;
\r
48 public int getValueCount() {
\r
49 return tg.values.length;
\r
53 public void forStatements(ReadGraph graph, TransferableGraphSourceProcedure<int[]> procedure) throws Exception {
\r
54 int[] value = new int[4];
\r
55 for(int i=0;i<tg.statements.length;i+=4) {
\r
56 value[0] = tg.statements[i];
\r
57 value[1] = tg.statements[i+1];
\r
58 value[2] = tg.statements[i+2];
\r
59 value[3] = tg.statements[i+3];
\r
60 procedure.execute(value);
\r
65 public void forIdentities(ReadGraph graph, TransferableGraphSourceProcedure<Identity> procedure) throws Exception {
\r
66 for(int i=0;i<tg.identities.length;i++) {
\r
67 procedure.execute(tg.identities[i]);
\r
72 public void forValues(ReadGraph graph, TransferableGraphSourceProcedure<Value> procedure) throws Exception {
\r
73 for(int i=0;i<tg.values.length;i++) {
\r
74 procedure.execute(tg.values[i]);
\r
79 public void forValues2(ReadGraph graph, TransferableGraphSourceValueProcedure procedure) throws Exception {
\r
80 for(int i=0;i<tg.values.length;i++) {
\r
81 Value value = tg.values[i];
\r
82 Binding binding = value.value.getBinding();
\r
83 Datatype dt = binding.type();
\r
84 Serializer s = Bindings.getSerializer(binding);
\r
85 procedure.execute(value.resource, dt, new ByteBufferReadable(s.serialize(value.value.getValue(binding))));
\r
90 public TreeMap<String, Variant> getExtensions() {
\r
91 return tg.extensions;
\r
95 public void reset() {
\r
99 public void close() {
\r