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

COVERAGE SUMMARY FOR SOURCE FILE [RowSource.java]

nameclass, %method, %block, %line, %
RowSource.java100% (1/1)82%  (9/11)84%  (27/32)82%  (9/11)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class RowSource100% (1/1)82%  (9/11)84%  (27/32)82%  (9/11)
hasAlias (): boolean 0%   (0/1)0%   (0/2)0%   (0/1)
setAlias (String): void 0%   (0/1)0%   (0/3)0%   (0/1)
RowSource (): void 100% (1/1)100% (3/3)100% (1/1)
absolute (int): boolean 100% (1/1)100% (3/3)100% (1/1)
isAfterLast (): boolean 100% (1/1)100% (3/3)100% (1/1)
isBeforeFirst (): boolean 100% (1/1)100% (3/3)100% (1/1)
isFirst (): boolean 100% (1/1)100% (3/3)100% (1/1)
isLast (): boolean 100% (1/1)100% (3/3)100% (1/1)
last (): boolean 100% (1/1)100% (3/3)100% (1/1)
previous (): boolean 100% (1/1)100% (3/3)100% (1/1)
relative (int): boolean 100% (1/1)100% (3/3)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 * RowSource.java
29 * ---------------
30 * Author: Volker Berlin
31 * 
32 */
33package smallsql.database;
34 
35import java.sql.*;
36/**
37 * This is the navigation through the rows of any source.
38 * This is an abstract class and not an interface because interfaces are ever public.
39 * All Implementations are used as a Source in the FROM clause.
40 * 
41 * Know Implementations are:
42 * - Join
43 * - TableResult
44 * - ViewResult
45 * - MemoryResult
46 * - GroupResult (extends from MemoryResult)
47 * - SortedResult
48 * - UnionAll
49 * 
50 * Future Implementations are:
51 * - Inner SELECT
52 * - row function
53 */
54abstract class RowSource {
55        
56        
57        /**
58         * If this RowSource is scrollable. It means it can scroll in all directions.
59         */
60        abstract boolean isScrollable();
61        
62        /**
63         * Equals to ResultSet.beforeFirst()
64         */
65        abstract void beforeFirst() throws Exception;
66 
67        
68        
69        /**
70         * Equals to ResultSet.isBeforeFirst().
71         */
72        boolean isBeforeFirst() throws SQLException{
73                throw Utils.createSQLException("ResultSet is forward only.");
74        }
75 
76        /**
77         * Equals to ResultSet.isFirst().
78         */
79        boolean isFirst() throws SQLException{
80                throw Utils.createSQLException("ResultSet is forward only.");
81        }
82    
83 
84        /**
85         * Equals to ResultSet.first()
86         * @return
87         */
88    abstract boolean first() throws Exception;
89 
90        boolean previous() throws Exception{
91                throw Utils.createSQLException("ResultSet is forward only.");
92        }
93        
94    abstract boolean next() throws Exception;
95    
96    
97        boolean last() throws Exception{
98                throw Utils.createSQLException("ResultSet is forward only.");
99        }
100        
101        
102        /**
103         * Equals to ResultSet.isLast().
104         */
105        boolean isLast() throws Exception{
106                throw Utils.createSQLException("ResultSet is forward only.");
107        }
108 
109        /**
110         * Equals to ResultSet.isAfterLast().
111         */
112        boolean isAfterLast() throws SQLException, Exception{
113                throw Utils.createSQLException("ResultSet is forward only.");
114        }
115    
116 
117        abstract void afterLast() throws Exception;
118        
119        
120        boolean absolute(int row) throws Exception{
121                throw Utils.createSQLException("ResultSet is forward only.");
122        }
123        
124        
125        boolean relative(int rows) throws Exception{
126                throw Utils.createSQLException("ResultSet is forward only.");
127        }
128        
129        
130        abstract int getRow() throws Exception;
131        
132    
133    
134    /**
135     * Get a marker for the current row. The method setRowPostion must be reconstruct
136     * the current row. The RowPosition can be a file offset for TableResult.
137     * This is using for SortedResult.
138     * @return The value need be >= 0.
139     * It can be a counter for MemoryResult.
140     */
141        abstract long getRowPosition();
142 
143        /**
144         * Restore the row that was marked with the value. This is using for SortedResult.
145         * @param rowPosition Only values that are return from getRowPosition are valid.
146         */
147        abstract void setRowPosition(long rowPosition) throws Exception;
148        
149        /**
150         * Is used for OUTER JOIN to set the RowSource to NULL if the row exists
151         * only in the major RowSource (table)
152         */
153        abstract void nullRow();
154        
155        /**
156         * Is used for JOIN to set both site to "No current row". This is needed if
157         * one site has 0 rows that the getXXX() methods throw this exception.
158         */
159        abstract void noRow();
160        
161        
162        /**
163         * If the current row is inserted in this ResultSet.
164         */
165        abstract boolean rowInserted();
166        
167        /**
168         * If the current row is deleted.
169         */
170        abstract boolean rowDeleted();
171        
172        /**
173         * Returns true if a alias was set and no more alias can be set. 
174         * This is used from the SQLParser
175         * @return 
176         */
177    boolean hasAlias(){
178            return true;
179    }
180        
181 
182    void setAlias(String name) throws SQLException{
183        throw Utils.createSQLException("Alias not supported for this type of row source." );
184    }
185    
186    /**
187     * Perform some operation on some RowSources per ResultSet. For example the grouping
188     * on GroupResult and sorting on SortedResult.
189     */
190    abstract void execute() throws Exception;
191    
192}

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