/ org.htmlparser / src / org / htmlparser / visitors / StringFindingVisitor.java
StringFindingVisitor.java
 1  // HTMLParser Library $Name: v1_6_20060319 $ - A java-based parser for HTML
 2  // http://sourceforge.org/projects/htmlparser
 3  // Copyright (C) 2004 Joshua Kerievsky
 4  //
 5  // Revision Control Information
 6  //
 7  // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/visitors/StringFindingVisitor.java,v $
 8  // $Author: derrickoswald $
 9  // $Date: 2004/05/24 16:18:36 $
10  // $Revision: 1.40 $
11  //
12  // This library is free software; you can redistribute it and/or
13  // modify it under the terms of the GNU Lesser General Public
14  // License as published by the Free Software Foundation; either
15  // version 2.1 of the License, or (at your option) any later version.
16  //
17  // This library is distributed in the hope that it will be useful,
18  // but WITHOUT ANY WARRANTY; without even the implied warranty of
19  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20  // Lesser General Public License for more details.
21  //
22  // You should have received a copy of the GNU Lesser General Public
23  // License along with this library; if not, write to the Free Software
24  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25  //
26  
27  package org.htmlparser.visitors;
28  
29  import java.util.Locale;
30  
31  import org.htmlparser.Text;
32  
33  public class StringFindingVisitor extends NodeVisitor
34  {
35      private String stringToFind;
36      private int foundCount;
37      private boolean multipleSearchesWithinStrings;
38      private Locale locale;
39  
40      public StringFindingVisitor(String stringToFind)
41      {
42          this (stringToFind, null);
43      }
44  
45      public StringFindingVisitor(String stringToFind, Locale locale)
46      {
47          this.locale = (null == locale) ? Locale.ENGLISH : locale;
48          this.stringToFind = stringToFind.toUpperCase (this.locale);
49          foundCount = 0;
50          multipleSearchesWithinStrings = false;
51      }
52  
53      public void doMultipleSearchesWithinStrings()
54      {
55          multipleSearchesWithinStrings = true;
56      }
57  
58      public void visitStringNode(Text stringNode)
59      {
60          String stringToBeSearched = stringNode.getText().toUpperCase(locale);
61          if (!multipleSearchesWithinStrings &&
62              stringToBeSearched.indexOf(stringToFind) != -1) {
63              foundCount++;
64          } else if (multipleSearchesWithinStrings) {
65              int index = -1;
66              do {
67                  index = stringToBeSearched.indexOf(stringToFind, index+1);
68                  if (index!=-1)
69                      foundCount++;
70              } while (index != -1);
71          }
72      }
73  
74      public boolean stringWasFound()
75      {
76          return (0 != stringFoundCount());
77      }
78  
79      public int stringFoundCount()
80      {
81          return foundCount;
82      }
83  
84  }