com.raritantechnologies.xml.sax.filter
Class ElementSelector

java.lang.Object
  extended bycom.raritantechnologies.xml.sax.filter.ElementSelector
Direct Known Subclasses:
AncestorElementSelector, DecendantElementSelector, ElementAndSelector, ElementDataSelector, ElementIndexSelector, ElementListSelector, ElementNotSelector, ElementOrSelector, ElementRangeSelector

public class ElementSelector
extends java.lang.Object

Base class for objects to be used in conjunction with DispatchFilter and SAXDeleteFilter. Responsible for selecting elements for action by the Filters. Subclasses add specific selection behavior to increase the repertoire of the selector set.

XML Configuration Template:

 

Developed by Raritan Technologies .

Author:
Ted Sullivan

Nested Class Summary
 class ElementSelector.ElementData
          Inner class to hold start, end and status of SAX events.
 
Constructor Summary
ElementSelector()
           
ElementSelector(ElementComparator elementComparator, boolean selectAlways)
           
 
Method Summary
 boolean couldSelectElement(java.lang.String path, int startIndex, java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attrs)
          Signals that the element could be selected.
 int getEndMark(int startIndex)
           
 void initialize(org.w3c.dom.Element selectorElem)
           
 void processCharacters(java.lang.String path, char[] ch, int start, int length)
          subclasses can override this to select based on contents of cData.
 void processChildElement(java.lang.String childPath, ElementSelector.ElementData parentElement, java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attrs)
          subclasses can override this to select parent tag based on contents of child tags.
 void processChildElement(java.lang.String childPath, int startedAt, java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attrs)
          This method is used to determine if the presence of a certain child tag should cause the parent (or ancestor tag) to be selected too.
 void reset()
           
protected  void selectElement(java.lang.String path, int startIndex)
           
 void setEndMark(java.lang.String path, int endIndex)
          Called by SAXDeleteFilter to mark end of processed element.
 void setSelecting(java.lang.String path, boolean isSelecting)
           
 boolean shouldSelectElement(int startIndex)
          This method is called by SAXDeleteFilter to determine if this ElementSelector has any Elements that start at the given index and that should be selected.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ElementSelector

public ElementSelector()

ElementSelector

public ElementSelector(ElementComparator elementComparator,
                       boolean selectAlways)
Method Detail

couldSelectElement

public boolean couldSelectElement(java.lang.String path,
                                  int startIndex,
                                  java.lang.String uri,
                                  java.lang.String localName,
                                  java.lang.String qName,
                                  org.xml.sax.Attributes attrs)
Signals that the element could be selected. Uses contained ElementComparator to check if the element is deletable by this ElementSelector.


selectElement

protected void selectElement(java.lang.String path,
                             int startIndex)

setEndMark

public void setEndMark(java.lang.String path,
                       int endIndex)
Called by SAXDeleteFilter to mark end of processed element. If the element is going to be selected, we need to save it because a new sibling element could come along.


processChildElement

public void processChildElement(java.lang.String childPath,
                                int startedAt,
                                java.lang.String uri,
                                java.lang.String localName,
                                java.lang.String qName,
                                org.xml.sax.Attributes attrs)
This method is used to determine if the presence of a certain child tag should cause the parent (or ancestor tag) to be selected too.


processChildElement

public void processChildElement(java.lang.String childPath,
                                ElementSelector.ElementData parentElement,
                                java.lang.String uri,
                                java.lang.String localName,
                                java.lang.String qName,
                                org.xml.sax.Attributes attrs)
subclasses can override this to select parent tag based on contents of child tags. using elementData.setSelecting( )


processCharacters

public void processCharacters(java.lang.String path,
                              char[] ch,
                              int start,
                              int length)
subclasses can override this to select based on contents of cData. using elementData.setSelecting( )


shouldSelectElement

public boolean shouldSelectElement(int startIndex)
This method is called by SAXDeleteFilter to determine if this ElementSelector has any Elements that start at the given index and that should be selected. Either: we have an element at this index that shouldn't be selected, should be selected or we don't have an element at this index.


getEndMark

public int getEndMark(int startIndex)

reset

public void reset()

setSelecting

public void setSelecting(java.lang.String path,
                         boolean isSelecting)

initialize

public void initialize(org.w3c.dom.Element selectorElem)