Move data transfer for storage to completeQuery for speed up

This commit is contained in:
Jos Shepherd 2010-11-06 20:01:22 +00:00
parent fdc78e1b08
commit 3a0101261d
2 changed files with 12 additions and 25 deletions

View File

@ -20,29 +20,13 @@ var DroidDB = function() {
this.queryQueue = {};
};
/**
* Callback from native code when result from a query is available.
* PRIVATE METHOD
*
* @param rawdata JSON string of the row data
* @param id Query id
*/
DroidDB.prototype.addResult = function(data, id) {
try {
var query = this.queryQueue[id];
query.resultSet.push(data);
} catch (e) {
console.log("DroidDB.addResult(): Error="+e);
}
};
/**
* Callback from native code when query is complete.
* PRIVATE METHOD
*
* @param id Query id
*/
DroidDB.prototype.completeQuery = function(id) {
DroidDB.prototype.completeQuery = function(id, data) {
var query = this.queryQueue[id];
if (query) {
try {
@ -58,8 +42,8 @@ DroidDB.prototype.completeQuery = function(id) {
// Save query results
var r = new DroidDB_Result();
r.rows.resultSet = query.resultSet;
r.rows.length = query.resultSet.length;
r.rows.resultSet = data;
r.rows.length = data.length;
try {
if (typeof query.successCallback == 'function') {
query.successCallback(query.tx, r);

View File

@ -160,24 +160,25 @@ public class Storage extends Plugin {
*/
public void processResults(Cursor cur, String tx_id) {
String result = "[]";
// If query result has rows
if (cur.moveToFirst()) {
JSONArray fullresult = new JSONArray();
String key = "";
String value = "";
int colCount = cur.getColumnCount();
// Build up JSON result object for each row
do {
JSONObject result = new JSONObject();
JSONObject row = new JSONObject();
try {
for (int i = 0; i < colCount; ++i) {
key = cur.getColumnName(i);
value = cur.getString(i);
result.put(key, value);
row.put(key, value);
}
// Send row back to JavaScript
this.sendJavascript("droiddb.addResult(" + result.toString() + ",'" + tx_id + "');");
fullresult.put(row);
} catch (JSONException e) {
e.printStackTrace();
@ -185,9 +186,11 @@ public class Storage extends Plugin {
} while (cur.moveToNext());
result = fullresult.toString();
}
// Let JavaScript know that there are no more rows
this.sendJavascript("droiddb.completeQuery('" + tx_id + "');");
this.sendJavascript("droiddb.completeQuery('" + tx_id + "', "+result+");");
}