Class PropertyMapImpl

    • Method Detail

      • createRelativeRef

        public java.lang.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
      • 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
      • 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
      • 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
      • valueIsSet

        public boolean valueIsSet​(Property property)
      • firePropertyValueChanged

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

        protected void firePropertyTreeValuesChanged​(java.util.Map changes)
      • dump

        public void dump()
      • dump

        public void dump​(Printer printer,
                         java.util.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​(java.io.ObjectOutputStream out,
                          boolean recursive)
                   throws java.io.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:
        java.io.IOException - if there is an error in the stream
      • write

        public void write​(java.io.ObjectOutputStream out)
                   throws java.io.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:
        java.io.IOException - if there is a stream error
      • read

        public void read​(java.io.ObjectInputStream in)
                  throws java.io.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:
        java.io.IOException - if there is an error in the stream
      • skip

        public static void skip​(java.io.ObjectInputStream in)
                         throws java.io.IOException
        Throws:
        java.io.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