X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=inline;f=bundles%2Forg.simantics.databoard%2Fsrc-isv%2Fdoc%2Faccessor.mediawiki;h=e3942e6aee95a25c0eb6f86d6108e0e0614a91ac;hb=refs%2Fchanges%2F39%2F2739%2F1;hp=6c0ea61f4d63819d47a0b630513e7fe32609f598;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git
diff --git a/bundles/org.simantics.databoard/src-isv/doc/accessor.mediawiki b/bundles/org.simantics.databoard/src-isv/doc/accessor.mediawiki
index 6c0ea61f4..e3942e6ae 100644
--- a/bundles/org.simantics.databoard/src-isv/doc/accessor.mediawiki
+++ b/bundles/org.simantics.databoard/src-isv/doc/accessor.mediawiki
@@ -1,126 +1,126 @@
-=Accessors=
-Say, you have several gigabytes of data in a file. The whole object doesn't need to be serialized at once. You can read and write the value partially using [[svn:foundation/databoard/trunk/org.simantics.databoard/src/org/simantics/databoard/accessor/|Accessor]] interface. The actual container can be a file, memory byte[]/ByteBuffer or a Java Object. The content is structured as tree using Databoard's type system. All but referable records are supported (=no recursion in accessors).
-
-'''[../javadoc/org/simantics/databoard/accessor.html|org.simantics.databoard.accessor] interfaces'''.
-{| style="background-color: #e9e9e9; border: 1px solid #aaaaaa; "
-| '''Class'''
-| '''Description'''
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/Accessor.html|Accessor]
-| Base class for all data Accessors
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/RecordAccessor.html|RecordAccessor]
-| Record
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/ArrayAccessor.html|ArrayAccessor]
-| Array - an ordered sequence of elements of one value.
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/MapAccessor.html|MapAccessor]
-| Map - an ''ordered'' map of keys to values.
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/UnionAccessor.html|UnionAccessor]
-| Union
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/BooleanAccessor.html|BooleanAccessor],[../javadoc/org/simantics/databoard/accessor/IntAccessor.html|IntAccessor],[../javadoc/org/simantics/databoard/accessor/LongAccessor.html|LongAccessor],[../javadoc/org/simantics/databoard/accessor/FloatAccessor.html|FloatAccessor],[../javadoc/org/simantics/databoard/accessor/DoubleAccessor.html|DoubleAccessor]
-| Primitive and numeric Accessors
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/StringAccessor.html|StringAccessor]
-| String
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/OptionalAccessor.html|OptionalAccessor]
-| Optional value
-|- style="background-color: #f9f9f9; " |
-| [../javadoc/org/simantics/databoard/accessor/VariantAccessor.html|VariantAccessor]
-| Variant value
-|}
-
-[../javadoc/org/simantics/databoard/Accessors.html|Accessors] and [../javadoc/org/simantics/databoard/Files.html|Files] are facade classes that contains utilities for instantiating and handling Accessors.
-
-[../javadoc/org/simantics/databoard/accessor/binary/index.html|Binary Accessor]
is an access to a value in binary format (byte[] or ByteBuffer).
-
-'''Example:''' Binary accessor
-
-Datatype type = Datatypes.getDatatype( Rectangle2D.Double.class ); -Binding binding = Bindings.getBinding( Rectangle2D.Double.class ); -Serializer s = Binding.getSerializer( binding ); - -// Serialize rectangle -Rectangle2D rect = new Rectangle2D.Double(0,0, 10, 10); -byte[] data = s.serialize(rect); - -// Open accessor to byte data and modify first field in the byte data -RecordAccessor ra = Accessors.getAccessor(data, type); -ra.setFieldValue(0, Bindings.DOUBLE, 5.0); - -// Deserialize values from the byte data back to the rectangle object -s.deserialize(data, rect); -System.out.println(rect.getX()); -- -'''Example:''' File accessor, create -
-RecordType type = Datatypes.getDatatype( Rectangle2D.Double.class ); -// Create a new file and initialize it with rectangle type, and open file accessor -FileRecordAccessor fa = Accessors.createFile( file, type ); - -// Write the first field (x) -fa.setFieldValue(0, Bindings.DOUBLE, 5.0); -fa.close(); -- -'''Example:''' File accessor, open -
-// Open an accessor to an existing binary file -FileVariantAccessor fa = Accessors.openAccessor(file); -RecordAccessor ra = fa.getContentAccessor(); - -// Read the first field (x) -Double x = (Double) ra.getFieldValue(0, Bindings.DOUBLE); -fa.close(); -- -'''Example:''' Java Accessor -
-Binding binding = Bindings.getBinding(Rectangle2D.Double.class); -Rectangle2D rect = new Rectangle2D.Double(0,0, 10, 10); - -// Open accessor to rectangle -RecordAccessor ra = Accessors.getAccessor(binding, rect); - -// Set rectangle's first field (x) to 5.0 -ra.setFieldValue(0, Bindings.DOUBLE, 5.0); -System.out.println( rect.getX() ); -- - -==Accessor Reference== -Accessors can be opened to a sub-nodes with AccessorReference or by calling getAccessor. AccessorReference is a string of instances, either accessor type specific of LabelReferences. -
- ChildReference ref = ChildReference.compile( - new NameReference("node"), - new ComponentReference() - ); - Accessor child = accessor.getComponent( ref ); - - ChildReference ref = ChildReference.compile( - new LabelReference("node"), - new LabelReference("v") - ); - Accessor child = accessor.getComponent( ref ); - - ChildReference ref = ChildReference.create("n-node/v"); - Accessor child = accessor.getComponent( ref ); - - ChildReference ref = ChildReference.create("node/v"); - Accessor child = accessor.getComponent( ref ); - - VariantAccessor va = recordAccessor.getFieldAccessor("node"); - Accessor child = va.getValueAccessor(); -- -==Listening mechanism== -Accessor offers a monitoring mechanism for the data model. -There is an
[../javadoc/org/simantics/databoard/accessor/interestset/InterestSet.html|InterestSet]
that is a description of a sub-tree that is to be monitored of the data model.
-[../javadoc/org/simantics/databoard/accessor/event/Event.html|Events]
are objects that spawned on changes to the data model. Each event object is annotated with [../javadoc/org/simantics/databoard/accessor/reference/index.html|reference path] that is in relation to the node where the listener was placed.
-
-Accessor Listeners use [EventThread Pattern] pattern.
+=Accessors=
+Say, you have several gigabytes of data in a file. The whole object doesn't need to be serialized at once. You can read and write the value partially using [[svn:foundation/databoard/trunk/org.simantics.databoard/src/org/simantics/databoard/accessor/|Accessor]] interface. The actual container can be a file, memory byte[]/ByteBuffer or a Java Object. The content is structured as tree using Databoard's type system. All but referable records are supported (=no recursion in accessors).
+
+'''[../javadoc/org/simantics/databoard/accessor.html|org.simantics.databoard.accessor] interfaces'''.
+{| style="background-color: #e9e9e9; border: 1px solid #aaaaaa; "
+| '''Class'''
+| '''Description'''
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/Accessor.html|Accessor]
+| Base class for all data Accessors
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/RecordAccessor.html|RecordAccessor]
+| Record
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/ArrayAccessor.html|ArrayAccessor]
+| Array - an ordered sequence of elements of one value.
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/MapAccessor.html|MapAccessor]
+| Map - an ''ordered'' map of keys to values.
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/UnionAccessor.html|UnionAccessor]
+| Union
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/BooleanAccessor.html|BooleanAccessor],[../javadoc/org/simantics/databoard/accessor/IntAccessor.html|IntAccessor],[../javadoc/org/simantics/databoard/accessor/LongAccessor.html|LongAccessor],[../javadoc/org/simantics/databoard/accessor/FloatAccessor.html|FloatAccessor],[../javadoc/org/simantics/databoard/accessor/DoubleAccessor.html|DoubleAccessor]
+| Primitive and numeric Accessors
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/StringAccessor.html|StringAccessor]
+| String
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/OptionalAccessor.html|OptionalAccessor]
+| Optional value
+|- style="background-color: #f9f9f9; " |
+| [../javadoc/org/simantics/databoard/accessor/VariantAccessor.html|VariantAccessor]
+| Variant value
+|}
+
+[../javadoc/org/simantics/databoard/Accessors.html|Accessors] and [../javadoc/org/simantics/databoard/Files.html|Files] are facade classes that contains utilities for instantiating and handling Accessors.
+
+[../javadoc/org/simantics/databoard/accessor/binary/index.html|Binary Accessor]
is an access to a value in binary format (byte[] or ByteBuffer).
+
+'''Example:''' Binary accessor
++Datatype type = Datatypes.getDatatype( Rectangle2D.Double.class ); +Binding binding = Bindings.getBinding( Rectangle2D.Double.class ); +Serializer s = Binding.getSerializer( binding ); + +// Serialize rectangle +Rectangle2D rect = new Rectangle2D.Double(0,0, 10, 10); +byte[] data = s.serialize(rect); + +// Open accessor to byte data and modify first field in the byte data +RecordAccessor ra = Accessors.getAccessor(data, type); +ra.setFieldValue(0, Bindings.DOUBLE, 5.0); + +// Deserialize values from the byte data back to the rectangle object +s.deserialize(data, rect); +System.out.println(rect.getX()); ++ +'''Example:''' File accessor, create +
+RecordType type = Datatypes.getDatatype( Rectangle2D.Double.class ); +// Create a new file and initialize it with rectangle type, and open file accessor +FileRecordAccessor fa = Accessors.createFile( file, type ); + +// Write the first field (x) +fa.setFieldValue(0, Bindings.DOUBLE, 5.0); +fa.close(); ++ +'''Example:''' File accessor, open +
+// Open an accessor to an existing binary file +FileVariantAccessor fa = Accessors.openAccessor(file); +RecordAccessor ra = fa.getContentAccessor(); + +// Read the first field (x) +Double x = (Double) ra.getFieldValue(0, Bindings.DOUBLE); +fa.close(); ++ +'''Example:''' Java Accessor +
+Binding binding = Bindings.getBinding(Rectangle2D.Double.class); +Rectangle2D rect = new Rectangle2D.Double(0,0, 10, 10); + +// Open accessor to rectangle +RecordAccessor ra = Accessors.getAccessor(binding, rect); + +// Set rectangle's first field (x) to 5.0 +ra.setFieldValue(0, Bindings.DOUBLE, 5.0); +System.out.println( rect.getX() ); ++ + +==Accessor Reference== +Accessors can be opened to a sub-nodes with AccessorReference or by calling getAccessor. AccessorReference is a string of instances, either accessor type specific of LabelReferences. +
+ ChildReference ref = ChildReference.compile( + new NameReference("node"), + new ComponentReference() + ); + Accessor child = accessor.getComponent( ref ); + + ChildReference ref = ChildReference.compile( + new LabelReference("node"), + new LabelReference("v") + ); + Accessor child = accessor.getComponent( ref ); + + ChildReference ref = ChildReference.create("n-node/v"); + Accessor child = accessor.getComponent( ref ); + + ChildReference ref = ChildReference.create("node/v"); + Accessor child = accessor.getComponent( ref ); + + VariantAccessor va = recordAccessor.getFieldAccessor("node"); + Accessor child = va.getValueAccessor(); ++ +==Listening mechanism== +Accessor offers a monitoring mechanism for the data model. +There is an
[../javadoc/org/simantics/databoard/accessor/interestset/InterestSet.html|InterestSet]
that is a description of a sub-tree that is to be monitored of the data model.
+[../javadoc/org/simantics/databoard/accessor/event/Event.html|Events]
are objects that spawned on changes to the data model. Each event object is annotated with [../javadoc/org/simantics/databoard/accessor/reference/index.html|reference path] that is in relation to the node where the listener was placed.
+
+Accessor Listeners use [EventThread Pattern] pattern.