Class Macros

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.logging.Logger logger  
      static java.util.regex.Pattern MACRO_NAME_PATTERN  
    • Constructor Summary

      Constructors 
      Constructor Description
      Macros()
      Create empty macro map
      Macros​(Macros other)
      Create copy of existing macros
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(java.lang.String name, java.lang.String value)
      Add a macro
      static java.lang.String checkMacroName​(java.lang.String name)
      Check macro name
      boolean equals​(java.lang.Object obj)  
      void expandValues​(MacroValueProvider input)
      Expand values of all macros
      void forEach​(java.util.function.BiConsumer<java.lang.String,​java.lang.String> action)
      Perform given action for each name/value (names are not sorted)
      static Macros fromSimpleSpec​(java.lang.String names_and_values)
      Parse macro information from "macro1=value1, macro2=value2" type text
      java.util.Collection<java.lang.String> getNames()  
      java.lang.String getValue​(java.lang.String name)
      Get value for macro
      int hashCode()  
      boolean isEmpty()  
      static Macros merge​(Macros base, Macros addition)
      Merge two macro maps
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • logger

        public static final java.util.logging.Logger logger
      • MACRO_NAME_PATTERN

        public static final java.util.regex.Pattern MACRO_NAME_PATTERN
    • Constructor Detail

      • Macros

        public Macros()
        Create empty macro map
      • Macros

        public Macros​(Macros other)
        Create copy of existing macros
        Parameters:
        other - The source macros to be copied.
    • Method Detail

      • checkMacroName

        public static java.lang.String checkMacroName​(java.lang.String name)
        Check macro name

        Permitted macro names are a subset of valid XML names:

        • Must start with character
        • May then contain characters or numbers
        • May also contain underscores
        • This check also permits brackets and dots for path-type properties like "traces[1].name"
        Parameters:
        name - Macro name to check
        Returns:
        Error message or null if name is valid
      • fromSimpleSpec

        public static Macros fromSimpleSpec​(java.lang.String names_and_values)
                                     throws java.lang.Exception
        Parse macro information from "macro1=value1, macro2=value2" type text

        Format: Macro name as described in {checkMacroName(String), followed by '=' and value. Surrounding spaces are removed, and comma separates subsequent macro and value:

         M1 = Value1 , M2 = Value2 

        Value must be enclosed in '"' quotes if it contains surrounding spaces or comma:

         MSG = "This is a message with comma, quoted!" , M2 = Value2 
        To include quotes in the value, the value must be quoted and the embedded quotes escaped:
         MSG = "This is a \"Message\""
        Parameters:
        names_and_values - "M1=Value1, M2=Value2"
        Returns:
        Macros
        Throws:
        java.lang.Exception - on error
      • isEmpty

        public boolean isEmpty()
        Returns:
        Are the macros empty?
      • merge

        public static Macros merge​(Macros base,
                                   Macros addition)
        Merge two macro maps

        Optimized for cases where base or addition are empty, but will never _change_ any macros. If a merge is necessary, it returns a new Macros instance.

        Parameters:
        base - Base macros
        addition - Additional macros that may override 'base'
        Returns:
        Merged macros
      • add

        public void add​(java.lang.String name,
                        java.lang.String value)
        Add a macro
        Parameters:
        name - Name of the macro
        value - Value of the macro
        Throws:
        java.lang.IllegalArgumentException - for illegal macro name
        See Also:
        checkMacroName(String)
      • getNames

        public java.util.Collection<java.lang.String> getNames()
        Returns:
        Macro names, sorted alphabetically
      • forEach

        public void forEach​(java.util.function.BiConsumer<java.lang.String,​java.lang.String> action)
        Perform given action for each name/value (names are not sorted)
        Parameters:
        action - Invoked with each name/value
      • expandValues

        public void expandValues​(MacroValueProvider input)
                          throws java.lang.Exception
        Expand values of all macros
        Parameters:
        input - Value provider, usually from the 'parent' widget
        Throws:
        java.lang.Exception - on error
      • getValue

        public java.lang.String getValue​(java.lang.String name)
        Get value for macro
        Specified by:
        getValue in interface MacroValueProvider
        Parameters:
        name - Name of the macro
        Returns:
        Value of the macro or null if not defined
      • hashCode

        public int hashCode()
        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
        Returns:
        String representation for debugging