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