View Javadoc

1   package org.paneris.bibliomania.fti;
2   
3   class WordTextSearchResults extends TextSearchResultsBase {
4   
5     private byte[] data = null;
6     private int dataLength = 0;
7     private int pointer = -1;
8     private int currentWordIndex, currentOffset;
9     private Packer wordIndexPacker;
10    private Packer offsetPacker;
11  
12    public int hitWordsCount() {
13      return 1;
14    }
15  
16    public void init() {
17      pointer = 0;
18      wordIndexPacker = OnePacker.it;
19      offsetPacker = OnePacker.it;
20      skipToNextHit();
21    }
22  
23    public void init(byte[] dataP, int dataLengthP) {
24      this.data = dataP;
25      this.dataLength = dataLengthP;
26      init();
27    }
28  
29    public void skipToNextHit() {
30      for (;;) {
31        if (pointer + wordIndexPacker.numberLength() > dataLength) {
32          pointer = -1;
33          return;
34        }
35  
36        currentWordIndex = wordIndexPacker.number(data, pointer);
37        pointer += wordIndexPacker.numberLength();
38  
39        if (currentWordIndex == wordIndexPacker.numberMax())
40          wordIndexPacker = wordIndexPacker.bigger();
41        else
42          break;
43      }
44  
45      for (;;) {
46        if (pointer + offsetPacker.numberLength() > dataLength) {
47          pointer = -1;
48          return;
49        }
50  
51        currentOffset = offsetPacker.number(data, pointer);
52        pointer += offsetPacker.numberLength();
53  
54        if (currentOffset == offsetPacker.numberMax())
55          offsetPacker = offsetPacker.bigger();
56        else
57          break;
58      }
59    }
60  
61    public int currentWordIndex() {
62      return pointer == -1 ? -1 : currentWordIndex;
63    }
64  
65    public int currentOffset() {
66      return pointer == -1 ? -1 : currentOffset;
67    }
68  
69    public void close() {
70    }
71  }