src/jdict/DictIndex.java
author viric@llimona
Sun, 29 Jul 2007 23:28:51 +0200
changeset 25 764c48b54327
parent 21 0739404e26dc
child 28 dccb4ae23699
permissions -rw-r--r--
Riparitaj eraretoj.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     1
package jdict;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     2
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     3
import java.io.*;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     4
import java.util.Vector;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     5
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     6
public class DictIndex
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     7
{
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
     8
    BlockFile in;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     9
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    10
    String index_basename;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    11
    String defs_basename;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    12
    int index_id;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    13
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    14
    int top_index;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    15
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    16
    public DictIndex(String dictname)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    17
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    18
        index_basename = "/dicts/x-" + dictname + ".index";
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
    19
        in = new BlockFile(index_basename);
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    20
        get_top_index();
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    21
    }
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    22
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    23
    public void get_top_index()
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    24
    {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    25
        InputStream bfile = getClass().getResourceAsStream("/dicts/TOPINDEX");
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    26
        /* 10 bytes is enough for a simple int */
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    27
        byte array[] = new byte[10];
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    28
        int total;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    29
        try {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    30
            total = bfile.read(array, 0, 10);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    31
        } catch (IOException e)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    32
        {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    33
            System.out.println("Cannot open TOPINDEX.");
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    34
            top_index = 0;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    35
            return;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    36
        }
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    37
        /* This will have '\n' */
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    38
        String str = new String(array, 0, total - 1 /* - \n */);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    39
        top_index = Integer.parseInt(str);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    40
        System.out.println("Top Index: " +
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    41
                new Integer(top_index).toString());
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    42
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    43
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    44
    public String getName()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    45
    {
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
    46
        byte tmp[] = new byte[100];
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    47
        int i;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    48
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    49
        i = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    50
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    51
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    52
            try {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    53
                int c = in.read();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    54
                if (c == -1)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    55
                {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
    56
                    System.out.println("EOF in getName");
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
    57
                    break;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    58
                }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    59
                tmp[i] = (byte) c;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    60
            } catch (IOException e)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    61
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    62
                System.out.println("IO Exception: " +  e.getMessage());
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
    63
                break;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    64
            }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    65
            i += 1;
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
    66
        } while (tmp[i-1] != '\t' /* tab */ && i < 100);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    67
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
    68
        if (i == 51 || i == 0)
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    69
            return null;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    70
8
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    71
        String result;
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    72
        try {
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    73
            result = new String(tmp, 0, i-1, "UTF-8");
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    74
        } catch (UnsupportedEncodingException e)
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    75
        {
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    76
            System.out.println("Unsupported encoding.");
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    77
            return null;
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    78
        }
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
    79
        return result;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    80
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    81
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    82
    public int getLength()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    83
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    84
        /* We reuse getOffset, as it breaks on \n too */
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    85
        return getOffset();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    86
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    87
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    88
    public int getOffset()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    89
    {
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
    90
        byte tmp[] = new byte[100];
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    91
        int i;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    92
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    93
        i = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    94
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    95
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    96
            try {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    97
                int c = in.read();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    98
                if (c == -1)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    99
                {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   100
                    System.out.println("EOF in getOffest");
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   101
                    return -1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   102
                }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   103
                tmp[i] = (byte) c;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   104
            } catch (IOException e)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   105
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   106
                System.out.println("IO Exception: " +  e.getMessage());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   107
                return -1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   108
            }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   109
            i += 1;
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
   110
        } while (tmp[i-1] != '\t' /* tab */ && tmp[i-1] != '\n' && i < 100);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   111
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   112
        if (i == 51)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   113
            return -1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   114
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   115
        return IA5toNumber(tmp, i-1);
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   116
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   117
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   118
    public void readUntilNewLine()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   119
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   120
        byte tmp;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   121
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   122
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   123
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   124
            try {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   125
                int c = in.read();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   126
                if (c == -1)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   127
                {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   128
                    System.out.println("EOF in readUntilNewLine");
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   129
                    return;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   130
                }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   131
                tmp = (byte) c;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   132
            } catch (IOException e)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   133
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   134
                System.out.println("IO Exception: " +  e.getMessage());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   135
                return;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   136
            }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   137
        } while (tmp != '\n');
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   138
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   139
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   140
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   141
    public int IA5value(byte letter)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   142
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   143
        switch(letter)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   144
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   145
            case 'A': return 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   146
            case 'B': return 1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   147
            case 'C': return 2;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   148
            case 'D': return 3;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   149
            case 'E': return 4;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   150
            case 'F': return 5;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   151
            case 'G': return 6;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   152
            case 'H': return 7;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   153
            case 'I': return 8;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   154
            case 'J': return 9;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   155
            case 'K': return 10;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   156
            case 'L': return 11;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   157
            case 'M': return 12;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   158
            case 'N': return 13;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   159
            case 'O': return 14;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   160
            case 'P': return 15;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   161
            case 'Q': return 16;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   162
            case 'R': return 17;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   163
            case 'S': return 18;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   164
            case 'T': return 19;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   165
            case 'U': return 20;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   166
            case 'V': return 21;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   167
            case 'W': return 22;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   168
            case 'X': return 23;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   169
            case 'Y': return 24;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   170
            case 'Z': return 25;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   171
            case 'a': return 26;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   172
            case 'b': return 27;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   173
            case 'c': return 28;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   174
            case 'd': return 29;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   175
            case 'e': return 30;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   176
            case 'f': return 31;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   177
            case 'g': return 32;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   178
            case 'h': return 33;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   179
            case 'i': return 34;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   180
            case 'j': return 35;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   181
            case 'k': return 36;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   182
            case 'l': return 37;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   183
            case 'm': return 38;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   184
            case 'n': return 39;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   185
            case 'o': return 40;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   186
            case 'p': return 41;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   187
            case 'q': return 42;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   188
            case 'r': return 43;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   189
            case 's': return 44;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   190
            case 't': return 45;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   191
            case 'u': return 46;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   192
            case 'v': return 47;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   193
            case 'w': return 48;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   194
            case 'x': return 49;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   195
            case 'y': return 50;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   196
            case 'z': return 51;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   197
            case '0': return 52;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   198
            case '1': return 53;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   199
            case '2': return 54;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   200
            case '3': return 55;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   201
            case '4': return 56;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   202
            case '5': return 57;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   203
            case '6': return 58;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   204
            case '7': return 59;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   205
            case '8': return 60;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   206
            case '9': return 61;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   207
            case '+': return 62;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   208
            case '/': return 63;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   209
            default:
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   210
                      return 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   211
        }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   212
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   213
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   214
    public int IA5toNumber(byte array[], int length)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   215
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   216
        int i = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   217
        int value = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   218
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   219
        while (i < length)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   220
        {
15
b3cd84530d9a Removed traces.
viric@mandarina
parents: 14
diff changeset
   221
            /* DEBUG
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   222
            System.out.println("Value1: " + new Integer(value).toString());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   223
            System.out.println("Array[i]: " + (char) array[i]);
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   224
            System.out.println("IA5Value: " +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   225
                    new Integer(IA5value(array[i])).toString());
15
b3cd84530d9a Removed traces.
viric@mandarina
parents: 14
diff changeset
   226
                    */
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   227
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   228
            value = IA5value(array[i]) + value * 64;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   229
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   230
            System.out.println("Value2: " + new Integer(value).toString());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   231
            i += 1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   232
        }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   233
        return value;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   234
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   235
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   236
    public String EntryToString()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   237
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   238
        String name = getName();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   239
        int offset = getOffset();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   240
        int length = getLength();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   241
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   242
        return new String(name + " " + new Integer(offset).toString() +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   243
                " " + new Integer(length).toString());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   244
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   245
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   246
    public boolean WordMatches(String w1, String w2)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   247
    {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   248
        /* System.out.println("Comparing " + w1 + " to " + w2);*/
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   249
        if (w1.equals(w2))
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   250
            return true;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   251
        return false;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   252
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   253
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   254
    public Vector SearchDefinition(String word)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   255
    {
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   256
        return SearchDefinition(word, -1);
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   257
    }
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   258
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   259
    /* if max >0, limit the search. */
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   260
    public Vector SearchDefinition(String word, int max)
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   261
    {
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   262
        try {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   263
            in.seekFromStart(0);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   264
        } catch (IOException e)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   265
        {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   266
            System.out.println("Cannot go back to start in search def.");
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   267
        }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   268
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   269
        Vector results = new Vector();
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   270
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   271
        return SearchNextDefinition(results, word, max);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   272
    }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   273
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   274
    /* if max >0, limit the search. */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   275
    public Vector SearchNextDefinition(Vector results, String word, int max)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   276
    {
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   277
        int count = 0;
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   278
        System.out.println("Searching " + word);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   279
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   280
        String test;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   281
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   282
        {
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   283
            if (max > 0 && count > max)
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   284
            {
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   285
                /* Void results */
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   286
                break;
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   287
            }
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   288
            test = getName();
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   289
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   290
            if (test == null)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   291
                break;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   292
            if (WordMatches(word,test))
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   293
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   294
                int offset = getOffset();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   295
                int length = getLength();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   296
                System.out.println("Definition for " + word + " at " +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   297
                        new Integer(offset).toString() +  " length " +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   298
                        new Integer(length).toString());
19
6320751cad22 Added resultlist
viric@mandarina
parents: 15
diff changeset
   299
                /*String definition = defs.getDefinition(offset, length);*/
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   300
                Vorto vorto = new Vorto(test, offset, length);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   301
19
6320751cad22 Added resultlist
viric@mandarina
parents: 15
diff changeset
   302
                results.addElement(vorto);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   303
            } else
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   304
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   305
                readUntilNewLine();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   306
            }
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   307
            ++count;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   308
        } while (test != null);
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   309
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   310
        return results;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   311
    }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   312
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   313
    /* if max >0, limit the search. */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   314
    public Vector SearchNextPrefixes(Vector results, String word, int max)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   315
    {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   316
        int count = 0;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   317
        System.out.println("Searching " + word);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   318
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   319
        String test;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   320
        do
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   321
        {
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   322
            if (max > 0 && count > max)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   323
            {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   324
                /* Void results */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   325
                break;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   326
            }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   327
            test = getName();
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   328
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   329
            if (test == null)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   330
                break;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   331
            if (test.startsWith(word))
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   332
            {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   333
                int offset = getOffset();
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   334
                int length = getLength();
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   335
                System.out.println("Definition for " + word + " at " +
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   336
                        new Integer(offset).toString() +  " length " +
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   337
                        new Integer(length).toString());
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   338
                /*String definition = defs.getDefinition(offset, length);*/
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   339
                Vorto vorto = new Vorto(test, offset, length);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   340
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   341
                results.addElement(vorto);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   342
                readUntilNewLine();
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   343
            } else
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   344
            {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   345
                break;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   346
            }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   347
            ++count;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   348
        } while (test != null);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   349
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   350
        return results;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   351
    }
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   352
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   353
    public Vector BinarySearchDefinition(String word)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   354
    {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   355
        Vector results = new Vector();
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   356
        int pivot = top_index / 2;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   357
        int step = top_index / 2;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   358
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   359
        String test;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   360
        do
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   361
        {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   362
            System.out.println("Pivoting to " +
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   363
                    new Integer(pivot).toString());
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   364
            try {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   365
                in.seekFromStart(pivot);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   366
            } catch (IOException e)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   367
            {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   368
                System.out.println("Seek from start error");
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   369
                return results;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   370
            }
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   371
            readUntilNewLine();
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   372
            test = getName();
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   373
            if (test == null)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   374
                break;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   375
            int comparision = word.compareTo(test);
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   376
            System.out.println("Comparing to " + test);
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   377
            if (comparision == 0)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   378
            {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   379
                int offset = getOffset();
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   380
                int length = getLength();
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   381
                System.out.println("Definition for " + word + " at " +
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   382
                        new Integer(offset).toString() +  " length " +
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   383
                        new Integer(length).toString());
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   384
19
6320751cad22 Added resultlist
viric@mandarina
parents: 15
diff changeset
   385
                /*String definition = defs.getDefinition(offset, length);*/
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   386
                Vorto vorto = new Vorto(test, offset, length);
19
6320751cad22 Added resultlist
viric@mandarina
parents: 15
diff changeset
   387
6320751cad22 Added resultlist
viric@mandarina
parents: 15
diff changeset
   388
                results.addElement(vorto);
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   389
                break;
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   390
            } else if (comparision < 0)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   391
            {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   392
                step = step / 2;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   393
                pivot = pivot - step;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   394
            } else if (comparision > 0)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   395
            {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   396
                step = step / 2;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   397
                pivot = pivot + step;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   398
            }
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   399
        } while (step > 0);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   400
21
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   401
        /* If we didn't find a word, replace the pivot */
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   402
        if (results.size() == 0)
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   403
        {
21
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   404
            try {
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   405
                in.seekFromStart(pivot);
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   406
            } catch (IOException e)
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   407
            {
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   408
                System.out.println("Seek from start error");
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   409
                return results;
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   410
            }
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   411
        }
21
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   412
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   413
        readUntilNewLine();
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   414
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   415
        /* Add the prefixes */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   416
        SearchNextPrefixes(results, word, 49); /* Max 50 prefixes. Match+nexts*/
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   417
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   418
        return results;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   419
    }
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   420
}