KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > smallsql > database > CommandUpdate


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  * CommandUpdate.java
29  * ---------------
30  * Author: Volker Berlin
31  *
32  */

33 package smallsql.database;
34
35
36 /**
37  * @author Volker Berlin
38  *
39  */

40 class CommandUpdate extends CommandSelect {
41
42     // expression from the SET clause like SET dest1 = src1, dest2 = src2
43
private Expressions destinations = new Expressions();
44     private Expressions sources = new Expressions();
45     
46     private Expression[] newRowSources;
47     
48     CommandUpdate( Logger log ){
49         super(log);
50     }
51     
52     /**
53      * Set a value pair of the update command. For example:
54      * "UPDATE table1 SET col1 = 234"
55      * "col1" is the dest
56      * "234" is the source
57      * @param dest
58      * @param source must be a ExpressionName
59      */

60     void addSetting(Expression dest, Expression source){
61         //destinations.add(dest);
62
columnExpressions.add(dest);
63         sources.add(source);
64     }
65     
66     
67     /*boolean compile(SSConnection con) throws Exception{
68         if(super.compile(con)){
69             TableView table = TableViewResult.getTableViewResult(join).getTableView();
70             newRowSources = new Expression[table.columns.size()];
71             for(int i=0; i<destinations.size(); i++){
72                 String name = destinations.get(i).getName();
73                 int colIdx = table.findColumn( name );
74                 if(colIdx>=0){
75                     // Column found
76                     newRowSources[colIdx] = sources.get(i);
77                     break;
78                 }else
79                     throw Utils.createSQLException("Invalid column name '" + name + "'.");
80             }
81             return true;
82         }
83         return false;
84     }*/

85     
86     
87     void executeImpl(SSConnection con, SSStatement st) throws Exception JavaDoc {
88         int count = columnExpressions.size();
89         columnExpressions.addAll(sources);
90         compile(con);
91         columnExpressions.setSize(count);
92         //TableViewResult result = TableViewResult.getTableViewResult(join);
93
newRowSources = sources.toArray();
94         updateCount = 0;
95         join.execute();
96         while(next()){
97             //result.updateRow(newRowSources);
98
updateRow( con, newRowSources);
99             updateCount++;
100         }
101     }
102 }
103
Popular Tags