Search in sources :

Example 11 with ActionFailureException

use of net.micode.notes.gtask.exception.ActionFailureException in project Notes by MiCode.

the class Task method getCreateAction.

public JSONObject getCreateAction(int actionId) {
    JSONObject js = new JSONObject();
    try {
        // action_type
        js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE);
        // action_id
        js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);
        // index
        js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(this));
        // entity_delta
        JSONObject entity = new JSONObject();
        entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());
        entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null");
        entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, GTaskStringUtils.GTASK_JSON_TYPE_TASK);
        if (getNotes() != null) {
            entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes());
        }
        js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity);
        // parent_id
        js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid());
        // dest_parent_type
        js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE, GTaskStringUtils.GTASK_JSON_TYPE_GROUP);
        // list_id
        js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid());
        // prior_sibling_id
        if (mPriorSibling != null) {
            js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid());
        }
    } catch (JSONException e) {
        Log.e(TAG, e.toString());
        e.printStackTrace();
        throw new ActionFailureException("fail to generate task-create jsonobject");
    }
    return js;
}
Also used : ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) JSONObject(org.json.JSONObject) JSONException(org.json.JSONException)

Example 12 with ActionFailureException

use of net.micode.notes.gtask.exception.ActionFailureException in project Notes by MiCode.

the class TaskList method getCreateAction.

public JSONObject getCreateAction(int actionId) {
    JSONObject js = new JSONObject();
    try {
        // action_type
        js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE);
        // action_id
        js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);
        // index
        js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex);
        // entity_delta
        JSONObject entity = new JSONObject();
        entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());
        entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null");
        entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, GTaskStringUtils.GTASK_JSON_TYPE_GROUP);
        js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity);
    } catch (JSONException e) {
        Log.e(TAG, e.toString());
        e.printStackTrace();
        throw new ActionFailureException("fail to generate tasklist-create jsonobject");
    }
    return js;
}
Also used : ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) JSONObject(org.json.JSONObject) JSONException(org.json.JSONException)

Example 13 with ActionFailureException

use of net.micode.notes.gtask.exception.ActionFailureException in project Notes by MiCode.

the class GTaskClient method commitUpdate.

public void commitUpdate() throws NetworkFailureException {
    if (mUpdateArray != null) {
        try {
            JSONObject jsPost = new JSONObject();
            // action_list
            jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, mUpdateArray);
            // client_version
            jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion);
            postRequest(jsPost);
            mUpdateArray = null;
        } catch (JSONException e) {
            Log.e(TAG, e.toString());
            e.printStackTrace();
            throw new ActionFailureException("commit update: handing jsonobject failed");
        }
    }
}
Also used : ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) JSONObject(org.json.JSONObject) JSONException(org.json.JSONException)

Example 14 with ActionFailureException

use of net.micode.notes.gtask.exception.ActionFailureException in project Notes by MiCode.

the class GTaskManager method doContentSync.

private void doContentSync(int syncType, Node node, Cursor c) throws NetworkFailureException {
    if (mCancelled) {
        return;
    }
    MetaData meta;
    switch(syncType) {
        case Node.SYNC_ACTION_ADD_LOCAL:
            addLocalNode(node);
            break;
        case Node.SYNC_ACTION_ADD_REMOTE:
            addRemoteNode(node, c);
            break;
        case Node.SYNC_ACTION_DEL_LOCAL:
            meta = mMetaHashMap.get(c.getString(SqlNote.GTASK_ID_COLUMN));
            if (meta != null) {
                GTaskClient.getInstance().deleteNode(meta);
            }
            mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN));
            break;
        case Node.SYNC_ACTION_DEL_REMOTE:
            meta = mMetaHashMap.get(node.getGid());
            if (meta != null) {
                GTaskClient.getInstance().deleteNode(meta);
            }
            GTaskClient.getInstance().deleteNode(node);
            break;
        case Node.SYNC_ACTION_UPDATE_LOCAL:
            updateLocalNode(node, c);
            break;
        case Node.SYNC_ACTION_UPDATE_REMOTE:
            updateRemoteNode(node, c);
            break;
        case Node.SYNC_ACTION_UPDATE_CONFLICT:
            // merging both modifications maybe a good idea
            // right now just use local update simply
            updateRemoteNode(node, c);
            break;
        case Node.SYNC_ACTION_NONE:
            break;
        case Node.SYNC_ACTION_ERROR:
        default:
            throw new ActionFailureException("unkown sync action type");
    }
}
Also used : ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) MetaData(net.micode.notes.gtask.data.MetaData)

Example 15 with ActionFailureException

use of net.micode.notes.gtask.exception.ActionFailureException in project Notes by MiCode.

the class GTaskManager method addLocalNode.

private void addLocalNode(Node node) throws NetworkFailureException {
    if (mCancelled) {
        return;
    }
    SqlNote sqlNote;
    if (node instanceof TaskList) {
        if (node.getName().equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) {
            sqlNote = new SqlNote(mContext, Notes.ID_ROOT_FOLDER);
        } else if (node.getName().equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_CALL_NOTE)) {
            sqlNote = new SqlNote(mContext, Notes.ID_CALL_RECORD_FOLDER);
        } else {
            sqlNote = new SqlNote(mContext);
            sqlNote.setContent(node.getLocalJSONFromContent());
            sqlNote.setParentId(Notes.ID_ROOT_FOLDER);
        }
    } else {
        sqlNote = new SqlNote(mContext);
        JSONObject js = node.getLocalJSONFromContent();
        try {
            if (js.has(GTaskStringUtils.META_HEAD_NOTE)) {
                JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
                if (note.has(NoteColumns.ID)) {
                    long id = note.getLong(NoteColumns.ID);
                    if (DataUtils.existInNoteDatabase(mContentResolver, id)) {
                        // the id is not available, have to create a new one
                        note.remove(NoteColumns.ID);
                    }
                }
            }
            if (js.has(GTaskStringUtils.META_HEAD_DATA)) {
                JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA);
                for (int i = 0; i < dataArray.length(); i++) {
                    JSONObject data = dataArray.getJSONObject(i);
                    if (data.has(DataColumns.ID)) {
                        long dataId = data.getLong(DataColumns.ID);
                        if (DataUtils.existInDataDatabase(mContentResolver, dataId)) {
                            // the data id is not available, have to create
                            // a new one
                            data.remove(DataColumns.ID);
                        }
                    }
                }
            }
        } catch (JSONException e) {
            Log.w(TAG, e.toString());
            e.printStackTrace();
        }
        sqlNote.setContent(js);
        Long parentId = mGidToNid.get(((Task) node).getParent().getGid());
        if (parentId == null) {
            Log.e(TAG, "cannot find task's parent id locally");
            throw new ActionFailureException("cannot add local node");
        }
        sqlNote.setParentId(parentId.longValue());
    }
    // create the local node
    sqlNote.setGtaskId(node.getGid());
    sqlNote.commit(false);
    // update gid-nid mapping
    mGidToNid.put(node.getGid(), sqlNote.getId());
    mNidToGid.put(sqlNote.getId(), node.getGid());
    // update meta
    updateRemoteMeta(node.getGid(), sqlNote);
}
Also used : Task(net.micode.notes.gtask.data.Task) ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) JSONObject(org.json.JSONObject) TaskList(net.micode.notes.gtask.data.TaskList) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) SqlNote(net.micode.notes.gtask.data.SqlNote)

Aggregations

ActionFailureException (net.micode.notes.gtask.exception.ActionFailureException)22 JSONException (org.json.JSONException)14 JSONObject (org.json.JSONObject)14 JSONArray (org.json.JSONArray)7 Task (net.micode.notes.gtask.data.Task)5 SqlNote (net.micode.notes.gtask.data.SqlNote)4 TaskList (net.micode.notes.gtask.data.TaskList)4 Node (net.micode.notes.gtask.data.Node)3 Cursor (android.database.Cursor)2 Uri (android.net.Uri)2 IOException (java.io.IOException)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 MetaData (net.micode.notes.gtask.data.MetaData)2 NetworkFailureException (net.micode.notes.gtask.exception.NetworkFailureException)2 HttpResponse (org.apache.http.HttpResponse)2 ClientProtocolException (org.apache.http.client.ClientProtocolException)2 ContentValues (android.content.ContentValues)1 LinkedList (java.util.LinkedList)1 UrlEncodedFormEntity (org.apache.http.client.entity.UrlEncodedFormEntity)1