]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.datatypes/src/org/simantics/datatypes/utils/BTreeContentBean.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.datatypes / src / org / simantics / datatypes / utils / BTreeContentBean.java
diff --git a/bundles/org.simantics.datatypes/src/org/simantics/datatypes/utils/BTreeContentBean.java b/bundles/org.simantics.datatypes/src/org/simantics/datatypes/utils/BTreeContentBean.java
new file mode 100644 (file)
index 0000000..c35239d
--- /dev/null
@@ -0,0 +1,67 @@
+package org.simantics.datatypes.utils;\r
+\r
+import org.simantics.databoard.binding.mutable.Variant;\r
+import org.simantics.databoard.util.Bean;\r
+import org.simantics.datatypes.DatatypeResource;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.primitiverequest.PossibleRelatedValue;\r
+import org.simantics.db.common.procedure.adapter.TransientCacheListener;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.service.SerialisationSupport;\r
+import org.simantics.db.service.XSupport;\r
+\r
+final public class BTreeContentBean extends Bean {\r
+       public static int counter = 0;\r
+       public boolean leaf;\r
+       public int n;\r
+       public PossibleVariant[] key;\r
+       public PossibleResource[] value;\r
+       public PossibleResource[] c;\r
+       public BTreeContentBean() {\r
+       }\r
+       public static BTreeContentBean create(int t) {\r
+               BTreeContentBean result = new BTreeContentBean();\r
+               result.leaf = true;\r
+               result.n = 0;\r
+               result.key = new PossibleVariant[2*t-1];\r
+               result.value = new PossibleResource[2*t-1];\r
+               for(int i=0;i<2*t-1;i++) {\r
+                       result.key[i] = new PossibleVariant();\r
+                       result.value[i] = new PossibleResource();\r
+               }\r
+               result.c = new PossibleResource[2*t];\r
+               for(int i=0;i<2*t;i++) result.c[i] = new PossibleResource();\r
+               return result;\r
+       }\r
+       \r
+       public void reduceSize() {\r
+               assert (n > 0);\r
+               key[n - 1] = new PossibleVariant();\r
+               value[n - 1] = new PossibleResource();\r
+               c[n] = new PossibleResource();\r
+               n--;\r
+       }\r
+       \r
+       public Variant getKey(int index) {\r
+               return key[index].v;\r
+       }\r
+\r
+       public Resource getValue(int index) {\r
+               return value[index].r;\r
+       }\r
+\r
+       public Resource getChild(int index) {\r
+               return c[index].r;\r
+       }\r
+\r
+       public static BTreeContentBean readPossible(ReadGraph graph, Resource r) throws DatabaseException {\r
+       DatatypeResource DATA = DatatypeResource.getInstance(graph);\r
+               SerialisationSupport ss = graph.getService(SerialisationSupport.class);\r
+               XSupport xs = graph.getService(XSupport.class);\r
+               BTreeContentBinding CONTENT_BEAN_BINDING = new BTreeContentBinding(ss, xs);\r
+               return graph.syncRequest(new PossibleRelatedValue<BTreeContentBean>(r, DATA.BTreeNode_content, CONTENT_BEAN_BINDING), TransientCacheListener.<BTreeContentBean>instance());\r
+       }\r
+       \r
+       \r
+}
\ No newline at end of file