/* * @param cookie. Need pass a int[] to point requery adapters. */ @Override protected void onInsertComplete(int token, Object cookie, Uri uri) { LogUtils.d(TAG, "onInsertComplete token=" + token + " uri=" + uri); if (cookie instanceof QueryListener) { QueryListener listener = (QueryListener) cookie; listener.onInsertComplete(token, uri); } }
/* * @param cookie. Need pass a int[] to point requery adapters. */ @Override protected void onUpdateComplete(int token, Object cookie, int result) { LogUtils.d(TAG, "onUpdateComplete token=" + token + " result=" + result); if (cookie instanceof QueryListener) { QueryListener listener = (QueryListener) cookie; listener.onUpdateComplete(token, result); } }
@Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { LogUtils.d(TAG, "onQueryComplete token=" + token); if (cookie instanceof QueryListener) { QueryListener listener = (QueryListener) cookie; listener.onQueryComplete(token, cursor); } else { cursor.close(); LogUtils.e(TAG, "cookie is another object: " + cookie); } }
@Override public synchronized void failed(Query<V> query) { for (QueryListener<V> listener : this) { listener.failed(query); } }
@Override public synchronized void responseReceived(Query<V> query) { for (QueryListener<V> listener : this) { listener.responseReceived(query); } }
@Override public synchronized void requestSent(Query<V> query) { for (QueryListener<V> listener : this) { listener.requestSent(query); } }
@Override /*called once doInBackground is finished*/ protected void onPostExecute(String result) { activity.receiveResult(result); }
/** * Processes the query iterator. * * @param sc server command * @throws IOException I/O exception */ private void query(final ServerCmd sc) throws IOException { // iterator argument (query or identifier) String arg = in.readString(); String err = null; try { final QueryListener qp; if (sc == ServerCmd.QUERY) { final String query = arg; qp = new QueryListener(query, context); arg = Integer.toString(id++); queries.put(arg, qp); // send {ID}0 out.writeString(arg); // write log file log.write(this, sc + "(" + arg + ')', query, OK, perf); } else { // find query process qp = queries.get(arg); // ID has already been removed if (qp == null) { if (sc != ServerCmd.CLOSE) throw new IOException("Unknown Query ID: " + arg); } else if (sc == ServerCmd.BIND) { final String key = in.readString(); final String val = in.readString(); final String typ = in.readString(); qp.bind(key, val, typ); log.write(this, sc + "(" + arg + ')', key, val, typ, OK, perf); } else if (sc == ServerCmd.ITER) { qp.execute(true, out, true); } else if (sc == ServerCmd.EXEC) { qp.execute(false, out, true); } else if (sc == ServerCmd.INFO) { out.print(qp.info()); } else if (sc == ServerCmd.OPTIONS) { out.print(qp.options()); } else if (sc == ServerCmd.CLOSE) { queries.remove(arg); } else if (sc == ServerCmd.NEXT) { throw new Exception("Protocol for query iteration is out-of-dated."); } // send 0 as end marker out.write(0); } // send 0 as success flag out.write(0); // write log file (bind and execute have been logged before) if (sc != ServerCmd.BIND) log.write(this, sc + "(" + arg + ')', OK, perf); } catch (final Exception ex) { // log exception (static or runtime) err = ex.getMessage(); log.write(this, sc + "(" + arg + ')', ERROR_C + err); queries.remove(arg); } if (err != null) { // send 0 as end marker, 1 as error flag, and {MSG}0 out.write(0); out.write(1); out.writeString(err); } out.flush(); }