01: package org.apache.lucene.analysis;
02:
03: /**
04: * Licensed to the Apache Software Foundation (ASF) under one or more
05: * contributor license agreements. See the NOTICE file distributed with
06: * this work for additional information regarding copyright ownership.
07: * The ASF licenses this file to You under the Apache License, Version 2.0
08: * (the "License"); you may not use this file except in compliance with
09: * the License. You may obtain a copy of the License at
10: *
11: * http://www.apache.org/licenses/LICENSE-2.0
12: *
13: * Unless required by applicable law or agreed to in writing, software
14: * distributed under the License is distributed on an "AS IS" BASIS,
15: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16: * See the License for the specific language governing permissions and
17: * limitations under the License.
18: */
19:
20: import java.io.IOException;
21: import java.io.Reader;
22:
23: /**
24: * Emits the entire input as a single token.
25: */
26: public class KeywordTokenizer extends Tokenizer {
27:
28: private static final int DEFAULT_BUFFER_SIZE = 256;
29:
30: private boolean done;
31:
32: public KeywordTokenizer(Reader input) {
33: this (input, DEFAULT_BUFFER_SIZE);
34: }
35:
36: public KeywordTokenizer(Reader input, int bufferSize) {
37: super (input);
38: this .done = false;
39: }
40:
41: public Token next(Token result) throws IOException {
42: if (!done) {
43: done = true;
44: int upto = 0;
45: result.clear();
46: char[] buffer = result.termBuffer();
47: while (true) {
48: final int length = input.read(buffer, upto,
49: buffer.length - upto);
50: if (length == -1)
51: break;
52: upto += length;
53: if (upto == buffer.length)
54: buffer = result.resizeTermBuffer(1 + buffer.length);
55: }
56: result.termLength = upto;
57: return result;
58: }
59: return null;
60: }
61:
62: public void reset(Reader input) throws IOException {
63: super .reset(input);
64: this .done = false;
65: }
66: }
|