EMMA Coverage Report (generated Wed Jun 28 19:54:35 CEST 2006)
[all classes][smallsql.database]

COVERAGE SUMMARY FOR SOURCE FILE [ExpressionFunctionSoundex.java]

nameclass, %method, %block, %line, %
ExpressionFunctionSoundex.java100% (1/1)86%  (6/7)92%  (102/111)91%  (32,6/36)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ExpressionFunctionSoundex100% (1/1)86%  (6/7)92%  (102/111)91%  (32,6/36)
getBytes (): byte [] 0%   (0/1)0%   (0/4)0%   (0/1)
getString (): String 100% (1/1)83%  (10/12)87%  (2,6/3)
getString (String): String 100% (1/1)96%  (81/84)93%  (26/28)
ExpressionFunctionSoundex (): void 100% (1/1)100% (3/3)100% (1/1)
getFunction (): int 100% (1/1)100% (2/2)100% (1/1)
getPrecision (): int 100% (1/1)100% (2/2)100% (1/1)
isNull (): boolean 100% (1/1)100% (4/4)100% (1/1)

1/* =============================================================
2 * SmallSQL : a free Java DBMS library for the Java(tm) platform
3 * =============================================================
4 *
5 * (C) Copyright 2004-2006, by Volker Berlin.
6 *
7 * Project Info:  http://www.smallsql.de/
8 *
9 * This library is free software; you can redistribute it and/or modify it 
10 * under the terms of the GNU Lesser General Public License as published by 
11 * the Free Software Foundation; either version 2.1 of the License, or 
12 * (at your option) any later version.
13 *
14 * This library is distributed in the hope that it will be useful, but 
15 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
16 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
17 * License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
22 * USA.  
23 *
24 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
25 * in the United States and other countries.]
26 *
27 * ---------------
28 * ExpressionFunctionSoundex.java
29 * ---------------
30 * Author: Volker Berlin
31 * 
32 * Created on 18.06.2006
33 */
34package smallsql.database;
35 
36 
37/**
38 * @author Volker Berlin
39 */
40public class ExpressionFunctionSoundex extends ExpressionFunctionReturnP1StringAndBinary {
41 
42        final int getFunction() {
43                return SQLTokenizer.SOUNDEX;
44        }
45 
46 
47        final boolean isNull() throws Exception {
48                return param1.isNull();
49        }
50 
51 
52        final byte[] getBytes() throws Exception{
53        throw createUnspportedConversion(SQLTokenizer.BINARY);
54        }
55        
56        
57        final String getString() throws Exception {
58                if(isNull()) return null;
59        String input = param1.getString();
60        return getString(input);
61    }
62     
63    
64    static String getString(String input){
65        char[] output = new char[4];
66        int idx = 0;;
67        input = input.toUpperCase();
68        if(input.length()>0){
69            output[idx++] = input.charAt(0);
70        }
71        char last = '0';
72        for(int i=1; idx<4 && i<input.length(); i++){
73            char c = input.charAt(i);
74            switch(c){
75            case 'B':
76            case 'F':
77            case 'P':
78            case 'V':
79                c = '1';
80                break;
81            case 'C':
82            case 'G':
83            case 'J':
84            case 'K':
85            case 'Q':
86            case 'S':
87            case 'X':
88            case 'Z':
89                c = '2';
90                break;
91            case 'D':
92            case 'T':
93                c = '3';
94                break;
95            case 'L':
96                c = '4';
97                break;
98            case 'M':
99            case 'N':
100                c = '5';
101                break;
102            case 'R':
103                c = '6';
104                break;
105            default:
106                c = '0';
107                break;
108            }
109            if(c > '0' && last != c){
110                output[idx++] = c;
111            }
112            last = c;
113        }
114        for(; idx<4;){
115            output[idx++] = '0';
116            
117        }
118                return new String(output);
119        }
120    
121    
122    int getPrecision(){
123        return 4;
124    }
125}

[all classes][smallsql.database]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov