EMMA Coverage Report (generated Sat Nov 03 21:53:04 GMT 2007)
[all classes][sf.qof.dialect]

COVERAGE SUMMARY FOR SOURCE FILE [OracleDialect.java]

nameclass, %method, %block, %line, %
OracleDialect.java100% (1/1)100% (5/5)100% (72/72)100% (20/20)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class OracleDialect100% (1/1)100% (5/5)100% (72/72)100% (20/20)
OracleDialect (): void 100% (1/1)100% (3/3)100% (1/1)
getLimitString (String, boolean): String 100% (1/1)100% (63/63)100% (16/16)
limitAddOffset (): boolean 100% (1/1)100% (2/2)100% (1/1)
limitOffsetFirst (): boolean 100% (1/1)100% (2/2)100% (1/1)
limitParametersBeforeQueryParameters (): boolean 100% (1/1)100% (2/2)100% (1/1)

1/*
2 * Copyright 2007 brunella ltd
3 *
4 * Licensed under the LGPL Version 3 (the "License");
5 * you may not use this file except in compliance with the License.
6 *
7 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
8 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
11 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
12 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
13 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
14 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
15 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
16 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
17 * THE POSSIBILITY OF SUCH DAMAGE.
18 */
19package sf.qof.dialect;
20 
21/**
22 * Implements Oracle specific SQL syntax. 
23 */
24public class OracleDialect implements SQLDialect {
25 
26  public String getLimitString(String sql, boolean hasOffset) {
27    sql = sql.trim();
28    boolean isForUpdate = false;
29    if ( sql.toLowerCase().endsWith(" for update") ) {
30      sql = sql.substring( 0, sql.length()-11 );
31      isForUpdate = true;
32    }
33 
34    StringBuffer pagingSelect = new StringBuffer( sql.length()+100 );
35    if (hasOffset) {
36      pagingSelect.append("select * from ( select qof_row_.*, rownum qof_rownum_ from ( ");
37    }
38    else {
39      pagingSelect.append("select * from ( ");
40    }
41    pagingSelect.append(sql);
42    if (hasOffset) {
43      pagingSelect.append(" ) qof_row_ where rownum <= ?) where qof_rownum_ > ?");
44    }
45    else {
46      pagingSelect.append(" ) where rownum <= ?");
47    }
48 
49    if ( isForUpdate ) {
50      pagingSelect.append( " for update" );
51    }
52 
53    return pagingSelect.toString();
54  }
55 
56  public boolean limitParametersBeforeQueryParameters() {
57        return false;
58  }
59 
60  public boolean limitAddOffset() {
61        return true;
62  }
63 
64  public boolean limitOffsetFirst() {
65        return false;
66  }
67 
68}

[all classes][sf.qof.dialect]
EMMA 2.0.5312 (C) Vladimir Roubtsov