Package org.phoebus.framework.macros
Class Macros
- java.lang.Object
-
- org.phoebus.framework.macros.Macros
-
- All Implemented Interfaces:
MacroValueProvider
public class Macros extends java.lang.Object implements MacroValueProvider
Macro informationHolds macros and their value
-
-
Field Summary
Fields Modifier and Type Field Description static java.util.logging.Logger
logger
static java.util.regex.Pattern
MACRO_NAME_PATTERN
-
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 macrostatic java.lang.String
checkMacroName(java.lang.String name)
Check macro nameboolean
equals(java.lang.Object obj)
void
expandValues(MacroValueProvider input)
Expand values of all macrosvoid
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 textjava.util.Collection<java.lang.String>
getNames()
java.lang.String
getValue(java.lang.String name)
Get value for macroint
hashCode()
boolean
isEmpty()
static Macros
merge(Macros base, Macros addition)
Merge two macro mapsjava.lang.String
toString()
-
-
-
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 namePermitted 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 textFormat: 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 mapsOptimized for cases where
base
oraddition
are empty, but will never _change_ any macros. If a merge is necessary, it returns a newMacros
instance.- Parameters:
base
- Base macrosaddition
- 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 macrovalue
- 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 interfaceMacroValueProvider
- Parameters:
name
- Name of the macro- Returns:
- Value of the macro or
null
if not defined
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
- Returns:
- String representation for debugging
-
-