View Javadoc

1   package org.softnetwork.xml.dom.xpath;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import org.w3c.dom.Element;
7   
8   /**
9    * @author stephane.manciot@ebiznext.com
10   *
11   */
12  final class XPathElement extends XPathToken {
13      
14      /**
15       *
16       * @uml.property name="filters"
17       */
18      private XPathFilter[] filters;
19      
20      XPathElement(String token, XPathFilter[] filters)
21      throws XPathFormatException {
22          super(token);
23          this.filters = filters;
24      }
25      
26      /**
27       * @return Renvoie filters.
28       *
29       * @uml.property name="filters"
30       */
31      public XPathFilter[] getFilters() {
32          return filters;
33      }
34      
35      public Element[] selectElements(Element current)
36      throws XPathFormatException {
37          Element[] elements = super.selectElements(current);
38          if (elements == null)
39              return EMPTY;
40          int len = elements.length;
41          if (elements.length <= 0)
42              return EMPTY;
43          List in = new ArrayList();
44          int i = 0;
45          for (; i < len; i++) {
46              Element element = elements[i];
47              boolean filtered = true;
48              if (filters != null) {
49                  int j = 0;
50                  int len2 = filters.length;
51                  for (; j < len2; j++) {
52                      XPathFilter filter = filters[j];
53                      filtered = filter.doFilter(element);
54                      if (!filtered)
55                          break;
56                  }
57              }
58              if (filtered)
59                  in.add(element);
60          }
61          return (Element[]) in.toArray(new Element[0]);
62      }
63      
64  }