1 package org.simantics.datatypes.utils;
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;
14 final public class BTreeContentBean extends Bean {
15 public static int counter = 0;
18 public PossibleVariant[] key;
19 public PossibleResource[] value;
20 public PossibleResource[] c;
21 public BTreeContentBean() {
23 public static BTreeContentBean create(int t) {
24 BTreeContentBean result = new BTreeContentBean();
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();
33 result.c = new PossibleResource[2*t];
34 for(int i=0;i<2*t;i++) result.c[i] = new PossibleResource();
38 public void reduceSize() {
40 key[n - 1] = new PossibleVariant();
41 value[n - 1] = new PossibleResource();
42 c[n] = new PossibleResource();
46 public Variant getKey(int index) {
50 public Resource getValue(int index) {
51 return value[index].r;
54 public Resource getChild(int index) {
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());