01: /*
02: * KeywordHandler.java: Interface for keyword-aware tokenizers.
03: *
04: * Copyright (C) 2002 Heiko Blau
05: *
06: * This file belongs to the JTopas Library.
07: * JTopas is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU Lesser General Public License as published by the
09: * 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.TokenizerException;
38:
39: //-----------------------------------------------------------------------------
40: // Interface KeywordHandler
41: //
42:
43: /**<p>
44: * This interface must be implemented by classes that should be used as a
45: * keyword handler for a {@link de.susebox.jtopas.Tokenizer}.
46: *</p>
47: *
48: * @see de.susebox.jtopas.Tokenizer
49: * @see de.susebox.jtopas.TokenizerProperties
50: * @see de.susebox.jtopas.spi.DataMapper
51: * @author Heiko Blau
52: */
53: public interface KeywordHandler {
54:
55: /**
56: * This method can be used by a {@link de.susebox.jtopas.Tokenizer} implementation
57: * for a fast detection if keyword matching must be performed at all. If the method
58: * returns <code>false</code> time-consuming preparations can be skipped.
59: *
60: * @return <code>true</code> if there actually are pattern that can be tested
61: * for a match, <code>false</code> otherwise.
62: */
63: public boolean hasKeywords();
64:
65: /**
66: * This method checks if the character range given through the
67: * {@link DataProvider} comprises a keyword. An implementation should use
68: * a {@link de.susebox.jtopas.TokenizerException} to report problems.
69: *
70: * @param dataProvider the source to get the data from, that are checked
71: * @return a {@link de.susebox.jtopas.TokenizerProperty} if a keyword could be
72: * found, <code>null</code> otherwise
73: * @throws TokenizerException generic exception
74: * @throws NullPointerException if no {@link DataProvider} is given
75: */
76: public TokenizerProperty isKeyword(DataProvider dataProvider)
77: throws TokenizerException, NullPointerException;
78: }
|