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

COVERAGE SUMMARY FOR SOURCE FILE [ExpressionFunctionSubstring.java]

nameclass, %method, %block, %line, %
ExpressionFunctionSubstring.java100% (1/1)100% (5/5)91%  (136/149)95%  (25,7/27)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ExpressionFunctionSubstring100% (1/1)100% (5/5)91%  (136/149)95%  (25,7/27)
getBytes (): byte [] 100% (1/1)83%  (63/76)91%  (13,7/15)
ExpressionFunctionSubstring (): void 100% (1/1)100% (3/3)100% (1/1)
getFunction (): int 100% (1/1)100% (2/2)100% (1/1)
getString (): String 100% (1/1)100% (52/52)100% (9/9)
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 * ExpressionFunctionSubstring.java
29 * ---------------
30 * Author: Volker Berlin
31 * 
32 * Created on 23.06.2004
33 */
34package smallsql.database;
35 
36 
37/**
38 * @author Volker Berlin
39 */
40final class ExpressionFunctionSubstring extends ExpressionFunctionReturnP1StringAndBinary {
41 
42 
43        final int getFunction() {
44                return SQLTokenizer.SUBSTRING;
45        }
46 
47 
48        final boolean isNull() throws Exception {
49                return param1.isNull() || param2.isNull() || param3.isNull();
50        }
51 
52 
53        final byte[] getBytes() throws Exception{
54                if(isNull()) return null;
55                byte[] bytes = param1.getBytes();
56                int byteLen = bytes.length;
57                int start  = Math.min( Math.max( 0, param2.getInt() - 1), byteLen);
58                int length = param3.getInt();
59                if(length < 0) 
60                        throw Utils.createSQLException("Invalid length '"+length + "' in function SUBSTRING");
61                if(start == 0 && byteLen == length) return bytes;
62                if(byteLen > length + start){
63                        byte[] b = new byte[length];
64                        System.arraycopy(bytes, start, b, 0, length);
65                        return b;                
66                }else{
67                        byte[] b = new byte[byteLen - start];
68                        System.arraycopy(bytes, start, b, 0, b.length);
69                        return b;                
70                }
71        }
72        
73        
74        final String getString() throws Exception {
75                if(isNull()) return null;
76                String str = param1.getString();
77                int strLen = str.length();
78                int start  = Math.min( Math.max( 0, param2.getInt() - 1), strLen);
79                int length = param3.getInt();
80                if(length < 0) 
81                        throw Utils.createSQLException("Invalid length '"+length + "' in function SUBSTRING");
82                length = Math.min( length, strLen-start );
83                return str.substring(start, start+length);
84        }
85 
86 
87}

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