Upgrade to ExtJS 3.0.3 - Released 10/11/2009
[extjs.git] / examples / tasks / db / ext-gears-db.js
1 /*!
2  * Ext JS Library 3.0.3
3  * Copyright(c) 2006-2009 Ext JS, LLC
4  * licensing@extjs.com
5  * http://www.extjs.com/license
6  */
7 Ext.data.GearsDB = Ext.extend(Ext.data.SqlDB, {\r
8         // abstract methods\r
9     open : function(db, cb, scope){\r
10         this.conn = google.gears.factory.create('beta.database', '1.0');\r
11         this.conn.open(db);\r
12         this.openState = true;\r
13                 Ext.callback(cb, scope, [this]);\r
14                 this.fireEvent('open', this);\r
15     },\r
16 \r
17         close : function(){\r
18         this.conn.close();\r
19         this.fireEvent('close', this);\r
20     },\r
21 \r
22     exec : function(sql, cb, scope){\r
23         this.conn.execute(sql).close();\r
24         Ext.callback(cb, scope, [true]);\r
25     },\r
26 \r
27         execBy : function(sql, args, cb, scope){\r
28             this.conn.execute(sql, args).close();\r
29         Ext.callback(cb, scope, [true]);\r
30     },\r
31 \r
32         query : function(sql, cb, scope){\r
33         var rs = this.conn.execute(sql);\r
34         var r = this.readResults(rs);\r
35         Ext.callback(cb, scope, [r]);\r
36         return r;\r
37     },\r
38 \r
39         queryBy : function(sql, args, cb, scope){\r
40         var rs = this.conn.execute(sql, args);\r
41         var r = this.readResults(rs);\r
42         Ext.callback(cb, scope, [r]);\r
43         return r;\r
44     },\r
45 \r
46     readResults : function(rs){\r
47         var r = [];\r
48         if(rs){\r
49             var c = rs.fieldCount();\r
50             // precache field names\r
51             var fs = [];\r
52             for(var i = 0; i < c; i++){\r
53                 fs[i] = rs.fieldName(i);\r
54             }\r
55             // read the data\r
56             while(rs.isValidRow()){\r
57                 var o = {};\r
58                 for(var i = 0; i < c; i++){\r
59                     o[fs[i]] = rs.field(i);\r
60                 }\r
61                 r[r.length] = o;\r
62                 rs.next();\r
63             }\r
64             rs.close();\r
65         }\r
66         return r;\r
67     },\r
68 \r
69     // protected/inherited method\r
70     isOpen : function(){\r
71                 return this.openState;\r
72         },\r
73 \r
74         getTable : function(name, keyName){\r
75                 return new Ext.data.SqlDB.Table(this, name, keyName);\r
76         }\r
77 });