Interface Attributes

All Superinterfaces:
AttributesRO
All Known Subinterfaces:
Proxy.Attributes

public interface Attributes
extends AttributesRO
Node's attribute table: node.attributes - read-write.

Notes on attribute setters:

  • All setter methods try to convert strings to dates, numbers or URIs.
  • All setter methods apply a default formatting (for display) of the value for dates and numbers.
  • Attributes don't have style properties so the value objects must know about the right formatting for themselves.
  • To enforce a certain formatting use format():
    node['creationDate'] = format(new Date(), 'MM/yyyy')

Examples:

   // == text
   node["attribute name"] = "a value"
   assert node["attribute name"].text == "a value"
   assert node.attributes.getFirst("attribute name") == "a value" // the same

   // == numbers and others
   // converts numbers and other stuff with toString()
   node["a number"] = 1.2
   assert node["a number"].text == "1.2"
   assert node["a number"].num == 1.2d

     *   // == dates
   def date = new Date()
   node["a date"] = date
   assert node["a date"].object.getClass().simpleName == "FormattedDate"
   assert node["a date"].date == format(date)

   // == enforce formats on attribute values
   node["another date"] = format(date, 'yyyy|MM|dd')
   assert node["another date"].date == format(date, 'yyyy|MM|dd')

   // change the date while keeping the silly format
   def index = node.attributes.findAttribute("another date")
   node.attributes.set(index, new Date(0L))

   // == URIs
   def uri = new URI("http://www.freeplane.org")
   node["uri"] = uri
   assert node["uri"].object.getClass().simpleName == "URI"
   assert node["uri"].object == uri

   // == remove an attribute
   node["removed attribute"] = "to be removed"
   assert node["removed attribute"] == "to be removed"
   node["removed attribute"] = null
   assert node.attributes.findFirst("removed attribute") == -1
 
  • Method Summary

    Modifier and Type Method Description
    void add​(java.lang.String name, java.lang.Object value)
    adds an attribute no matter if an attribute with the given name already exists.
    void add​(java.lang.String name, java.lang.Object value, java.lang.String format)
    adds an attribute with formatting pattern no matter if an attribute with the given name already exists.
    void clear()
    removes all attributes.
    java.util.Iterator<java.util.Map.Entry<java.lang.String,​java.lang.Object>> iterator()
    allows application of Groovy collection methods like each(), collect(), ...
    void optimizeWidths()
    optimize widths of attribute view columns according to contents.
    void remove​(int index)
    removes the attribute at the given index.
    boolean remove​(java.lang.String name)
    Deprecated.
    before 1.1 - use remove(int) or removeAll(String) instead.
    boolean removeAll​(java.lang.String name)
    removes all attributes with this name.
    void set​(int index, java.lang.Object value)
    sets the value of the attribute at an index.
    void set​(int index, java.lang.String name, java.lang.Object value)
    sets name and value of the attribute at the given index.
    void set​(int index, java.lang.String name, java.lang.Object value, java.lang.String format)
    sets name, value and format pattern of the attribute at the given index.
    void set​(java.lang.String name, java.lang.Object value)
    adds an attribute if there is no attribute with the given name or changes the value of the first attribute with the given name.
    void setFormat​(int index, java.lang.String format)
    sets format pattern to the attribute at the given index.
    default java.util.stream.Stream<java.util.Map.Entry<java.lang.String,​java.lang.Object>> stream()
    Returns stream of attributes represented by map entries.
  • Method Details

    • set

      void set​(int index, java.lang.Object value)
      sets the value of the attribute at an index. This method will not create new attributes.
      Throws:
      java.lang.IndexOutOfBoundsException - if index is out of range, i. e. index < 0 || index >= size().
    • set

      void set​(int index, java.lang.String name, java.lang.Object value)
      sets name and value of the attribute at the given index. This method will not create new attributes.
      Throws:
      java.lang.IndexOutOfBoundsException - if index is out of range, i. e. index < 0 || index >= size().
    • set

      void set​(int index, java.lang.String name, java.lang.Object value, java.lang.String format)
      sets name, value and format pattern of the attribute at the given index. This method will not create new attributes.
      Throws:
      java.lang.IndexOutOfBoundsException - if index is out of range, i. e. index < 0 || index >= size().
    • setFormat

      void setFormat​(int index, java.lang.String format)
      sets format pattern to the attribute at the given index.
      Throws:
      java.lang.IndexOutOfBoundsException - if index is out of range, i. e. index < 0 || index >= size().
    • remove

      @Deprecated boolean remove​(java.lang.String name)
      Deprecated.
      before 1.1 - use remove(int) or removeAll(String) instead.
      removes the first attribute with this name.
      Returns:
      true on removal of an existing attribute and false otherwise.
    • removeAll

      boolean removeAll​(java.lang.String name)
      removes all attributes with this name.
      Returns:
      true on removal of an existing attribute and false otherwise.
    • remove

      void remove​(int index)
      removes the attribute at the given index.
      Throws:
      java.lang.IndexOutOfBoundsException - if index is out of range, i. e. index < 0 || index >= size().
    • set

      void set​(java.lang.String name, java.lang.Object value)
      adds an attribute if there is no attribute with the given name or changes the value of the first attribute with the given name.
    • add

      void add​(java.lang.String name, java.lang.Object value)
      adds an attribute no matter if an attribute with the given name already exists.
    • add

      void add​(java.lang.String name, java.lang.Object value, java.lang.String format)
      adds an attribute with formatting pattern no matter if an attribute with the given name already exists.
    • clear

      void clear()
      removes all attributes.
      Since:
      1.2
    • iterator

      java.util.Iterator<java.util.Map.Entry<java.lang.String,​java.lang.Object>> iterator()
      allows application of Groovy collection methods like each(), collect(), ...
         def keyList = node.attributes.collect { it.key }
         def values = node.attributes.collect { it.value }
         node.attributes.each {
             if (it.key =~ /.*day/)
                 it.value += ' days'
         }
       
      Since:
      1.3.2
    • stream

      default java.util.stream.Stream<java.util.Map.Entry<java.lang.String,​java.lang.Object>> stream()
      Returns stream of attributes represented by map entries.
      Since:
      1.3.10
      See Also:
      iterator()
    • optimizeWidths

      void optimizeWidths()
      optimize widths of attribute view columns according to contents.
      Since:
      1.4