org.openxava.util
Class PropertiesManager

java.lang.Object
  extended by org.openxava.util.PropertiesManager
All Implemented Interfaces:
java.io.Serializable

public class PropertiesManager
extends java.lang.Object
implements java.io.Serializable

Manages with reflection the properties of a object.

Excludes automatically the property class of Object and the indexed properties with no indexed access.

Author:
Javier Paniza
See Also:
Serialized Form

Constructor Summary
PropertiesManager()
           
PropertiesManager(java.lang.Class theClass)
          Constructor from a the class of the object to manage.
PropertiesManager(java.lang.Object object)
          Constructor from the object to manage.
 
Method Summary
 java.lang.Object executeGet(java.lang.String propertyName)
          Gets the value of the indicated property.
 java.util.Map executeGets(java.lang.String properties)
          Gets a group of property values in a map.
 void executeSet(java.lang.String propertyName, java.lang.Object value)
          Update property.
 void executeSetFromString(java.lang.String propertyName, java.lang.Object value)
          Update property from a string, making needed conversions.
 void executeSets(java.util.Map properties)
          Sets property values from a map.
 void executeSetsFromStrings(java.util.Map properties)
          Sets property values from a map, trying to convert strings to value of valid type for properties.
 boolean exists(java.lang.String propertyName)
          If the property exists.
 java.lang.Object getObject()
          Object of which the properties are handled.
 java.lang.String[] getPropertiesNames()
          Names of all properties managed by this.
 java.beans.PropertyDescriptor getPropertyDescriptor(java.lang.String propertyName)
           
 java.lang.String[] getReadablesPropertiesNames()
          Names of all properties managed by this with getter method.
 java.lang.String[] getWritablesPropertiesNames()
          Names of all properties managed by this with setter method.
 boolean hasGetter(java.lang.String propertyName)
          If the property has getter.
 boolean hasSetter(java.lang.String propertyName)
          If the property has setter.
 void setObject(java.lang.Object newObject)
          Object of which the properties are handled.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PropertiesManager

public PropertiesManager()

PropertiesManager

public PropertiesManager(java.lang.Class theClass)
Constructor from a the class of the object to manage. This initial value can change in the life of this.


PropertiesManager

public PropertiesManager(java.lang.Object object)
Constructor from the object to manage.

Parameters:
object - Object to manage
Method Detail

executeGet

public java.lang.Object executeGet(java.lang.String propertyName)
                            throws java.lang.reflect.InvocationTargetException,
                                   PropertiesManagerException
Gets the value of the indicated property.

Parameters:
propertyName - Property name to obtain its value, can be qualified (that is: 'customer.address.street' for example)
Returns:
Value of the property
Throws:
java.lang.reflect.InvocationTargetException - Exception originated by the original access method
PropertiesManagerException - Some unexpected problem

executeGets

public java.util.Map executeGets(java.lang.String properties)
                          throws java.lang.reflect.InvocationTargetException,
                                 PropertiesManagerException
Gets a group of property values in a map.

Precondition

Parameters:
properties - Names of properties to get, separated by colon (:). The properties must to exist in the object. If properties is null a empty map is returned.
Returns:
Map with String propertyName:Object value. Not null.
Throws:
java.lang.reflect.InvocationTargetException - Exception originated by original access method
PropertiesManagerException - Some unexpected problem

executeSet

public void executeSet(java.lang.String propertyName,
                       java.lang.Object value)
                throws java.lang.reflect.InvocationTargetException,
                       PropertiesManagerException
Update property.

Precondition

Parameters:
propertyName - Property name to update
value - New value for property. Has to be of compatible type. If value is a Map and the property type is not a map then convert the map in an object of the property type.
Throws:
java.lang.reflect.InvocationTargetException - Excepction originated from original access method
PropertiesManagerException - Any unexpected problem

executeSetFromString

public void executeSetFromString(java.lang.String propertyName,
                                 java.lang.Object value)
                          throws java.lang.reflect.InvocationTargetException,
                                 PropertiesManagerException
Update property from a string, making needed conversions.

Precondition

Parameters:
propertyName - Name of property to update
value - New value for property. Must to be a compatible type or a string parseable to a compatible type.
Throws:
java.lang.reflect.InvocationTargetException - Exception from original access method
PropertiesManagerException - Any unexpected problem

executeSets

public void executeSets(java.util.Map properties)
                 throws java.lang.reflect.InvocationTargetException,
                        PropertiesManagerException
Sets property values from a map.

Precondition

Supports nested Maps.

Parameters:
properties - Map with String propertyName:Object value. Null is assumed as empty map
Throws:
java.lang.reflect.InvocationTargetException - Excepcion from original access method
PropertiesManagerException - Any unexpected method

executeSetsFromStrings

public void executeSetsFromStrings(java.util.Map properties)
                            throws java.lang.reflect.InvocationTargetException,
                                   PropertiesManagerException
Sets property values from a map, trying to convert strings to value of valid type for properties.

Precondition

Parameters:
properties - Map with String propertyName:Object value. Null is assumed as empty map
Throws:
java.lang.reflect.InvocationTargetException - Excepcion from original access method
PropertiesManagerException - Any unexpected method

exists

public boolean exists(java.lang.String propertyName)
               throws PropertiesManagerException
If the property exists.

Throws:
PropertiesManagerException

getPropertiesNames

public java.lang.String[] getPropertiesNames()
                                      throws PropertiesManagerException
Names of all properties managed by this.

Returns:
Not null
Throws:
PropertiesManagerException

getWritablesPropertiesNames

public java.lang.String[] getWritablesPropertiesNames()
                                               throws PropertiesManagerException
Names of all properties managed by this with setter method.

Returns:
Not null
Throws:
PropertiesManagerException

getReadablesPropertiesNames

public java.lang.String[] getReadablesPropertiesNames()
                                               throws PropertiesManagerException
Names of all properties managed by this with getter method.

Returns:
Not null
Throws:
PropertiesManagerException

getObject

public java.lang.Object getObject()
Object of which the properties are handled.


getPropertyDescriptor

public java.beans.PropertyDescriptor getPropertyDescriptor(java.lang.String propertyName)
                                                    throws PropertiesManagerException
Throws:
PropertiesManagerException

setObject

public void setObject(java.lang.Object newObject)
Object of which the properties are handled.


hasGetter

public boolean hasGetter(java.lang.String propertyName)
                  throws PropertiesManagerException
If the property has getter.

Throws:
PropertiesManagerException

hasSetter

public boolean hasSetter(java.lang.String propertyName)
                  throws PropertiesManagerException
If the property has setter.

Throws:
PropertiesManagerException