org.simantics.databoard.binding
Class VariantBinding

java.lang.Object
  extended by org.simantics.databoard.binding.Binding
      extended by org.simantics.databoard.binding.VariantBinding
All Implemented Interfaces:
java.util.Comparator<java.lang.Object>
Direct Known Subclasses:
ObjectVariantBinding, StringVariantBinding, VariantContainerBinding

public abstract class VariantBinding
extends Binding

This is an abstract binding of VariantType to a Java Object. Variant is a container for datavalue of any Datatype.

Author:
Toni Kalajainen
See Also:
The Datatype, Binds variant to {@link Variant}, Binds variant to java.lang.Object, Binds variant to java.lang.String (Filename and URL compatible)

Nested Class Summary
 
Nested classes/interfaces inherited from class org.simantics.databoard.binding.Binding
Binding.Visitor<T>, Binding.Visitor1
 
Constructor Summary
VariantBinding()
           
 
Method Summary
<T> T
accept(Binding.Visitor<T> v)
           
 void accept(Binding.Visitor1 v, java.lang.Object obj)
           
abstract  java.lang.Object create(java.lang.Object value, Binding binding)
          Create a new variant object.
 java.lang.Object createUnchecked(java.lang.Object value, Binding binding)
           
 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  Binding getBinding(java.lang.Object variant)
          Returns a suggestion for the binding of the value of the variant.
abstract  DataType getType(java.lang.Object variant)
           
abstract  java.lang.Object getValue(java.lang.Object variant)
          Get the value of the variant.
abstract  java.lang.Object getValue(java.lang.Object variant, Binding binding)
          Get the value in the variant.
abstract  void setValue(java.lang.Object variant, java.lang.Object value, Binding binding)
          Set the value of an existing variant container.
 
Methods inherited from class org.simantics.databoard.binding.Binding
assertInstaceIsValid, assertInstaceIsValid, clone, cloneUnchecked, compare, createDefault, createDefaultUnchecked, createRandom, createRandomUnchecked, equals, hashValue, isImmutable, isInstance, parseValue, parseValue, parseValueDefinition, printValue, printValueDefinition, serializer, serializer, serializerUnchecked, type
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Comparator
equals
 

Constructor Detail

VariantBinding

public VariantBinding()
Method Detail

getValue

public abstract java.lang.Object getValue(java.lang.Object variant,
                                          Binding binding)
                                   throws BindingException
Get the value in the variant. The returned value may represent internal value of variant.

Parameters:
variant -
binding -
Returns:
value
Throws:
BindingException

getValue

public abstract java.lang.Object getValue(java.lang.Object variant)
                                   throws BindingException
Get the value of the variant. The value is bound with the suggested binding, see getBinding(Object).

Parameters:
variant -
Returns:
value
Throws:
BindingException

getType

public abstract DataType getType(java.lang.Object variant)
                          throws BindingException
Throws:
BindingException

create

public abstract java.lang.Object create(java.lang.Object value,
                                        Binding binding)
                                 throws BindingException
Create a new variant object. The value argument may be included in the result.

Parameters:
value -
binding -
Returns:
variant
Throws:
BindingException

createUnchecked

public java.lang.Object createUnchecked(java.lang.Object value,
                                        Binding binding)
                                 throws RuntimeBindingException
Throws:
RuntimeBindingException

getBinding

public abstract Binding getBinding(java.lang.Object variant)
                            throws BindingException
Returns a suggestion for the binding of the value of the variant. The binding is a suggestion for most optimal usage.

Parameters:
variant -
Returns:
binding
Throws:
BindingException

setValue

public abstract void setValue(java.lang.Object variant,
                              java.lang.Object value,
                              Binding binding)
                       throws BindingException
Set the value of an existing variant container. Note, This is not implemented in all bindings.

Parameters:
variant -
value -
binding -
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

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