Class CustomTag

  • All Implemented Interfaces:
    Tag

    public class CustomTag
    extends Object
    implements Tag
    A CustomTag provides a mechanism to manipulate the contents of a Tag. The standard Tag implementations are immutable, however CustomTag allows a copy to be taken of an immutable Tag that can then be manipulated.
    Author:
    Joe Walnes
    See Also:
    Tag
    • Field Detail

      • attributes

        private String[] attributes
      • attributeCount

        private int attributeCount
      • type

        private int type
    • Constructor Detail

      • CustomTag

        public CustomTag​(String name,
                         int type)
        Type of tag:
        <blah> - Tag.OPEN
        </blah> - Tag.CLOSE
        <blah/> - Tag.EMPTY
      • CustomTag

        public CustomTag​(Tag tag)
        Create a CustomTag based on an existing Tag - this takes a copy of the Tag.
    • Method Detail

      • writeTo

        public void writeTo​(CharArray out)
        Description copied from interface: Tag
        Write out the complete tag in its original form, preserving original formatting.
        Specified by:
        writeTo in interface Tag
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • getAttributeCount

        public int getAttributeCount()
        Description copied from interface: Tag
        Number of attributes in tag.
        Specified by:
        getAttributeCount in interface Tag
      • getAttributeIndex

        public int getAttributeIndex​(String name,
                                     boolean caseSensitive)
        Description copied from interface: Tag
        Determine which attribute has the specified name.
        Specified by:
        getAttributeIndex in interface Tag
      • getAttributeName

        public String getAttributeName​(int index)
        Description copied from interface: Tag
        Get name of attribute.
        Specified by:
        getAttributeName in interface Tag
      • getAttributeValue

        public String getAttributeValue​(int index)
        Description copied from interface: Tag
        Get value of an attribute. If this is an empty attribute (i.e. just a name, without a value), null is returned.
        Specified by:
        getAttributeValue in interface Tag
      • getAttributeValue

        public String getAttributeValue​(String name,
                                        boolean caseSensitive)
        Description copied from interface: Tag
        Get value of an attribute. If this is an empty attribute (i.e. just a name, without a value), null is returned.
        Specified by:
        getAttributeValue in interface Tag
      • hasAttribute

        public boolean hasAttribute​(String name,
                                    boolean caseSensitive)
        Description copied from interface: Tag
        Determine if an attribute is present.
        Specified by:
        hasAttribute in interface Tag
      • getName

        public String getName()
        Description copied from interface: Tag
        Name of tag (ie. element name).
        Specified by:
        getName in interface Tag
      • getType

        public int getType()
        Type of tag:
        <blah> - Tag.OPEN
        </blah> - Tag.CLOSE
        <blah/> - Tag.EMPTY
        Specified by:
        getType in interface Tag
      • setName

        public void setName​(String name)
        Change the name of the attribute.
      • setType

        public void setType​(int type)
        Change the type of the tag. Type of tag:
        <blah> - Tag.OPEN
        </blah> - Tag.CLOSE
        <blah/> - Tag.EMPTY
      • growAttributes

        private void growAttributes()
      • addAttribute

        public int addAttribute​(String name,
                                String value)
        Add a new attribute. This does not check for the existence of an attribute with the same name, thus allowing duplicate attributes.
        Parameters:
        name - Name of attribute to change.
        value - New value of attribute or null for an HTML style empty attribute.
        Returns:
        Index of new attribute.
      • setAttributeValue

        public void setAttributeValue​(String name,
                                      boolean caseSensitive,
                                      String value)
        Change the value of an attribute, or add an attribute if it does not already exist.
        Parameters:
        name - Name of attribute to change.
        caseSensitive - Whether the name should be treated as case sensitive when searching for an existing value.
        value - New value of attribute or null for an HTML style empty attribute.
      • setAttributeName

        public void setAttributeName​(int attributeIndex,
                                     String name)
        Change the name of an existing attribute.
      • setAttributeValue

        public void setAttributeValue​(int attributeIndex,
                                      String value)
        Change the value of an existing attribute. The value may be null for an HTML style empty attribute.
      • removeAttribute

        public void removeAttribute​(int attributeIndex)
        Remove an attribute.
      • removeAttribute

        public void removeAttribute​(String name,
                                    boolean caseSensitive)
        Change the value of an attribute, or add an attribute if it does not already exist.
        Parameters:
        name - Name of attribute to remove.
        caseSensitive - Whether the name should be treated as case sensitive.