Class 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 text)
      Use toString(Object) to convert to String, i.e.
      Convertible​(java.lang.String text)
      Use the text unchanged, i.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      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)
      note: if obj is a String the result is true if String.equals(text).
      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.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.
      • 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 text)
        Use toString(Object) to convert to String, i.e. conversion is done properly.
        Parameters:
        text - 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:
        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.
      • 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
        Overrides:
        getProperty in class groovy.lang.GroovyObjectSupport
        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
        Overrides:
        invokeMethod in class groovy.lang.GroovyObjectSupport
        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
      • 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)
        note: if obj is a String the result is true if String.equals(text).
        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
        Overrides:
        setProperty in class groovy.lang.GroovyObjectSupport
      • 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