1 package org.simantics.datatypes.utils;
\r
3 import org.simantics.databoard.binding.mutable.Variant;
\r
4 import org.simantics.databoard.util.Bean;
\r
5 import org.simantics.datatypes.DatatypeResource;
\r
6 import org.simantics.db.ReadGraph;
\r
7 import org.simantics.db.Resource;
\r
8 import org.simantics.db.common.primitiverequest.PossibleRelatedValue;
\r
9 import org.simantics.db.common.procedure.adapter.TransientCacheListener;
\r
10 import org.simantics.db.exception.DatabaseException;
\r
11 import org.simantics.db.service.SerialisationSupport;
\r
12 import org.simantics.db.service.XSupport;
\r
14 final public class BTreeContentBean extends Bean {
\r
15 public static int counter = 0;
\r
16 public boolean leaf;
\r
18 public PossibleVariant[] key;
\r
19 public PossibleResource[] value;
\r
20 public PossibleResource[] c;
\r
21 public BTreeContentBean() {
\r
23 public static BTreeContentBean create(int t) {
\r
24 BTreeContentBean result = new BTreeContentBean();
\r
27 result.key = new PossibleVariant[2*t-1];
\r
28 result.value = new PossibleResource[2*t-1];
\r
29 for(int i=0;i<2*t-1;i++) {
\r
30 result.key[i] = new PossibleVariant();
\r
31 result.value[i] = new PossibleResource();
\r
33 result.c = new PossibleResource[2*t];
\r
34 for(int i=0;i<2*t;i++) result.c[i] = new PossibleResource();
\r
38 public void reduceSize() {
\r
40 key[n - 1] = new PossibleVariant();
\r
41 value[n - 1] = new PossibleResource();
\r
42 c[n] = new PossibleResource();
\r
46 public Variant getKey(int index) {
\r
47 return key[index].v;
\r
50 public Resource getValue(int index) {
\r
51 return value[index].r;
\r
54 public Resource getChild(int index) {
\r
58 public static BTreeContentBean readPossible(ReadGraph graph, Resource r) throws DatabaseException {
\r
59 DatatypeResource DATA = DatatypeResource.getInstance(graph);
\r
60 SerialisationSupport ss = graph.getService(SerialisationSupport.class);
\r
61 XSupport xs = graph.getService(XSupport.class);
\r
62 BTreeContentBinding CONTENT_BEAN_BINDING = new BTreeContentBinding(ss, xs);
\r
63 return graph.syncRequest(new PossibleRelatedValue<BTreeContentBean>(r, DATA.BTreeNode_content, CONTENT_BEAN_BINDING), TransientCacheListener.<BTreeContentBean>instance());
\r