org.freeplane.plugin.script.proxy

## Class Convertible

- java.lang.Object
- - groovy.lang.GroovyObjectSupport
  - - org.freeplane.plugin.script.proxy.Convertible

- All Implemented Interfaces:
    groovy.lang.GroovyObject, Convertible

      public class Convertible
      extends groovy.lang.GroovyObjectSupport
      implements Convertible

  Utility wrapper class around a String that is used to convert node texts to different types. It's especially important for Formulas.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Convertible(java.lang.Object object)` Use `toString(Object)` to convert to String, i.e. conversion is done properly.
    `Convertible(java.lang.String text)` Use the `text` unchanged, i. e. oesn't evaluate formulas since this would require a calculation rule or NodeModel.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `asBoolean()` For implicit conversion to boolean: true if the text is not empty.
    `int` | `compareTo(Convertible convertible)`
    `int` | `compareTo(java.lang.Object string)`
    `boolean` | `equals(java.lang.Object obj)`
    `boolean` | `getBool()` parses the text (case insensitive) as boolean via `Boolean.parseBoolean(String)`.
    `java.util.Calendar` | `getCalendar()` Converts to Calendar if possible.
    `java.util.Date` | `getDate()` Converts to Date if possible.
    `java.lang.Number` | `getNum()` Convert to Number.
    `java.lang.Number` | `getNum0()` Safe variant of `getNum()`, throws nothing - on any error (long) 0 is returned.
    `java.lang.Object` | `getObject()` Uses the following priority ranking to determine the type of the text: null Long Double Date String
    `java.lang.String` | `getPlain()` Removes HTML markup if necessary.
    `java.lang.Object` | `getProperty(java.lang.String property)` pretend we are a String if we don't provide a property for ourselves.
    `java.lang.Object` | `getRaw()` Returns original object
    `java.lang.String` | `getString()` No conversion.
    `java.lang.String` | `getText()` No conversion.
    `Convertible` | `getTo()` Allow statements like this: `node['attr_name'].to.num`.
    `java.net.URI` | `getUri()` Converts to URI if possible.
    `int` | `hashCode()` since equals handles Strings special we have to stick to that here too since equal objects have to have the same hasCode.
    `java.lang.Object` | `invokeMethod(java.lang.String name, java.lang.Object args)` pretend we are a String if we don't provide a method for ourselves.
    `boolean` | `isDate()` Type check.
    `boolean` | `isNum()` Type check.
    `void` | `setProperty(java.lang.String property, java.lang.Object newValue)`
    `java.lang.String` | `toString()`
    `static java.lang.String` | `toString(java.lang.Object value)` has special conversions for Date and Calendar are converted by org.apache.commons.lang.time.DateFormatUtils.format(date, "yyyy-MM-dd'T'HH:mm:ss.SSSZ"), i.e. to GMT timestamps, e.g.: "2010-08-16T22:31:55.123+0000".

    - ### Methods inherited from class groovy.lang.GroovyObjectSupport

      `getMetaClass, setMetaClass`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Convertible

          public Convertible(java.lang.String text)

      Use the `text` unchanged, i. e. oesn't evaluate formulas since this would require a calculation rule or NodeModel.
      Parameters:
        `text` - the String to convert.

    - #### Convertible

          public Convertible(java.lang.Object object)

      Use `toString(Object)` to convert to String, i.e. conversion is done properly.
      Parameters:
        `object` - the Object to convert

  - ### Method Detail

    - #### getNum

          public java.lang.Number getNum()
                                  throws org.freeplane.plugin.script.proxy.ConversionException

      Convert to Number. All Java number literals are allowed as described by `Long.decode(String)`
      Specified by:
        `getNum` in interface `Convertible`
      Returns:
        a Long or a Double, whatever fits best.
      Throws:
        `ConversionException` - if text is not a number.

    - #### getNum0

          public java.lang.Number getNum0()

      Safe variant of `getNum()`, throws nothing - on any error (long) 0 is returned.
      Specified by:
        `getNum0` in interface `Convertible`
      Returns:
        a Long or a Double if text is convertible to it or 0 otherwise (even if text is null).

    - #### getString

          public java.lang.String getString()

      No conversion.
      Specified by:
        `getString` in interface `Convertible`
      Returns:
        The original string.

    - #### getText

          public java.lang.String getText()

      No conversion.
      Specified by:
        `getText` in interface `Convertible`
      Returns:
        The original string.

    - #### getPlain

          public java.lang.String getPlain()

      Removes HTML markup if necessary.
      Specified by:
        `getPlain` in interface `Convertible`
      Returns:
        The result of `HtmlUtils.htmlToPlain(String)`

    - #### getDate

          public java.util.Date getDate()
                                 throws org.freeplane.plugin.script.proxy.ConversionException

      Converts to Date if possible. The valid date patterns are "yyyy-MM-dd HH:dd:ss.SSSZ" with optional '-', ':'. ' ' may be replaced by 'T'.
      Specified by:
        `getDate` in interface `Convertible`
      Returns:
        a Date for the parsed text
      Throws:
        `ConversionException` - if the text is not convertible to a Date.

    - #### getCalendar

          public java.util.Calendar getCalendar()
                                         throws org.freeplane.plugin.script.proxy.ConversionException

      Converts to Calendar if possible. See `getDate()` for recognized patterns.
      Specified by:
        `getCalendar` in interface `Convertible`
      Returns:
        a Calendar for the parsed text.
      Throws:
        `ConversionException` - if the text is not convertible to a Date.

    - #### getUri

          public java.net.URI getUri()
                              throws org.freeplane.plugin.script.proxy.ConversionException

      Converts to URI if possible.
      Specified by:
        `getUri` in interface `Convertible`
      Returns:
        a URI
      Throws:
        `ConversionException` - if the text is not convertible to a URI.

    - #### getObject

          public java.lang.Object getObject()

      Uses the following priority ranking to determine the type of the text:
      1. null
      2. Long
      3. Double
      4. Date
      5. String
      Specified by:
        `getObject` in interface `Convertible`
      Returns:
        Object - the type that fits best.

    - #### getTo

          public Convertible getTo()

      Allow statements like this: `node['attr_name'].to.num`.
      Returns:
        this

    - #### isNum

          public boolean isNum()

      Type check.
      Specified by:
        `isNum` in interface `Convertible`
      Returns:
        true if the text is convertible to number.

    - #### isDate

          public boolean isDate()

      Type check.
      Specified by:
        `isDate` in interface `Convertible`
      Returns:
        true if the text is convertible to date.

    - #### getProperty

          public java.lang.Object getProperty(java.lang.String property)

      pretend we are a String if we don't provide a property for ourselves.
      Specified by:
        `getProperty` in interface `groovy.lang.GroovyObject`
      Parameters:
        `property` - a property of `String`, e. g. "bytes".
      Returns:
        the property of the original string.

    - #### invokeMethod

          public java.lang.Object invokeMethod(java.lang.String name,
                                               java.lang.Object args)

      pretend we are a String if we don't provide a method for ourselves.
      Specified by:
        `invokeMethod` in interface `groovy.lang.GroovyObject`
      Parameters:
        `name` - method name
        `args` - method args
      Returns:
        the result of the method invocation on the original string.

    - #### toString

          public static java.lang.String toString(java.lang.Object value)

      has special conversions for
      - Date and Calendar are converted by org.apache.commons.lang.time.DateFormatUtils.format(date, "yyyy-MM-dd'T'HH:mm:ss.SSSZ"), i.e. to GMT timestamps, e.g.: "2010-08-16T22:31:55.123+0000".
      - null is "converted" to null
      All other types are converted via value.toString().
      Parameters:
        `value` - the object to convert
      Returns:
        the converted string

    - #### compareTo

          public int compareTo(java.lang.Object string)

      Specified by:
        `compareTo` in interface `Convertible`

    - #### compareTo

          public int compareTo(Convertible convertible)

      Specified by:
        `compareTo` in interface `Convertible`

    - #### hashCode

          public int hashCode()

      since equals handles Strings special we have to stick to that here too since equal objects have to have the same hasCode.
      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### setProperty

          public void setProperty(java.lang.String property,
                                  java.lang.Object newValue)

      Specified by:
        `setProperty` in interface `groovy.lang.GroovyObject`

    - #### getBool

          public boolean getBool()

      parses the text (case insensitive) as boolean via `Boolean.parseBoolean(String)`.
      Specified by:
        `getBool` in interface `Convertible`
      Returns:
        boolean

    - #### asBoolean

          public boolean asBoolean()

      For implicit conversion to boolean: true if the text is not empty.
      Specified by:
        `asBoolean` in interface `Convertible`
      Returns:
        boolean

    - #### getRaw

          public java.lang.Object getRaw()

      Description copied from interface: `Convertible`
      Returns original object
      Specified by:
        `getRaw` in interface `Convertible`
      Returns:
        the original object