]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.datatypes/src/org/simantics/datatypes/utils/BTreeContentBean.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.datatypes / src / org / simantics / datatypes / utils / BTreeContentBean.java
1 package org.simantics.datatypes.utils;
2
3 import org.simantics.databoard.binding.mutable.Variant;
4 import org.simantics.databoard.util.Bean;
5 import org.simantics.datatypes.DatatypeResource;
6 import org.simantics.db.ReadGraph;
7 import org.simantics.db.Resource;
8 import org.simantics.db.common.primitiverequest.PossibleRelatedValue;
9 import org.simantics.db.common.procedure.adapter.TransientCacheListener;
10 import org.simantics.db.exception.DatabaseException;
11 import org.simantics.db.service.SerialisationSupport;
12 import org.simantics.db.service.XSupport;
13
14 final public class BTreeContentBean extends Bean {
15         public static int counter = 0;
16         public boolean leaf;
17         public int n;
18         public PossibleVariant[] key;
19         public PossibleResource[] value;
20         public PossibleResource[] c;
21         public BTreeContentBean() {
22         }
23         public static BTreeContentBean create(int t) {
24                 BTreeContentBean result = new BTreeContentBean();
25                 result.leaf = true;
26                 result.n = 0;
27                 result.key = new PossibleVariant[2*t-1];
28                 result.value = new PossibleResource[2*t-1];
29                 for(int i=0;i<2*t-1;i++) {
30                         result.key[i] = new PossibleVariant();
31                         result.value[i] = new PossibleResource();
32                 }
33                 result.c = new PossibleResource[2*t];
34                 for(int i=0;i<2*t;i++) result.c[i] = new PossibleResource();
35                 return result;
36         }
37         
38         public void reduceSize() {
39                 assert (n > 0);
40                 key[n - 1] = new PossibleVariant();
41                 value[n - 1] = new PossibleResource();
42                 c[n] = new PossibleResource();
43                 n--;
44         }
45         
46         public Variant getKey(int index) {
47                 return key[index].v;
48         }
49
50         public Resource getValue(int index) {
51                 return value[index].r;
52         }
53
54         public Resource getChild(int index) {
55                 return c[index].r;
56         }
57
58         public static BTreeContentBean readPossible(ReadGraph graph, Resource r) throws DatabaseException {
59         DatatypeResource DATA = DatatypeResource.getInstance(graph);
60                 SerialisationSupport ss = graph.getService(SerialisationSupport.class);
61                 XSupport xs = graph.getService(XSupport.class);
62                 BTreeContentBinding CONTENT_BEAN_BINDING = new BTreeContentBinding(ss, xs);
63                 return graph.syncRequest(new PossibleRelatedValue<BTreeContentBean>(r, DATA.BTreeNode_content, CONTENT_BEAN_BINDING), TransientCacheListener.<BTreeContentBean>instance());
64         }
65         
66         
67 }