01: /*
02: * NoCaseSequenceStore.java: case-insensitive derivate of SequenceStore
03: *
04: * Copyright (C) 2004 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.impl;
32:
33: //-----------------------------------------------------------------------------
34: // Imports
35: //
36:
37: //-----------------------------------------------------------------------------
38: // Class NoCaseSequenceStore
39: //
40:
41: /**
42: * Case-insensitive extension of {@link SequenceStore}.
43: *
44: * @see de.susebox.jtopas.StandardTokenizerProperties
45: * @see de.susebox.jtopas.spi.SequenceHandler
46: * @author Heiko Blau
47: */
48: public class NoCaseSequenceStore extends SequenceStore {
49:
50: //---------------------------------------------------------------------------
51: // Constructors
52: //
53:
54: /**
55: * The constructor initializes a <code>NoCaseSequenceStore</code>
56: *
57: * @param useExactLength if <code>true</code> search only for a property that
58: * has the length of {@link de.susebox.jtopas.spi.DataProvider#getLength}
59: */
60: public NoCaseSequenceStore(boolean useExactLength) {
61: super (useExactLength);
62: }
63:
64: //---------------------------------------------------------------------------
65: // Implementation
66: //
67:
68: /**
69: * Derived method for case-insensitive handling.
70: *
71: * @param startChar a not normalized start character
72: * @return the normalized start character
73: */
74: protected char getStartChar(char startChar) {
75: return Character.toUpperCase(startChar);
76: }
77:
78: /**
79: * Compare tho characters. Returns the difference of the to characters, 0 if
80: * they are equal.
81: *
82: * @param char1 first character to compare
83: * @param char2 first character to compare
84: * @return 0 if equal, < 0 if char1 < char2, > 0 otherwise
85: */
86: protected int compare(char char1, char char2) {
87: int res = char1 - char2;
88:
89: if (res != 0) {
90: res = Character.toUpperCase(char1)
91: - Character.toUpperCase(char2);
92: }
93: return res;
94: }
95: }
|