Search in sources :

Example 1 with SqlNote

use of net.micode.notes.gtask.data.SqlNote in project Notes by MiCode.

the class GTaskManager method updateLocalNode.

private void updateLocalNode(Node node, Cursor c) throws NetworkFailureException {
    if (mCancelled) {
        return;
    }
    SqlNote sqlNote;
    // update the note locally
    sqlNote = new SqlNote(mContext, c);
    sqlNote.setContent(node.getLocalJSONFromContent());
    Long parentId = (node instanceof Task) ? mGidToNid.get(((Task) node).getParent().getGid()) : new Long(Notes.ID_ROOT_FOLDER);
    if (parentId == null) {
        Log.e(TAG, "cannot find task's parent id locally");
        throw new ActionFailureException("cannot update local node");
    }
    sqlNote.setParentId(parentId.longValue());
    sqlNote.commit(true);
    // update meta info
    updateRemoteMeta(node.getGid(), sqlNote);
}
Also used : Task(net.micode.notes.gtask.data.Task) ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) SqlNote(net.micode.notes.gtask.data.SqlNote)

Example 2 with SqlNote

use of net.micode.notes.gtask.data.SqlNote in project Notes by MiCode.

the class GTaskManager method addRemoteNode.

private void addRemoteNode(Node node, Cursor c) throws NetworkFailureException {
    if (mCancelled) {
        return;
    }
    SqlNote sqlNote = new SqlNote(mContext, c);
    Node n;
    // update remotely
    if (sqlNote.isNoteType()) {
        Task task = new Task();
        task.setContentByLocalJSON(sqlNote.getContent());
        String parentGid = mNidToGid.get(sqlNote.getParentId());
        if (parentGid == null) {
            Log.e(TAG, "cannot find task's parent tasklist");
            throw new ActionFailureException("cannot add remote task");
        }
        mGTaskListHashMap.get(parentGid).addChildTask(task);
        GTaskClient.getInstance().createTask(task);
        n = (Node) task;
        // add meta
        updateRemoteMeta(task.getGid(), sqlNote);
    } else {
        TaskList tasklist = null;
        // we need to skip folder if it has already existed
        String folderName = GTaskStringUtils.MIUI_FOLDER_PREFFIX;
        if (sqlNote.getId() == Notes.ID_ROOT_FOLDER)
            folderName += GTaskStringUtils.FOLDER_DEFAULT;
        else if (sqlNote.getId() == Notes.ID_CALL_RECORD_FOLDER)
            folderName += GTaskStringUtils.FOLDER_CALL_NOTE;
        else
            folderName += sqlNote.getSnippet();
        Iterator<Map.Entry<String, TaskList>> iter = mGTaskListHashMap.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry<String, TaskList> entry = iter.next();
            String gid = entry.getKey();
            TaskList list = entry.getValue();
            if (list.getName().equals(folderName)) {
                tasklist = list;
                if (mGTaskHashMap.containsKey(gid)) {
                    mGTaskHashMap.remove(gid);
                }
                break;
            }
        }
        // no match we can add now
        if (tasklist == null) {
            tasklist = new TaskList();
            tasklist.setContentByLocalJSON(sqlNote.getContent());
            GTaskClient.getInstance().createTaskList(tasklist);
            mGTaskListHashMap.put(tasklist.getGid(), tasklist);
        }
        n = (Node) tasklist;
    }
    // update local note
    sqlNote.setGtaskId(n.getGid());
    sqlNote.commit(false);
    sqlNote.resetLocalModified();
    sqlNote.commit(true);
    // gid-id mapping
    mGidToNid.put(n.getGid(), sqlNote.getId());
    mNidToGid.put(sqlNote.getId(), n.getGid());
}
Also used : Task(net.micode.notes.gtask.data.Task) ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) Node(net.micode.notes.gtask.data.Node) TaskList(net.micode.notes.gtask.data.TaskList) HashMap(java.util.HashMap) Map(java.util.Map) SqlNote(net.micode.notes.gtask.data.SqlNote)

Example 3 with SqlNote

use of net.micode.notes.gtask.data.SqlNote 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)

Example 4 with SqlNote

use of net.micode.notes.gtask.data.SqlNote in project Notes by MiCode.

the class GTaskManager method updateRemoteNode.

private void updateRemoteNode(Node node, Cursor c) throws NetworkFailureException {
    if (mCancelled) {
        return;
    }
    SqlNote sqlNote = new SqlNote(mContext, c);
    // update remotely
    node.setContentByLocalJSON(sqlNote.getContent());
    GTaskClient.getInstance().addUpdateNode(node);
    // update meta
    updateRemoteMeta(node.getGid(), sqlNote);
    // move task if necessary
    if (sqlNote.isNoteType()) {
        Task task = (Task) node;
        TaskList preParentList = task.getParent();
        String curParentGid = mNidToGid.get(sqlNote.getParentId());
        if (curParentGid == null) {
            Log.e(TAG, "cannot find task's parent tasklist");
            throw new ActionFailureException("cannot update remote task");
        }
        TaskList curParentList = mGTaskListHashMap.get(curParentGid);
        if (preParentList != curParentList) {
            preParentList.removeChildTask(task);
            curParentList.addChildTask(task);
            GTaskClient.getInstance().moveTask(task, preParentList, curParentList);
        }
    }
    // clear local modified flag
    sqlNote.resetLocalModified();
    sqlNote.commit(true);
}
Also used : Task(net.micode.notes.gtask.data.Task) ActionFailureException(net.micode.notes.gtask.exception.ActionFailureException) TaskList(net.micode.notes.gtask.data.TaskList) SqlNote(net.micode.notes.gtask.data.SqlNote)

Aggregations

SqlNote (net.micode.notes.gtask.data.SqlNote)4 Task (net.micode.notes.gtask.data.Task)4 ActionFailureException (net.micode.notes.gtask.exception.ActionFailureException)4 TaskList (net.micode.notes.gtask.data.TaskList)3 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Node (net.micode.notes.gtask.data.Node)1 JSONArray (org.json.JSONArray)1 JSONException (org.json.JSONException)1 JSONObject (org.json.JSONObject)1