]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/TGTransferableGraphSource.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / util / TGTransferableGraphSource.java
1 package org.simantics.db.layer0.util;\r
2 \r
3 import java.io.IOException;\r
4 import java.util.TreeMap;\r
5 \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
18 \r
19 public class TGTransferableGraphSource implements TransferableGraphSource {\r
20 \r
21         final private TransferableGraph1 tg;\r
22         \r
23         public TGTransferableGraphSource(TransferableGraph1 tg) {\r
24                 this.tg = tg;\r
25         }\r
26 \r
27         @Override\r
28         public DataContainer getHeader() throws Exception {\r
29             return null;\r
30         }\r
31         \r
32         @Override\r
33         public int getResourceCount() {\r
34                 return tg.resourceCount;\r
35         }\r
36         \r
37         @Override\r
38         public int getIdentityCount() {\r
39                 return tg.identities.length;\r
40         }\r
41         \r
42         @Override\r
43         public int getStatementCount() {\r
44                 return tg.statements.length;\r
45         }\r
46         \r
47         @Override\r
48         public int getValueCount() {\r
49                 return tg.values.length;\r
50         }\r
51 \r
52         @Override\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
61                 }\r
62         }\r
63 \r
64         @Override\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
68                 }\r
69         }\r
70 \r
71         @Override\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
75                 }\r
76         }\r
77 \r
78     @Override\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
86         }\r
87     }\r
88         \r
89         @Override\r
90         public TreeMap<String, Variant> getExtensions() {\r
91                 return tg.extensions;\r
92         }\r
93     \r
94     @Override\r
95     public void reset() {\r
96     }\r
97 \r
98     @Override\r
99     public void close() {\r
100     }\r
101 \r
102 }\r