]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/ClusterBuilderImpl.java
Merge commit 'a2a4242'
[simantics/platform.git] / bundles / org.simantics.db.procore / src / fi / vtt / simantics / procore / internal / ClusterBuilderImpl.java
1 package fi.vtt.simantics.procore.internal;\r
2 \r
3 import org.simantics.db.Resource;\r
4 import org.simantics.db.exception.DatabaseException;\r
5 import org.simantics.db.impl.ClusterI;\r
6 import org.simantics.db.impl.ClusterTraitsBase;\r
7 import org.simantics.db.impl.ResourceImpl;\r
8 import org.simantics.db.procore.cluster.ClusterImpl;\r
9 import org.simantics.db.service.ClusterBuilder;\r
10 import org.simantics.db.service.ClusterUID;\r
11 \r
12 import fi.vtt.simantics.procore.internal.SessionImplSocket.WriteOnlySupport;\r
13 \r
14 public class ClusterBuilderImpl implements ClusterBuilder {\r
15     \r
16     final private ClusterTable clusterTable;\r
17     final private ClusterStream stream;\r
18     final private WriteOnlySupport support;\r
19     \r
20     ClusterBuilderImpl(SessionImplSocket session, WriteOnlySupport support) {\r
21         this.support = support;\r
22         this.stream = support.stream;\r
23         this.clusterTable = session.clusterTable;\r
24     }\r
25 \r
26     @Override\r
27     public void newCluster() throws DatabaseException {\r
28         support.flushCluster();\r
29     }\r
30     \r
31     @Override\r
32     public ResourceHandle newResource() throws DatabaseException {\r
33         return new ResourceHandleImpl(support);\r
34     }\r
35     \r
36     @Override\r
37     public ResourceHandle resource(Resource res) throws DatabaseException {\r
38         ResourceImpl r = (ResourceImpl)res;\r
39         int clusterKey = ClusterTraitsBase.getClusterKeyFromResourceKey(r.id);\r
40         ClusterI cluster = clusterTable.getClusterByClusterKey(clusterKey);\r
41         return new ResourceHandleImpl(stream, (ClusterImpl)cluster, r.id);\r
42     }\r
43 \r
44     @Override\r
45     public StatementHandle newStatement(ResourceHandle predicate, ResourceHandle object) throws DatabaseException {\r
46         ResourceHandleImpl p = (ResourceHandleImpl)predicate;\r
47         ResourceHandleImpl o = (ResourceHandleImpl)object;\r
48         int pResourceIndex = ClusterTraitsBase.getResourceIndexFromResourceKey(p.resourceKey);\r
49         ClusterI pCluster = clusterTable.getClusterByClusterKey(pResourceIndex);\r
50         ClusterUID pClusterUID = pCluster.getClusterUID();\r
51         int oResourceIndex = ClusterTraitsBase.getResourceIndexFromResourceKey(p.resourceKey);\r
52         ClusterI oCluster = clusterTable.getClusterByClusterKey(oResourceIndex);\r
53         ClusterUID oClusterUID = oCluster.getClusterUID();\r
54         return new StatementHandleImpl(p.resourceKey, (byte)0, o.resourceKey, (byte)0, pClusterUID,  oClusterUID);\r
55     }\r
56 \r
57 }\r