public void runInternal() throws DatabaseUnavailableException { SQLiteDatabase database = HubApplication._().getDatabaseHandle(); Cursor c = database.query("SyncableUser", null, null, null, null, null, null); try { SyncableUser actionable = null; for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { SyncableUser u = SyncableUser.fromDb(c); if (u.getStatus() != SyncableUser.UserStatus.ModelFetched && u.getStatus() != SyncableUser.UserStatus.AuthError) { //Only grab the first user to act on, we don't wanna be greedy in this thread actionable = u; break; } } if (actionable == null) { return; } if (actionable.getStatus() == SyncableUser.UserStatus.Requested) { fetchKeyForUser(actionable, database); } else if(actionable.getStatus() == SyncableUser.UserStatus.KeysFetched) { try { fetchModelForUser(actionable, database); } catch(IOException ioe) { ServicesMonitor.reportMessage("Error fetching user model for " + actionable.getUsername()+ " - " + ioe.getMessage()); } } } finally { c.close(); } }
@Override public boolean execute(SQLiteDatabase database) { database.execSQL("create table t1(a INTEGER, b INTEGER);"); database.execSQL("insert into t1(a,b) values(123, 456);"); Cursor cursor = database.rawQuery("select * from t1;", new String[] {}); if (cursor != null) { cursor.moveToFirst(); cursor.copyStringToBuffer(1, charArrayBuffer); String actualValue = new String(charArrayBuffer.data, 0, charArrayBuffer.sizeCopied); return "456".equals(actualValue); } return false; }