org.simantics.databoard.binding
Class ArrayBinding

java.lang.Object
  extended by org.simantics.databoard.binding.Binding
      extended by org.simantics.databoard.binding.ArrayBinding
All Implemented Interfaces:
java.util.Comparator<java.lang.Object>
Direct Known Subclasses:
ArrayListBinding, BooleanArrayBinding, ByteArrayBinding, DoubleArrayBinding, FloatArrayBinding, GenericArrayBinding, IntArrayBinding, LinkedListBinding, LongArrayBinding, ObjectArrayBinding, PriorityQueueBinding, StringArrayBinding

public abstract class ArrayBinding
extends Binding

This is a binding of Array type and a Java Object.

Author:
Toni Kalajainen
See Also:
ArrayType, for Binding of java.util.ArrayList, for Binding of java.util.LinkedList, for Binding of Object[], for primitive array int[] binding, for primitive array byte[] binding, for primitive array long[] binding, for primitive array double[] binding, for primitive array float[] binding

Nested Class Summary
 
Nested classes/interfaces inherited from class org.simantics.databoard.binding.Binding
Binding.Visitor<T>, Binding.Visitor1
 
Field Summary
 Binding componentBinding
           
 
Constructor Summary
ArrayBinding(ArrayType type, Binding componentBinding)
           
 
Method Summary
<T> T
accept(Binding.Visitor<T> v)
           
 void accept(Binding.Visitor1 v, java.lang.Object obj)
           
abstract  void add(java.lang.Object array, int index, java.lang.Object element)
           
 void add(java.lang.Object array, java.lang.Object element)
           
 void assertInstaceIsValid(java.lang.Object obj, java.util.Set<java.lang.Object> validInstances)
          Assert the instance is valid and follows restrictions set in data type.
abstract  java.lang.Object create()
          Create a new empty array
 java.lang.Object create(java.util.Collection<java.lang.Object> collection)
          Create a new array with initial values copied or referred from a collection.
 java.lang.Object create(int length)
           
abstract  java.lang.Object create(int length, java.util.Iterator<java.lang.Object> values)
          Create new array instance with initial values possibly borrowed from an interator.
abstract  java.lang.Object create(java.lang.Object[] array)
          Create Array with initial values possibly borrowed from an java.lang.Array
 java.lang.Object createUnchecked(java.lang.Object... array)
           
 int deepCompare(java.lang.Object o1, java.lang.Object o2, java.util.Set<IdentityPair<java.lang.Object,java.lang.Object>> compareHistory)
           
 int deepHashValue(java.lang.Object value, java.util.IdentityHashMap<java.lang.Object,java.lang.Object> hashedObjects)
          Calculate hash value
abstract  java.lang.Object get(java.lang.Object array, int index)
           
abstract  void getAll(java.lang.Object array, java.lang.Object[] result)
           
 Binding getComponentBinding()
           
 Binding getComponentBinding(ChildReference path)
          Get component binding
 Binding getComponentBinding(int index)
          Get component binding
 int getComponentCount()
          Get the number of component bindings
 boolean isImmutable()
          Returns true if array length can be modified.
abstract  boolean isResizable()
          Return true if the array's size can be adjusted and false if not
 void readFrom(Binding srcBinding, java.lang.Object src, java.lang.Object dst)
          Read values from one object to another.
 void remove(java.lang.Object array, int index)
           
abstract  void remove(java.lang.Object array, int index, int count)
           
abstract  void set(java.lang.Object array, int index, java.lang.Object value)
           
abstract  void setSize(java.lang.Object array, int newSize)
           
abstract  int size(java.lang.Object array)
           
 ArrayType type()
          Get Value Type
 
Methods inherited from class org.simantics.databoard.binding.Binding
assertInstaceIsValid, clone, cloneUnchecked, compare, createDefault, createDefaultUnchecked, createRandom, createRandom, createRandom, createRandomUnchecked, equals, hashValue, isInstance, parseValue, parseValue, parseValueDefinition, printValue, printValueDefinition, readFromTry, readFromTryUnchecked, readFromUnchecked, serializer, toString, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Comparator
equals
 

Field Detail

componentBinding

public Binding componentBinding
Constructor Detail

ArrayBinding

public ArrayBinding(ArrayType type,
                    Binding componentBinding)
Method Detail

getComponentBinding

public Binding getComponentBinding(ChildReference path)
Description copied from class: Binding
Get component binding

Specified by:
getComponentBinding in class Binding
Parameters:
path - child path or null to return this.
Returns:
binding

isImmutable

public boolean isImmutable()
Returns true if array length can be modified.

Overrides:
isImmutable in class Binding
Returns:
true if array length can be modified, false if not

isResizable

public abstract boolean isResizable()
Return true if the array's size can be adjusted and false if not

Returns:
true if array is resizable

type

public ArrayType type()
Description copied from class: Binding
Get Value Type

Overrides:
type in class Binding
Returns:
value type

getComponentBinding

public Binding getComponentBinding()

create

public abstract java.lang.Object create()
Create a new empty array

Returns:
array object

create

public java.lang.Object create(java.util.Collection<java.lang.Object> collection)
                        throws BindingException
Create a new array with initial values copied or referred from a collection.

Parameters:
collection -
Returns:
array object
Throws:
BindingException

create

public abstract java.lang.Object create(int length,
                                        java.util.Iterator<java.lang.Object> values)
                                 throws BindingException
Create new array instance with initial values possibly borrowed from an interator.

The implementation iterate the iterator before returning.

Parameters:
length - array length
values - value iterator
Returns:
new instance
Throws:
BindingException

create

public java.lang.Object create(int length)
                        throws BindingException
Parameters:
length -
Returns:
Throws:
BindingException

create

public abstract java.lang.Object create(java.lang.Object[] array)
                                 throws BindingException
Create Array with initial values possibly borrowed from an java.lang.Array

Parameters:
array -
Returns:
array of ArrayType
Throws:
BindingException

createUnchecked

public java.lang.Object createUnchecked(java.lang.Object... array)
                                 throws RuntimeBindingException
Throws:
RuntimeBindingException

readFrom

public void readFrom(Binding srcBinding,
                     java.lang.Object src,
                     java.lang.Object dst)
              throws BindingException
Description copied from class: Binding
Read values from one object to another.

Specified by:
readFrom in class Binding
dst - valid object of this binding
Throws:
BindingException

add

public void add(java.lang.Object array,
                java.lang.Object element)
         throws BindingException
Throws:
BindingException

add

public abstract void add(java.lang.Object array,
                         int index,
                         java.lang.Object element)
                  throws BindingException,
                         java.lang.IndexOutOfBoundsException
Throws:
BindingException
java.lang.IndexOutOfBoundsException

remove

public void remove(java.lang.Object array,
                   int index)
            throws BindingException,
                   java.lang.IndexOutOfBoundsException
Throws:
BindingException
java.lang.IndexOutOfBoundsException

remove

public abstract void remove(java.lang.Object array,
                            int index,
                            int count)
                     throws BindingException,
                            java.lang.IndexOutOfBoundsException
Throws:
BindingException
java.lang.IndexOutOfBoundsException

get

public abstract java.lang.Object get(java.lang.Object array,
                                     int index)
                              throws BindingException,
                                     java.lang.IndexOutOfBoundsException
Throws:
BindingException
java.lang.IndexOutOfBoundsException

getAll

public abstract void getAll(java.lang.Object array,
                            java.lang.Object[] result)
                     throws BindingException
Throws:
BindingException

set

public abstract void set(java.lang.Object array,
                         int index,
                         java.lang.Object value)
                  throws BindingException
Throws:
BindingException

setSize

public abstract void setSize(java.lang.Object array,
                             int newSize)
                      throws BindingException
Throws:
BindingException

size

public abstract int size(java.lang.Object array)
                  throws BindingException
Throws:
BindingException

accept

public void accept(Binding.Visitor1 v,
                   java.lang.Object obj)
Specified by:
accept in class Binding

accept

public <T> T accept(Binding.Visitor<T> v)
Specified by:
accept in class Binding

assertInstaceIsValid

public void assertInstaceIsValid(java.lang.Object obj,
                                 java.util.Set<java.lang.Object> validInstances)
                          throws BindingException
Assert the instance is valid and follows restrictions set in data type. Assertions: 1. The Length of the array meets ArrayType range 2. Recursive assertion of each element

Specified by:
assertInstaceIsValid in class Binding
Parameters:
obj - the instance
validInstances - optional set of already validated instances
Throws:
BindingException - on invalid instance

deepHashValue

public int deepHashValue(java.lang.Object value,
                         java.util.IdentityHashMap<java.lang.Object,java.lang.Object> hashedObjects)
                  throws BindingException
Description copied from class: Binding
Calculate hash value

Specified by:
deepHashValue in class Binding
hashedObjects - collection of already hashed object or optionally null
Returns:
hash value
Throws:
BindingException

deepCompare

public int deepCompare(java.lang.Object o1,
                       java.lang.Object o2,
                       java.util.Set<IdentityPair<java.lang.Object,java.lang.Object>> compareHistory)
                throws BindingException
Specified by:
deepCompare in class Binding
Throws:
BindingException

getComponentCount

public int getComponentCount()
Get the number of component bindings

Specified by:
getComponentCount in class Binding
Returns:
component count

getComponentBinding

public Binding getComponentBinding(int index)
Description copied from class: Binding
Get component binding

Specified by:
getComponentBinding in class Binding
Returns:
binding