Nuxeo ECM Projects 5.4.3-SNAPSHOT

org.nuxeo.ecm.core.api.model.impl
Class ComplexProperty

java.lang.Object
  extended by org.nuxeo.ecm.core.api.model.impl.AbstractProperty
      extended by org.nuxeo.ecm.core.api.model.impl.ComplexProperty
All Implemented Interfaces:
Serializable, Cloneable, Iterable<Property>, Map<String,Property>, Property
Direct Known Subclasses:
DocumentPartImpl, MapProperty

public abstract class ComplexProperty
extends AbstractProperty
implements Map<String,Property>

A scalar property that is linked to a schema field

Author:
Bogdan Stefanescu
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Field Summary
 
Fields inherited from class org.nuxeo.ecm.core.api.model.impl.AbstractProperty
IS_READONLY, IS_VALIDATING, KEYED_DATA
 
Fields inherited from interface org.nuxeo.ecm.core.api.model.Property
DIRTY_MASK, IS_DIRTY, IS_MODIFIED, IS_MOVED, IS_NEW, IS_PHANTOM, IS_REMOVED, NONE
 
Method Summary
 Property addEmpty()
          Creates an empty child property and adds it as a property to the list container.
 Property addValue(int index, Object value)
          Inserts at the given position a new value to the list.
 Property addValue(Object value)
          Appends a new value to the list.
 void clear()
          Throws UnsupportedOperationException, added to implement List interface
 boolean containsKey(Object key)
          Throws UnsupportedOperationException, added to implement List interface
 boolean containsValue(Object value)
          Throws UnsupportedOperationException, added to implement List interface
 Set<Map.Entry<String,Property>> entrySet()
           
 Property get(int index)
          Get the child property given it's index.
 Property get(Object key)
           
 Property get(String name)
          Gets the child property having the given name.
 Property getChild(Field field)
           
 Collection<Property> getChildren()
          Get a collection over the children properties.
 Iterator<Property> getDirtyChildren()
          Gets an iterator over the dirty children properties.
 Property getNonPhantomChild(Field field)
           
 Collection<Property> getNonPhantomChildren()
           
abstract  ComplexType getType()
          Get the type of the field corresponding to this property.
 Serializable getValueForWrite()
          Gets the property normalized value for write.
 void init(Serializable value)
          Initializes the property with the given normalized value.
 Serializable internalGetValue()
           
 boolean isEmpty()
           
 boolean isNormalized(Object value)
          Checks if the given value is a normalized one.
 boolean isSameAs(Property property)
          Should be used by container properties.
 Set<String> keySet()
           
 Serializable normalize(Object value)
          Normalizes the given value as dictated by the property type.
 Property put(String key, Property value)
          Throws UnsupportedOperationException, added to implement List interface
 void putAll(Map<? extends String,? extends Property> t)
          Throws UnsupportedOperationException, added to implement List interface
 Property remove(Object key)
          Throws UnsupportedOperationException, added to implement List interface
 void setValue(Object value)
          Sets this property value.
 Collection<Property> values()
           
 void visitChildren(PropertyVisitor visitor, Object arg)
           
 
Methods inherited from class org.nuxeo.ecm.core.api.model.impl.AbstractProperty
areFlagsSet, clearDirtyFlags, clearFlags, convertTo, getData, getData, getDirtyFlags, getParent, getPath, getRoot, getSchema, getValue, getValue, getValue, getValue, internalSetValue, isComplex, isDirty, isList, isModified, isMoved, isNew, isPhantom, isReadOnly, isRemoved, isScalar, isValidating, iterator, moveTo, newInstance, remove, removePhantomFlag, resolvePath, resolvePath, setData, setData, setFlags, setIsModified, setReadOnly, setValidating, setValue, setValue, size, toString, validate, validateType
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode, size
 
Methods inherited from interface org.nuxeo.ecm.core.api.model.Property
accept, getField, getName, isContainer
 

Method Detail

getType

public abstract ComplexType getType()
Description copied from interface: Property
Get the type of the field corresponding to this property.

Specified by:
getType in interface Property
Returns:
the property type

isNormalized

public boolean isNormalized(Object value)
Description copied from interface: Property
Checks if the given value is a normalized one. This means the value has a type that is normalized.

Null values are considered as normalized.

Specified by:
isNormalized in interface Property
Overrides:
isNormalized in class AbstractProperty
Parameters:
value - the value to check
Returns:
true if the value is normalized false otherwise

normalize

public Serializable normalize(Object value)
                       throws PropertyConversionException
Description copied from interface: Property
Normalizes the given value as dictated by the property type.

Normalized values are the ones that are used for transportation over the net and that are given to the storage implementation to be stored in the repository

Normalized values must be Serializable

If the given value is already normalized it will be returned back.

Specified by:
normalize in interface Property
Overrides:
normalize in class AbstractProperty
Parameters:
value - the value to normalize according to the property type
Returns:
the normalized value
Throws:
PropertyConversionException

get

public Property get(int index)
Description copied from interface: Property
Get the child property given it's index. This operation is mandatory for List properties.

If this method is not supported an UnsupportedOperationException must be thrown

Relative paths are not resolved. THis method is intended to lookup direct chilren. For path lookups, use Property.resolvePath(String) instead.

Specified by:
get in interface Property
Returns:
the child property if any null if no child property with that name is found or if the property is a scalar

getNonPhantomChild

public final Property getNonPhantomChild(Field field)

getChild

public final Property getChild(Field field)

getNonPhantomChildren

public final Collection<Property> getNonPhantomChildren()

getChildren

public Collection<Property> getChildren()
Description copied from interface: Property
Get a collection over the children properties. This includes all children including phantom ones (those who are not yet set by the user).

The returned collection is ordered for list properties, and unordered for complex properties

Be aware that this method is creating phantom child properties for all schema fields that are not yet set.

Specified by:
getChildren in interface Property
Returns:
the children properties

get

public Property get(String name)
             throws PropertyNotFoundException
Description copied from interface: Property
Gets the child property having the given name.

If the property is a scalar, this will return always null.

The given name should be the full name (i.e. prefixed name if any prefix exists).

If a non prefixed name is given, the first child property having the given local name will be returned.

Relative paths are not resolved. THis method is intended to lookup direct children. For path lookups use Property.resolvePath(String) instead.

Specified by:
get in interface Property
Parameters:
name - the child property name (the full name including the prefix if any)
Returns:
the child property if any null if no child property with that name is found or if the property is a scalar
Throws:
PropertyNotFoundException

internalGetValue

public Serializable internalGetValue()
                              throws PropertyException
Specified by:
internalGetValue in class AbstractProperty
Throws:
PropertyException

getValueForWrite

public Serializable getValueForWrite()
                              throws PropertyException
Description copied from interface: Property
Gets the property normalized value for write.

Can be different fropm Property.getValue() in cases where the property adapts the value it is given to store.

Specified by:
getValueForWrite in interface Property
Overrides:
getValueForWrite in class AbstractProperty
Returns:
the property value to use for write, which may be null
Throws:
PropertyException

init

public void init(Serializable value)
          throws PropertyException
Description copied from interface: Property
Initializes the property with the given normalized value.

The given value must be normalized - note that no check is done on that.

The phantom flag is unset by this operation.

This method should be used to initialize properties.

Specified by:
init in interface Property
Overrides:
init in class AbstractProperty
Parameters:
value - the normalized value to set
Throws:
PropertyException

setValue

public void setValue(Object value)
              throws PropertyException
Description copied from interface: Property
Sets this property value. The value will be first normalized and then set.

For complex or list properties the value will be set recursively (as a map or list value).

Specified by:
setValue in interface Property
Overrides:
setValue in class AbstractProperty
Parameters:
value - the value to set
Throws:
PropertyException

addValue

public Property addValue(Object value)
Description copied from interface: Property
Appends a new value to the list. A new property will be created to store the given value and appended to the children list.

The created property will be marked as Property.isNew().

Specified by:
addValue in interface Property
Returns:
the added property

addValue

public Property addValue(int index,
                         Object value)
Description copied from interface: Property
Inserts at the given position a new value to the list. A new property will be created to store the given value and appended to the children list.

The created property will be marked as Property.isNew().

Specified by:
addValue in interface Property
Parameters:
index - the position to insert the value
Returns:
the added property

addEmpty

public Property addEmpty()
Description copied from interface: Property
Creates an empty child property and adds it as a property to the list container.

This method is useful to construct lists.

Specified by:
addEmpty in interface Property
Returns:
the created property

visitChildren

public void visitChildren(PropertyVisitor visitor,
                          Object arg)
                   throws PropertyException
Throws:
PropertyException

isSameAs

public boolean isSameAs(Property property)
                 throws PropertyException
Should be used by container properties. Non container props must overwrite this.

Specified by:
isSameAs in interface Property
Returns:
true If the properties have a similar content, otherwise false
Throws:
PropertyException

getDirtyChildren

public Iterator<Property> getDirtyChildren()
Description copied from interface: Property
Gets an iterator over the dirty children properties.

Specified by:
getDirtyChildren in interface Property
Returns:
the iterator

clear

public void clear()
Throws UnsupportedOperationException, added to implement List interface

Specified by:
clear in interface Map<String,Property>

containsKey

public boolean containsKey(Object key)
Throws UnsupportedOperationException, added to implement List interface

Specified by:
containsKey in interface Map<String,Property>

containsValue

public boolean containsValue(Object value)
Throws UnsupportedOperationException, added to implement List interface

Specified by:
containsValue in interface Map<String,Property>

entrySet

public Set<Map.Entry<String,Property>> entrySet()
Specified by:
entrySet in interface Map<String,Property>

get

public Property get(Object key)
Specified by:
get in interface Map<String,Property>

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Map<String,Property>

keySet

public Set<String> keySet()
Specified by:
keySet in interface Map<String,Property>

put

public Property put(String key,
                    Property value)
Throws UnsupportedOperationException, added to implement List interface

Specified by:
put in interface Map<String,Property>

putAll

public void putAll(Map<? extends String,? extends Property> t)
Throws UnsupportedOperationException, added to implement List interface

Specified by:
putAll in interface Map<String,Property>

remove

public Property remove(Object key)
Throws UnsupportedOperationException, added to implement List interface

Specified by:
remove in interface Map<String,Property>

values

public Collection<Property> values()
Specified by:
values in interface Map<String,Property>

Nuxeo ECM Projects 5.4.3-SNAPSHOT

Copyright © 2011 Nuxeo SAS. All Rights Reserved.