KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > susebox > jtopas > spi > StandardKeywordHandler


1 /*
2  * StandardKeywordHandler.java: Implementation of KeywordHandler.
3  *
4  * Copyright (C) 2002 Heiko Blau
5  *
6  * This file belongs to the JTopas Library.
7  * JTopas is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU Lesser General Public License as published by the
9  * Free Software Foundation; either version 2.1 of the License, or (at your
10  * option) any later version.
11  *
12  * This software is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE.
15  * See the GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License along
18  * with JTopas. If not, write to the
19  *
20  * Free Software Foundation, Inc.
21  * 59 Temple Place, Suite 330,
22  * Boston, MA 02111-1307
23  * USA
24  *
25  * or check the Internet: http://www.fsf.org
26  *
27  * Contact:
28  * email: heiko@susebox.de
29  */

30
31 package de.susebox.jtopas.spi;
32
33 //-----------------------------------------------------------------------------
34
// Imports
35
//
36
import de.susebox.jtopas.TokenizerProperty;
37 import de.susebox.jtopas.TokenizerProperties;
38
39
40 //-----------------------------------------------------------------------------
41
// class StandardKeywordHandler
42
//
43

44 /**<p>
45  * Simple implementation of the {@link KeywordHandler} interface. This class
46  * works only with the {@link de.susebox.jtopas.TokenizerProperties} interface
47  * methods and is aware of changes in these properties. It does not cache any
48  * information and is therefore a more or less slow way to handle keywords.
49  *</p><p>
50  * This class is a bridge between arbitrary {@link de.susebox.jtopas.Tokenizer}
51  * implementations using the SPI interface {@link KeywordHandler} and any
52  * {@link de.susebox.jtopas.TokenizerProperties} implementation that does not
53  * implement the <code>KeywordHandler</code> interface itself.
54  *</p>
55  *
56  * @see KeywordHandler
57  * @see de.susebox.jtopas.Tokenizer
58  * @see de.susebox.jtopas.TokenizerProperties
59  * @author Heiko Blau
60  */

61 public class StandardKeywordHandler implements KeywordHandler {
62   
63   /**
64    * The constructor takes the {@link de.susebox.jtopas.TokenizerProperties}
65    * that provide the keywords.
66    *
67    * @param props the {@link de.susebox.jtopas.TokenizerProperties} to take the
68    * keywords from
69    */

70   public StandardKeywordHandler(TokenizerProperties props) {
71     _properties = props;
72   }
73   
74   /**
75    * This method can be used by a {@link de.susebox.jtopas.Tokenizer} implementation
76    * for a fast detection if keyword matching must be performed at all. If the method
77    * returns <code>false</code> time-consuming preparations can be skipped.
78    *
79    * @return <code>true</code> if there actually are pattern that can be tested
80    * for a match, <code>false</code> otherwise.
81    */

82   public boolean hasKeywords() {
83     if (_properties != null) {
84       return _properties.getKeywords().hasNext();
85     } else {
86       return false;
87     }
88   }
89   
90   /**
91    * This method checks if the character range given through the
92    * {@link DataProvider} comprises a keyword.
93    *
94    * @param dataProvider the source to get the data from, that are checked
95    * @return a {@link de.susebox.jtopas.TokenizerProperty} if a keyword could be
96    * found, <code>null</code> otherwise
97    * @throws TokenizerException failure while reading more data
98    * @throws NullPointerException if no {@link DataProvider} is given
99    */

100   public TokenizerProperty isKeyword(DataProvider dataProvider) throws NullPointerException JavaDoc {
101     if (_properties != null) {
102       return _properties.getKeyword(dataProvider.toString());
103     } else {
104       return null;
105     }
106   }
107
108   
109   //---------------------------------------------------------------------------
110
// Members
111
//
112

113   /**
114    * The {@link TokenizerProperties} that provide the keywords and the
115    * control flags.
116    */

117   private TokenizerProperties _properties = null;
118 }
119
Popular Tags