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

COVERAGE SUMMARY FOR SOURCE FILE [ExpressionFunctionReplace.java]

nameclass, %method, %block, %line, %
ExpressionFunctionReplace.java100% (1/1)100% (6/6)98%  (165/169)95%  (40/42)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ExpressionFunctionReplace100% (1/1)100% (6/6)98%  (165/169)95%  (40/42)
getBytes (): byte [] 100% (1/1)94%  (68/72)89%  (17/19)
ExpressionFunctionReplace (): 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% (5/5)100% (1/1)
getString (): String 100% (1/1)100% (71/71)100% (19/19)
isNull (): boolean 100% (1/1)100% (16/16)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 * ExpressionFunctionReplace.java
29 * ---------------
30 * Author: Volker Berlin
31 * 
32 * Created on 23.06.2006
33 */
34package smallsql.database;
35 
36import java.io.ByteArrayOutputStream;
37 
38 
39/**
40 * @author Volker Berlin
41 */
42public class ExpressionFunctionReplace extends ExpressionFunctionReturnP1StringAndBinary {
43 
44        final int getFunction() {
45                return SQLTokenizer.REPLACE;
46        }
47 
48 
49        final boolean isNull() throws Exception {
50                return param1.isNull() || param2.isNull() || param3.isNull();
51        }
52 
53 
54        final byte[] getBytes() throws Exception{
55                if(isNull()) return null;
56        byte[] str1 = param1.getBytes();
57        byte[] str2  = param2.getBytes();
58        int length = str2.length;
59        if(length == 0){
60            return str1;
61        }
62        byte[] str3  = param3.getBytes();
63        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
64        int idx1 = 0;
65        int idx2 = Utils.indexOf(str2,str1,idx1);
66        while(idx2 > 0){
67            buffer.write(str1,idx1,idx2-idx1);
68            buffer.write(str3);
69            idx1 = idx2 + length;
70            idx2 = Utils.indexOf(str2,str1,idx1);
71        }
72        if(idx1 > 0){
73            buffer.write(str1,idx1,str1.length-idx1);
74            return buffer.toByteArray();
75        }
76        return str1;
77        }
78        
79        
80        final String getString() throws Exception {
81                if(isNull()) return null;
82                String str1 = param1.getString();
83                String str2  = param2.getString();
84        int length = str2.length();
85        if(length == 0){
86            return str1;
87        }
88        String str3  = param3.getString();
89        StringBuffer buffer = new StringBuffer();
90        int idx1 = 0;
91        int idx2 = str1.indexOf(str2,idx1);
92        while(idx2 >= 0){
93            buffer.append(str1.substring(idx1,idx2));
94            buffer.append(str3);
95            idx1 = idx2 + length;
96            idx2 = str1.indexOf(str2,idx1);
97        }
98        if(idx1 > 0){
99            buffer.append(str1.substring(idx1));
100            return buffer.toString();
101        }
102                return str1;
103        }
104 
105 
106    int getPrecision() {
107        return SSResultSetMetaData.getDataTypePrecision( getDataType(), -1 );
108    }
109 
110}

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