Interface PropertyMap
-
- All Superinterfaces:
Readable
,ReadWritable
,Writable
- All Known Implementing Classes:
PropertyMapImpl
public interface PropertyMap extends ReadWritable
A property map contains values for some or all properties in aPropertyMapGroup
. A property map can have any number of super maps from which property values are inherited. Super maps that are searched for values in the reverse order they were added to the property map. Property values are always set in the property map specified.Properties of type
PropertyMapProperty
in thePropertyMapGroup
will automatically be assigned new PropertyMap's as values. These PropertyMap's are called child maps. These property values cannot be modified.Listeners can be added to a PropertyMap. The listeners are notified when a property value is modified in the PropertyMap or, if the property value is not overridden, one of it's super maps. A tree listener can also be added that listens for value changes in the property map, it's super maps and it's child mapss.
Property maps are created using the factory methods in
PropertyMapFactory
.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
addListener(PropertyMapListener listener)
Adds a listener that listens for value changes in this PropertyMap.void
addPropertyChangeListener(Property property, PropertyChangeListener listener)
Adds a property listener that listens for value changes for a specific property.void
addSuperMap(PropertyMap superMap)
Adds a super map to this map.void
addTreeListener(PropertyMapTreeListener listener)
Adds a tree listener that listens for value changes in this PropertyMap or any child maps.void
clear(boolean recursive)
Removes all property values in this property map.PropertyMap
copy(boolean copySuperMapRefs, boolean recursive)
Creates a copy of this map.java.lang.Object
createRelativeRef(Property fromProperty, PropertyMap toMap, Property toProperty)
Creates a relative reference from one property value to another property value.PropertyMap
getSuperMap()
Returns the most recently added super map.boolean
isEmpty(boolean recursive)
Returns true if this property map doesn't contain any property values.void
read(java.io.ObjectInputStream in)
Reads property values from a stream and sets them in this map.void
removeListener(PropertyMapListener listener)
Removes a listener which was previously added withaddListener(PropertyMapListener)
.void
removePropertyChangeListener(Property property, PropertyChangeListener listener)
Removes a previously added property listener.PropertyMap
removeSuperMap()
Removes the most recently added super map.boolean
removeSuperMap(PropertyMap superMap)
Removes a super map that has previously been added usingaddSuperMap(PropertyMap)
.void
removeTreeListener(PropertyMapTreeListener listener)
Removes a previously added tree listener.java.lang.Object
removeValue(Property property)
Removes a property value.boolean
replaceSuperMap(PropertyMap oldSuperMap, PropertyMap newSuperMap)
Replaces a super map that has previously been added usingaddSuperMap(PropertyMap)
.boolean
valuesEqualTo(PropertyMap propertyMap, boolean recursive)
Returns true if all the values in this property map is equal to the values in the given map.void
write(java.io.ObjectOutputStream out)
Serializes the serializable values of this property map.void
write(java.io.ObjectOutputStream out, boolean recursive)
Serializes the serializable values of this property map.
-
-
-
Method Detail
-
addListener
void addListener(PropertyMapListener listener)
Adds a listener that listens for value changes in this PropertyMap. This listener will be notified of updates to values in this PropertyMap and super maps unless the property value is overridden.- Parameters:
listener
- the listener
-
removeListener
void removeListener(PropertyMapListener listener)
Removes a listener which was previously added withaddListener(PropertyMapListener)
.- Parameters:
listener
- the listener
-
addTreeListener
void addTreeListener(PropertyMapTreeListener listener)
Adds a tree listener that listens for value changes in this PropertyMap or any child maps. This listener will be notified of updates to values in this PropertyMap, any child map recusively and super maps unless the property value is overridden.- Parameters:
listener
- the listener
-
removeTreeListener
void removeTreeListener(PropertyMapTreeListener listener)
Removes a previously added tree listener.- Parameters:
listener
- the listener
-
addPropertyChangeListener
void addPropertyChangeListener(Property property, PropertyChangeListener listener)
Adds a property listener that listens for value changes for a specific property. This listener will be notified of value changes for the property in this PropertyMap and super maps unless the property value is overridden.- Parameters:
property
- the property to listen to changes onlistener
- the listener
-
removePropertyChangeListener
void removePropertyChangeListener(Property property, PropertyChangeListener listener)
Removes a previously added property listener.- Parameters:
property
- the property which the listener listens to changes onlistener
- the listener
-
addSuperMap
void addSuperMap(PropertyMap superMap)
Adds a super map to this map. If a property value is not found in this property map, the super maps will be searched recursively. The super map last added will be searched first.- Parameters:
superMap
- the super map
-
removeSuperMap
PropertyMap removeSuperMap()
Removes the most recently added super map.- Returns:
- the super map removed
-
removeSuperMap
boolean removeSuperMap(PropertyMap superMap)
Removes a super map that has previously been added usingaddSuperMap(PropertyMap)
.- Parameters:
superMap
- the super map to remove- Returns:
- true if the super map was found and removed, otherwise false
- Since:
- IDW 1.3.0
-
replaceSuperMap
boolean replaceSuperMap(PropertyMap oldSuperMap, PropertyMap newSuperMap)
Replaces a super map that has previously been added usingaddSuperMap(PropertyMap)
.- Parameters:
oldSuperMap
- the super map to replacenewSuperMap
- the super map to replace it with- Returns:
- true if the super map was found and replaced, otherwise false
- Since:
- IDW 1.3.0
-
getSuperMap
PropertyMap getSuperMap()
Returns the most recently added super map.- Returns:
- the super map
-
createRelativeRef
java.lang.Object createRelativeRef(Property fromProperty, PropertyMap toMap, Property toProperty) throws InvalidPropertyTypeException
Creates a relative reference from one property value to another property value.When the value of the fromProperty is read, it will return the value of the toProperty in the toMap.
Sub maps of this property map will inherit this reference relative to themselves, ie the reference in the sub map is converted to a reference relative to the sub map if possible, otherwise the reference is the same as for the super map. Here is an example:
- Property map A contains value 5 for property X.
- A relative reference is created in map A from property Y to property X. Getting the property value for Y in A will now return 5.
- A property map B is created and A is added as super map to B. Note that now B.Y will reference B.X and not A.X! Getting B.X now returns 5 and B.Y also returns 5.
- X is set to 7 in B. Getting B.Y will now return 7 as expected. Map A is unchanged and will still return 5 as value for property Y.
- A.Y is set to 1 which destroys the reference to A.X, and also the reference B.Y -> B.X. Getting B.Y will now return 1 as it's inherited from A.Y.
Changes to the referenced property value will be propagated to listeners of this property.
- Parameters:
fromProperty
- the property value that will hold the referencetoMap
- the property map that holds the property value that is referencedtoProperty
- the property which value is referenced- Returns:
- the old value that the fromProperty had in this property map
- Throws:
InvalidPropertyTypeException
-
removeValue
java.lang.Object removeValue(Property property) throws InvalidPropertyException
Removes a property value.- Parameters:
property
- the property- Returns:
- the value removed
- Throws:
InvalidPropertyException
- if values for this property can't be stored in this property map
-
isEmpty
boolean isEmpty(boolean recursive)
Returns true if this property map doesn't contain any property values.- Parameters:
recursive
- true if child maps should be recursively checked- Returns:
- true if this property map doesn't contain any property values
-
clear
void clear(boolean recursive)
Removes all property values in this property map.- Parameters:
recursive
- true if child maps should be cleared recursively
-
valuesEqualTo
boolean valuesEqualTo(PropertyMap propertyMap, boolean recursive)
Returns true if all the values in this property map is equal to the values in the given map. The property values are compared usingObject.equals(java.lang.Object)
.- Parameters:
propertyMap
- the map to compare values withrecursive
- true if child maps should be recursively checked- Returns:
- true if all the values in this property map is equal to the values in the given map
-
write
void write(java.io.ObjectOutputStream out, boolean recursive) throws java.io.IOException
Serializes the serializable values of this property map. Values not implementing theSerializable
interface will not be written to the stream. The properties are identified using their names.- Parameters:
out
- the stream on which to serialize this maprecursive
- true if child maps should be recursively serialized- Throws:
java.io.IOException
- if there is an error in the stream
-
write
void write(java.io.ObjectOutputStream out) throws java.io.IOException
Serializes the serializable values of this property map. Values not implementing the
Serializable
interface will not be written to the stream. The properties are identified using their names.This method recursively writes all child maps.
-
read
void read(java.io.ObjectInputStream in) throws java.io.IOException
Reads property values from a stream and sets them in this map. Will overwrite existing values, but not remove values not found in the stream. The properties are identified using their names. If no property is found for a property name read from the stream the value is skipped and no error is reported. If a value for a property in the stream is a reference to a another property value that cannot be resolved, the property is not modified.
-
copy
PropertyMap copy(boolean copySuperMapRefs, boolean recursive)
Creates a copy of this map. The method copies the values and optionally the references to super maps.- Parameters:
copySuperMapRefs
- if true, copies the references to super mapsrecursive
- if true, copies all child maps as well- Returns:
- a copy of this map
- Since:
- IDW 1.3.0
-
-