Class PropertyNode

  • All Implemented Interfaces:
    IGosuObject

    public class PropertyNode
    extends java.lang.Object
    implements IGosuObject
    A node in a tree representation of an underlying PropertySet. Any compound names, such as a.b.c and a.b.d, in the keys of the property set are split into a tree representation. In the a.b.c/a.b.d example there would be a property node for a, with a child node b with two further leaf children c and d.
    • Field Detail

      • _name

        private final java.lang.String _name
      • _path

        private final java.lang.String _path
      • _children

        private final java.util.Map<java.lang.String,​PropertyNode> _children
    • Constructor Detail

    • Method Detail

      • getFullName

        public java.lang.String getFullName()
        The full property name, for example a.b
        Returns:
        a non null name, which must be one or more valid Gosu identifiers separated by periods
      • getRelativeName

        public java.lang.String getRelativeName()
        The last part of the property name, for example b if the full name is a.b
        Returns:
        a non null name, which must be a valid Gosu identifier
      • getTypeName

        public java.lang.String getTypeName()
        Return the name that should be used for the type based on this property node
        Returns:
        a non null type name
      • getIntrinsicType

        public IType getIntrinsicType()
        Return the intrinsic type based on this property node
        Specified by:
        getIntrinsicType in interface IGosuObject
        Returns:
        intrinsic type
      • hasValue

        public boolean hasValue()
        Does this property node have a value in the underlying PropertySet
        Returns:
        true if the node has an underlying value, false otherwise
      • getValue

        public java.lang.String getValue()
        Return the value for this property as given by the underlying PropertySet
        Returns:
        the property value, or null if it doesn't have one
      • isLeaf

        public boolean isLeaf()
        Is this a leaf node - that is, does it have no children?
        Returns:
        true if this node has no children, false otherwise
      • isRoot

        public boolean isRoot()
        Is this the root of a property node tree?
        Returns:
        true if this is the root, false otherwise
      • getChildren

        public java.util.List<PropertyNode> getChildren()
        The direct children of this property node
        Returns:
        a non null, though possibly empty, list of children
      • getChildValue

        public java.lang.String getChildValue​(java.lang.String name)
        Return the value for the named child property; this is just like doing lookup on the underlying PropertySet except that the name is prefixed with the full name of this property. For example if this property is a then getting the child value b.c will return the value of a.b.c in the original property set
        Parameters:
        name - non null name of child property
        Returns:
        the child property value, or null if there is no such child property
      • toString

        public java.lang.String toString()
        If this node has a property value, returns the value of that property. Otherwise returns a string describing the property name.
        Specified by:
        toString in interface IGosuObject
        Overrides:
        toString in class java.lang.Object
      • getChild

        private PropertyNode getChild​(java.lang.String name)
      • isUseless

        private boolean isUseless()
      • removeUseless

        private void removeUseless()
      • isGosuIdentifier

        static boolean isGosuIdentifier​(java.lang.String name)
      • isGosuIdentifierStart

        private static boolean isGosuIdentifierStart​(char ch)
      • isGosuIdentifierPart

        private static boolean isGosuIdentifierPart​(char ch)
      • join

        private static java.lang.String join​(java.lang.String head,
                                             java.lang.String tail)
      • getName

        private java.lang.String getName()
      • getPath

        public java.lang.String getPath()