Package org.freeplane.api

# Interface AttributesRO

All Known Subinterfaces:
  `Attributes`, `Proxy.Attributes`, `Proxy.AttributesRO`

public interface AttributesRO
Node's attribute table: `node.attributes` - read-only.

Attributes are name - value pairs assigned to a node. A node may have multiple attributes with the same name.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `containsKey(String name)`
  `int`
  `findAttribute(String name)`
  Deprecated.
  since 1.2 - use `findFirst(String)` instead.
  `int`
  `findFirst(String name)`
  returns the index of the first attribute with the given name if one exists or -1 otherwise.
  `List<? extends Convertible>`
  `findValues(AttributeCondition condition)`
  returns the values of all attributes for which the closure returns true.
  `Object`
  `get(int index)`
  returns the attribute value at the given index.
  `Object`
  `get(String name)`
  Deprecated.
  before 1.1 - use `get(int)`, `getFirst(String)` or `getAll(String)` instead.
  `List<Object>`
  `getAll(String name)`
  `List<String>`
  `getAttributeNames()`
  Deprecated.
  since 1.2 use #getNames() instead.
  `Object`
  `getFirst(String name)`
  returns the first value of an attribute with the given name or null otherwise.
  `String`
  `getKey(int index)`
  returns the attribute key at the given index.
  `Map<String,Object>`
  `getMap()`
  returns all attributes as a map.
  `List<String>`
  `getNames()`
  returns all attribute names in the proper sequence.
  `Attributes`
  `getTransformed()`
  `List<? extends Convertible>`
  `getValues()`
  returns all values as a list of `Convertible`.
  `boolean`
  `isEmpty()`
  returns `getAttributeNames().isEmpty()`.
  `int`
  `size()`
  the number of attributes.

- ## Method Details

  - ### get

    @Deprecated Object get(String name)
    Deprecated.
    before 1.1 - use `get(int)`, `getFirst(String)` or `getAll(String)` instead.
    alias for `getFirst(String)`.

  - ### getFirst

    Object getFirst(String name)
    returns the first value of an attribute with the given name or null otherwise.
    Since:
      1.2

  - ### containsKey

    boolean containsKey(String name)
    Returns:
      true if there is any attribute with key name.
    Since:
      1.4

  - ### getAll

    List<Object> getAll(String name)
    Returns:
      all values for the attribute name.

  - ### getNames

    List<String> getNames()
    returns all attribute names in the proper sequence. The number of names returned is equal to the number of attributes.

           // rename attribute
           int i = 0;
           for (String name : attributes.getNames()) {
               if (name.equals("xy"))
                   attributes.set(i, "xyz", attributes.get(i));
               ++i;
           }

  - ### getAttributeNames

    @Deprecated List<String> getAttributeNames()
    Deprecated.
    since 1.2 use #getNames() instead.

  - ### getValues

    List<? extends Convertible> getValues()
    returns all values as a list of `Convertible`.
    Since:
      1.2

  - ### getMap

    Map<String,Object> getMap()
    returns all attributes as a map. Note that this will erase duplicate keys. `node.attributes = otherNode.attributes.map`
    Since:
      1.2

  - ### get

    Object get(int index)
    returns the attribute value at the given index.
    Throws:
      `IndexOutOfBoundsException` - if index is out of range, i. e. `index < 0 || index >= size()`.

  - ### getKey

    String getKey(int index)
    returns the attribute key at the given index.
    Throws:
      `IndexOutOfBoundsException` - if index is out of range, i. e. `index < 0 || index >= size()`.

  - ### findAttribute

    @Deprecated int findAttribute(String name)
    Deprecated.
    since 1.2 - use `findFirst(String)` instead.

  - ### findFirst

    int findFirst(String name)
    returns the index of the first attribute with the given name if one exists or -1 otherwise. For searches for all attributes with a given name `getAttributeNames()` must be used.
    Since:
      1.2

  - ### findValues

    List<? extends Convertible> findValues(AttributeCondition condition)
    returns the values of all attributes for which the closure returns true. The fact that the values are returned as a list of `Convertible` enables conversion. The following formula sums all attributes whose names are not equal to 'TOTAL':

          = attributes.findValues{key, val -> key != 'TOTAL'}.sum(0){it.num0}

    Parameters:
      `condition` - A closure that accepts two arguments (String key, Object value) and returns boolean/Boolean.
    Since:
      1.2

  - ### size

    int size()
    the number of attributes. It is `size() == getAttributeNames().size()`.

  - ### isEmpty

    boolean isEmpty()
    returns `getAttributeNames().isEmpty()`.
    Since:
      1.2

  - ### getTransformed

    Attributes getTransformed()
    Since:
      1.7.1