Class PropertyMapImpl

java.lang.Object
net.infonode.properties.propertymap.PropertyMapImpl
All Implemented Interfaces:
PropertyMap, Readable, ReadWritable, Writable

public class PropertyMapImpl extends Object implements PropertyMap
  • Constructor Details

  • Method Details

    • getMap

      public ConstChangeNotifyMap getMap()
    • getSuperMap

      public PropertyMap getSuperMap()
      Description copied from interface: PropertyMap
      Returns the most recently added super map.
      Specified by:
      getSuperMap in interface PropertyMap
      Returns:
      the super map
    • removeValue

      public Object removeValue(Property property) throws InvalidPropertyException
      Description copied from interface: PropertyMap
      Removes a property value.
      Specified by:
      removeValue in interface PropertyMap
      Parameters:
      property - the property
      Returns:
      the value removed
      Throws:
      InvalidPropertyException - if values for this property can't be stored in this property map
    • createRelativeRef

      public Object createRelativeRef(Property fromProperty, PropertyMap toObject, Property toProperty)
      Description copied from interface: PropertyMap
      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.

      Specified by:
      createRelativeRef in interface PropertyMap
      Parameters:
      fromProperty - the property value that will hold the reference
      toObject - the property map that holds the property value that is referenced
      toProperty - the property which value is referenced
      Returns:
      the old value that the fromProperty had in this property map
    • getSuperMapCount

      public int getSuperMapCount()
    • addSuperMap

      public void addSuperMap(PropertyMap superMap)
      Description copied from interface: PropertyMap
      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.
      Specified by:
      addSuperMap in interface PropertyMap
      Parameters:
      superMap - the super map
    • removeSuperMap

      public PropertyMap removeSuperMap()
      Description copied from interface: PropertyMap
      Removes the most recently added super map.
      Specified by:
      removeSuperMap in interface PropertyMap
      Returns:
      the super map removed
    • removeSuperMap

      public boolean removeSuperMap(PropertyMap superMap)
      Description copied from interface: PropertyMap
      Removes a super map that has previously been added using PropertyMap.addSuperMap(PropertyMap).
      Specified by:
      removeSuperMap in interface PropertyMap
      Parameters:
      superMap - the super map to remove
      Returns:
      true if the super map was found and removed, otherwise false
    • replaceSuperMap

      public boolean replaceSuperMap(PropertyMap oldSuperMap, PropertyMap newSuperMap)
      Description copied from interface: PropertyMap
      Replaces a super map that has previously been added using PropertyMap.addSuperMap(PropertyMap).
      Specified by:
      replaceSuperMap in interface PropertyMap
      Parameters:
      oldSuperMap - the super map to replace
      newSuperMap - the super map to replace it with
      Returns:
      true if the super map was found and replaced, otherwise false
    • addTreeListener

      public void addTreeListener(PropertyMapTreeListener listener)
      Description copied from interface: PropertyMap
      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.
      Specified by:
      addTreeListener in interface PropertyMap
      Parameters:
      listener - the listener
    • removeTreeListener

      public void removeTreeListener(PropertyMapTreeListener listener)
      Description copied from interface: PropertyMap
      Removes a previously added tree listener.
      Specified by:
      removeTreeListener in interface PropertyMap
      Parameters:
      listener - the listener
    • addListener

      public void addListener(PropertyMapListener listener)
      Description copied from interface: PropertyMap
      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.
      Specified by:
      addListener in interface PropertyMap
      Parameters:
      listener - the listener
    • removeListener

      public void removeListener(PropertyMapListener listener)
      Description copied from interface: PropertyMap
      Removes a listener which was previously added with PropertyMap.addListener(PropertyMapListener).
      Specified by:
      removeListener in interface PropertyMap
      Parameters:
      listener - the listener
    • getPropertyGroup

      public PropertyMapGroup getPropertyGroup()
    • addPropertyChangeListener

      public void addPropertyChangeListener(Property property, PropertyChangeListener listener)
      Description copied from interface: PropertyMap
      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.
      Specified by:
      addPropertyChangeListener in interface PropertyMap
      Parameters:
      property - the property to listen to changes on
      listener - the listener
    • removePropertyChangeListener

      public void removePropertyChangeListener(Property property, PropertyChangeListener listener)
      Description copied from interface: PropertyMap
      Removes a previously added property listener.
      Specified by:
      removePropertyChangeListener in interface PropertyMap
      Parameters:
      property - the property which the listener listens to changes on
      listener - the listener
    • getParent

      public PropertyMapImpl getParent()
    • getProperty

      public PropertyMapProperty getProperty()
    • getChildMap

      public PropertyMap getChildMap(PropertyMapProperty property)
    • getChildMapImpl

      public PropertyMapImpl getChildMapImpl(PropertyMapProperty property)
    • getValueWithDefault

      public PropertyValue getValueWithDefault(Property property)
    • getValue

      public PropertyValue getValue(Property property)
    • setValue

      public PropertyValue setValue(Property property, PropertyValue value)
    • valueIsSet

      public boolean valueIsSet(Property property)
    • firePropertyValueChanged

      public void firePropertyValueChanged(Property property, ValueChange change)
    • firePropertyTreeValuesChanged

      protected void firePropertyTreeValuesChanged(Map changes)
    • dump

      public void dump()
    • dump

      public void dump(Printer printer, Set printed)
    • dumpSuperMaps

      public void dumpSuperMaps(Printer printer)
    • clear

      public void clear(boolean recursive)
      Description copied from interface: PropertyMap
      Removes all property values in this property map.
      Specified by:
      clear in interface PropertyMap
      Parameters:
      recursive - true if child maps should be cleared recursively
    • isEmpty

      public boolean isEmpty(boolean recursive)
      Description copied from interface: PropertyMap
      Returns true if this property map doesn't contain any property values.
      Specified by:
      isEmpty in interface PropertyMap
      Parameters:
      recursive - true if child maps should be recursively checked
      Returns:
      true if this property map doesn't contain any property values
    • write

      public void write(ObjectOutputStream out, boolean recursive) throws IOException
      Description copied from interface: PropertyMap
      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.
      Specified by:
      write in interface PropertyMap
      Parameters:
      out - the stream on which to serialize this map
      recursive - true if child maps should be recursively serialized
      Throws:
      IOException - if there is an error in the stream
    • write

      public void write(ObjectOutputStream out) throws IOException
      Description copied from interface: PropertyMap

      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.

      Specified by:
      write in interface PropertyMap
      Specified by:
      write in interface Writable
      Parameters:
      out - the stream
      Throws:
      IOException - if there is a stream error
    • read

      public void read(ObjectInputStream in) throws IOException
      Description copied from interface: PropertyMap
      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.
      Specified by:
      read in interface PropertyMap
      Specified by:
      read in interface Readable
      Parameters:
      in - the stream from which to read property values
      Throws:
      IOException - if there is an error in the stream
    • skip

      public static void skip(ObjectInputStream in) throws IOException
      Throws:
      IOException
    • valuesEqualTo

      public boolean valuesEqualTo(PropertyMap propertyObject, boolean recursive)
      Description copied from interface: PropertyMap
      Returns true if all the values in this property map is equal to the values in the given map. The property values are compared using Object.equals(java.lang.Object).
      Specified by:
      valuesEqualTo in interface PropertyMap
      Parameters:
      propertyObject - the map to compare values with
      recursive - 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
    • copy

      public PropertyMap copy(boolean copySuperMaps, boolean recursive)
      Description copied from interface: PropertyMap
      Creates a copy of this map. The method copies the values and optionally the references to super maps.
      Specified by:
      copy in interface PropertyMap
      Parameters:
      copySuperMaps - if true, copies the references to super maps
      recursive - if true, copies all child maps as well
      Returns:
      a copy of this map