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 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

    Modifier and Type Method Description
    boolean asBoolean()
    For implicit conversion to boolean: true if the text is not empty.
    int compareTo​(java.lang.Object string)  
    int compareTo​(Convertible convertible)  
    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 Details

    • 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 Details

    • 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:
      org.freeplane.plugin.script.proxy.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:
      org.freeplane.plugin.script.proxy.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:
      org.freeplane.plugin.script.proxy.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:
      org.freeplane.plugin.script.proxy.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