Class PropertyNode

java.lang.Object
gw.internal.gosu.properties.PropertyNode
All Implemented Interfaces:
IGosuObject

public class PropertyNode extends 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 Details

  • Constructor Details

  • Method Details

    • buildTree

      public static PropertyNode buildTree(PropertySet propertySet)
    • getFullName

      public 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 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 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 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 List<PropertyNode> getChildren()
      The direct children of this property node
      Returns:
      a non null, though possibly empty, list of children
    • getChildValue

      public String getChildValue(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 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 Object
    • getChild

      private PropertyNode getChild(String name)
    • addChild

      private void addChild(PropertyNode node)
    • isUseless

      private boolean isUseless()
    • removeUseless

      private void removeUseless()
    • isGosuIdentifier

      static boolean isGosuIdentifier(String name)
    • isGosuIdentifierStart

      private static boolean isGosuIdentifierStart(char ch)
    • isGosuIdentifierPart

      private static boolean isGosuIdentifierPart(char ch)
    • join

      private static String join(String head, String tail)
    • getName

      private String getName()
    • getPath

      public String getPath()
    • getParent

      public PropertyNode getParent()