@Override public void run() { // // Drill into the JSON response to find the content body // JSONObject resp = (JSONObject) new JSONTokener(content.toString()) // .nextValue(); // // JSONObject query = resp.getJSONObject("uuid"); // // JSONObject pages = query.getJSONObject("pages"); // // JSONObject page = pages.getJSONObject((String) // // pages.keys().next()); // // JSONArray revisions = page.getJSONArray("revisions"); // // JSONObject revision = revisions.getJSONObject(0); // String uuid = resp.getString("uuid"); // inform(uuid, Events.FINISHED); // } catch (IOException e) { // Log.e(TAG, e.toString()); // inform("Error on syncing" + e.toString(), Events.FINISHED); // e.printStackTrace(); try { dbAccessor.beginTransaction(); Long now = Long.valueOf(System.currentTimeMillis()); Log.d(TAG, "Sync started at " + now.toString()); // Get remote Uuid and it's lastUpdated time Pair<String, Long> remoteInfo = getRemoteInfo(); inform(remoteInfo.getFirst(), Events.TEXT); Long lastUpdated = dbAccessor.getLastUpdated(remoteInfo.getFirst()); inform(lastUpdated.toString(), Events.TEXT); // TODO Upload local updates // Download remote updates processRemoteUpdates(lastUpdated); dbAccessor.setTransactionSuccessful(); inform("Finished", Events.FINISHED); } catch (Exception e) { Log.e(TAG, e.toString()); inform("Error on syncing " + e.toString(), Events.ERROR); e.printStackTrace(); } finally { dbAccessor.endTransaction(); } }
private void updateTask(Task task) { boolean needUpdate = false; Task remote = new Task(task); try { dbAccessor.getDbObject(task, task.getUuid()); } catch (InvalidKeyException e) { Log.d(TAG, "There are no local task " + task.getUuid()); needUpdate = true; } if (!needUpdate && remote.getGlobalUpdated() > task.getGlobalUpdated()) { needUpdate = true; Log.d(TAG, "Local task is too old - " + task.getUuid()); } if (needUpdate) { Log.d(TAG, "Should update task " + remote.getUuid()); dbAccessor.setDbObject(remote); } else { Log.d(TAG, "Should NOT update task " + remote.getUuid()); Log.d(TAG, "Local task - " + task.toString()); } }