You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
372 lines
24 KiB
372 lines
24 KiB
<html>
|
|
<head>
|
|
<title>Task.java</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<style type="text/css">
|
|
.s0 { color: #8c8c8c; font-style: italic;}
|
|
.s1 { color: #080808;}
|
|
.s2 { color: #0033b3;}
|
|
.s3 { color: #067d17;}
|
|
.s4 { color: #1750eb;}
|
|
</style>
|
|
</head>
|
|
<body bgcolor="#ffffff">
|
|
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#c0c0c0" >
|
|
<tr><td><center>
|
|
<font face="Arial, Helvetica" color="#000000">
|
|
Task.java</font>
|
|
</center></td></tr></table>
|
|
<pre><span class="s0">/*
|
|
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/</span>
|
|
|
|
<span class="s2">package </span><span class="s1">net.micode.notes.gtask.data;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">android.database.Cursor;</span>
|
|
<span class="s2">import </span><span class="s1">android.text.TextUtils;</span>
|
|
<span class="s2">import </span><span class="s1">android.util.Log;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes.DataColumns;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes.DataConstants;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes.NoteColumns;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.gtask.exception.ActionFailureException;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.tool.GTaskStringUtils;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">org.json.JSONArray;</span>
|
|
<span class="s2">import </span><span class="s1">org.json.JSONException;</span>
|
|
<span class="s2">import </span><span class="s1">org.json.JSONObject;</span>
|
|
|
|
|
|
<span class="s2">public class </span><span class="s1">Task </span><span class="s2">extends </span><span class="s1">Node {</span>
|
|
<span class="s2">private static final </span><span class="s1">String TAG = Task.</span><span class="s2">class</span><span class="s1">.getSimpleName();</span>
|
|
|
|
<span class="s2">private boolean </span><span class="s1">mCompleted;</span>
|
|
|
|
<span class="s2">private </span><span class="s1">String mNotes;</span>
|
|
|
|
<span class="s2">private </span><span class="s1">JSONObject mMetaInfo;</span>
|
|
|
|
<span class="s2">private </span><span class="s1">Task mPriorSibling;</span>
|
|
|
|
<span class="s2">private </span><span class="s1">TaskList mParent;</span>
|
|
|
|
<span class="s2">public </span><span class="s1">Task() {</span>
|
|
<span class="s2">super</span><span class="s1">();</span>
|
|
<span class="s1">mCompleted = </span><span class="s2">false</span><span class="s1">;</span>
|
|
<span class="s1">mNotes = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s1">mPriorSibling = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s1">mParent = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s1">mMetaInfo = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public </span><span class="s1">JSONObject getCreateAction(</span><span class="s2">int </span><span class="s1">actionId) {</span>
|
|
<span class="s1">JSONObject js = </span><span class="s2">new </span><span class="s1">JSONObject();</span>
|
|
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s0">// action_type</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,</span>
|
|
<span class="s1">GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE);</span>
|
|
|
|
<span class="s0">// action_id</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);</span>
|
|
|
|
<span class="s0">// index</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(</span><span class="s2">this</span><span class="s1">));</span>
|
|
|
|
<span class="s0">// entity_delta</span>
|
|
<span class="s1">JSONObject entity = </span><span class="s2">new </span><span class="s1">JSONObject();</span>
|
|
<span class="s1">entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());</span>
|
|
<span class="s1">entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, </span><span class="s3">"null"</span><span class="s1">);</span>
|
|
<span class="s1">entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE,</span>
|
|
<span class="s1">GTaskStringUtils.GTASK_JSON_TYPE_TASK);</span>
|
|
<span class="s2">if </span><span class="s1">(getNotes() != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes());</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity);</span>
|
|
|
|
<span class="s0">// parent_id</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid());</span>
|
|
|
|
<span class="s0">// dest_parent_type</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE,</span>
|
|
<span class="s1">GTaskStringUtils.GTASK_JSON_TYPE_GROUP);</span>
|
|
|
|
<span class="s0">// list_id</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid());</span>
|
|
|
|
<span class="s0">// prior_sibling_id</span>
|
|
<span class="s2">if </span><span class="s1">(mPriorSibling != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid());</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(JSONException e) {</span>
|
|
<span class="s1">Log.e(TAG, e.toString());</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s2">throw new </span><span class="s1">ActionFailureException(</span><span class="s3">"fail to generate task-create jsonobject"</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">return </span><span class="s1">js;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public </span><span class="s1">JSONObject getUpdateAction(</span><span class="s2">int </span><span class="s1">actionId) {</span>
|
|
<span class="s1">JSONObject js = </span><span class="s2">new </span><span class="s1">JSONObject();</span>
|
|
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s0">// action_type</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,</span>
|
|
<span class="s1">GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE);</span>
|
|
|
|
<span class="s0">// action_id</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);</span>
|
|
|
|
<span class="s0">// id</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_ID, getGid());</span>
|
|
|
|
<span class="s0">// entity_delta</span>
|
|
<span class="s1">JSONObject entity = </span><span class="s2">new </span><span class="s1">JSONObject();</span>
|
|
<span class="s1">entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());</span>
|
|
<span class="s2">if </span><span class="s1">(getNotes() != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes());</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted());</span>
|
|
<span class="s1">js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity);</span>
|
|
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(JSONException e) {</span>
|
|
<span class="s1">Log.e(TAG, e.toString());</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s2">throw new </span><span class="s1">ActionFailureException(</span><span class="s3">"fail to generate task-update jsonobject"</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">return </span><span class="s1">js;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">setContentByRemoteJSON(JSONObject js) {</span>
|
|
<span class="s2">if </span><span class="s1">(js != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s0">// id</span>
|
|
<span class="s2">if </span><span class="s1">(js.has(GTaskStringUtils.GTASK_JSON_ID)) {</span>
|
|
<span class="s1">setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID));</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s0">// last_modified</span>
|
|
<span class="s2">if </span><span class="s1">(js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) {</span>
|
|
<span class="s1">setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED));</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s0">// name</span>
|
|
<span class="s2">if </span><span class="s1">(js.has(GTaskStringUtils.GTASK_JSON_NAME)) {</span>
|
|
<span class="s1">setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME));</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s0">// notes</span>
|
|
<span class="s2">if </span><span class="s1">(js.has(GTaskStringUtils.GTASK_JSON_NOTES)) {</span>
|
|
<span class="s1">setNotes(js.getString(GTaskStringUtils.GTASK_JSON_NOTES));</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s0">// deleted</span>
|
|
<span class="s2">if </span><span class="s1">(js.has(GTaskStringUtils.GTASK_JSON_DELETED)) {</span>
|
|
<span class="s1">setDeleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_DELETED));</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s0">// completed</span>
|
|
<span class="s2">if </span><span class="s1">(js.has(GTaskStringUtils.GTASK_JSON_COMPLETED)) {</span>
|
|
<span class="s1">setCompleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_COMPLETED));</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(JSONException e) {</span>
|
|
<span class="s1">Log.e(TAG, e.toString());</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s2">throw new </span><span class="s1">ActionFailureException(</span><span class="s3">"fail to get task content from jsonobject"</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">setContentByLocalJSON(JSONObject js) {</span>
|
|
<span class="s2">if </span><span class="s1">(js == </span><span class="s2">null </span><span class="s1">|| !js.has(GTaskStringUtils.META_HEAD_NOTE)</span>
|
|
<span class="s1">|| !js.has(GTaskStringUtils.META_HEAD_DATA)) {</span>
|
|
<span class="s1">Log.w(TAG, </span><span class="s3">"setContentByLocalJSON: nothing is avaiable"</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);</span>
|
|
<span class="s1">JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA);</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) {</span>
|
|
<span class="s1">Log.e(TAG, </span><span class="s3">"invalid type"</span><span class="s1">);</span>
|
|
<span class="s2">return</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">for </span><span class="s1">(</span><span class="s2">int </span><span class="s1">i = </span><span class="s4">0</span><span class="s1">; i < dataArray.length(); i++) {</span>
|
|
<span class="s1">JSONObject data = dataArray.getJSONObject(i);</span>
|
|
<span class="s2">if </span><span class="s1">(TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) {</span>
|
|
<span class="s1">setName(data.getString(DataColumns.CONTENT));</span>
|
|
<span class="s2">break</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(JSONException e) {</span>
|
|
<span class="s1">Log.e(TAG, e.toString());</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public </span><span class="s1">JSONObject getLocalJSONFromContent() {</span>
|
|
<span class="s1">String name = getName();</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s2">if </span><span class="s1">(mMetaInfo == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s0">// new task created from web</span>
|
|
<span class="s2">if </span><span class="s1">(name == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">Log.w(TAG, </span><span class="s3">"the note seems to be an empty one"</span><span class="s1">);</span>
|
|
<span class="s2">return null</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">JSONObject js = </span><span class="s2">new </span><span class="s1">JSONObject();</span>
|
|
<span class="s1">JSONObject note = </span><span class="s2">new </span><span class="s1">JSONObject();</span>
|
|
<span class="s1">JSONArray dataArray = </span><span class="s2">new </span><span class="s1">JSONArray();</span>
|
|
<span class="s1">JSONObject data = </span><span class="s2">new </span><span class="s1">JSONObject();</span>
|
|
<span class="s1">data.put(DataColumns.CONTENT, name);</span>
|
|
<span class="s1">dataArray.put(data);</span>
|
|
<span class="s1">js.put(GTaskStringUtils.META_HEAD_DATA, dataArray);</span>
|
|
<span class="s1">note.put(NoteColumns.TYPE, Notes.TYPE_NOTE);</span>
|
|
<span class="s1">js.put(GTaskStringUtils.META_HEAD_NOTE, note);</span>
|
|
<span class="s2">return </span><span class="s1">js;</span>
|
|
<span class="s1">} </span><span class="s2">else </span><span class="s1">{</span>
|
|
<span class="s0">// synced task</span>
|
|
<span class="s1">JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);</span>
|
|
<span class="s1">JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA);</span>
|
|
|
|
<span class="s2">for </span><span class="s1">(</span><span class="s2">int </span><span class="s1">i = </span><span class="s4">0</span><span class="s1">; i < dataArray.length(); i++) {</span>
|
|
<span class="s1">JSONObject data = dataArray.getJSONObject(i);</span>
|
|
<span class="s2">if </span><span class="s1">(TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) {</span>
|
|
<span class="s1">data.put(DataColumns.CONTENT, getName());</span>
|
|
<span class="s2">break</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">note.put(NoteColumns.TYPE, Notes.TYPE_NOTE);</span>
|
|
<span class="s2">return </span><span class="s1">mMetaInfo;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(JSONException e) {</span>
|
|
<span class="s1">Log.e(TAG, e.toString());</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s2">return null</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">setMetaInfo(MetaData metaData) {</span>
|
|
<span class="s2">if </span><span class="s1">(metaData != </span><span class="s2">null </span><span class="s1">&& metaData.getNotes() != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">mMetaInfo = </span><span class="s2">new </span><span class="s1">JSONObject(metaData.getNotes());</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(JSONException e) {</span>
|
|
<span class="s1">Log.w(TAG, e.toString());</span>
|
|
<span class="s1">mMetaInfo = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public int </span><span class="s1">getSyncAction(Cursor c) {</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">JSONObject noteInfo = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s2">if </span><span class="s1">(mMetaInfo != </span><span class="s2">null </span><span class="s1">&& mMetaInfo.has(GTaskStringUtils.META_HEAD_NOTE)) {</span>
|
|
<span class="s1">noteInfo = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(noteInfo == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">Log.w(TAG, </span><span class="s3">"it seems that note meta has been deleted"</span><span class="s1">);</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_UPDATE_REMOTE;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(!noteInfo.has(NoteColumns.ID)) {</span>
|
|
<span class="s1">Log.w(TAG, </span><span class="s3">"remote note id seems to be deleted"</span><span class="s1">);</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_UPDATE_LOCAL;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s0">// validate the note id now</span>
|
|
<span class="s2">if </span><span class="s1">(c.getLong(SqlNote.ID_COLUMN) != noteInfo.getLong(NoteColumns.ID)) {</span>
|
|
<span class="s1">Log.w(TAG, </span><span class="s3">"note id doesn't match"</span><span class="s1">);</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_UPDATE_LOCAL;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == </span><span class="s4">0</span><span class="s1">) {</span>
|
|
<span class="s0">// there is no local update</span>
|
|
<span class="s2">if </span><span class="s1">(c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {</span>
|
|
<span class="s0">// no update both side</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_NONE;</span>
|
|
<span class="s1">} </span><span class="s2">else </span><span class="s1">{</span>
|
|
<span class="s0">// apply remote to local</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_UPDATE_LOCAL;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">} </span><span class="s2">else </span><span class="s1">{</span>
|
|
<span class="s0">// validate gtask id</span>
|
|
<span class="s2">if </span><span class="s1">(!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) {</span>
|
|
<span class="s1">Log.e(TAG, </span><span class="s3">"gtask id doesn't match"</span><span class="s1">);</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_ERROR;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">if </span><span class="s1">(c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {</span>
|
|
<span class="s0">// local modification only</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_UPDATE_REMOTE;</span>
|
|
<span class="s1">} </span><span class="s2">else </span><span class="s1">{</span>
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_UPDATE_CONFLICT;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(Exception e) {</span>
|
|
<span class="s1">Log.e(TAG, e.toString());</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">return </span><span class="s1">SYNC_ACTION_ERROR;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public boolean </span><span class="s1">isWorthSaving() {</span>
|
|
<span class="s2">return </span><span class="s1">mMetaInfo != </span><span class="s2">null </span><span class="s1">|| (getName() != </span><span class="s2">null </span><span class="s1">&& getName().trim().length() > </span><span class="s4">0</span><span class="s1">)</span>
|
|
<span class="s1">|| (getNotes() != </span><span class="s2">null </span><span class="s1">&& getNotes().trim().length() > </span><span class="s4">0</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">setCompleted(</span><span class="s2">boolean </span><span class="s1">completed) {</span>
|
|
<span class="s2">this</span><span class="s1">.mCompleted = completed;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">setNotes(String notes) {</span>
|
|
<span class="s2">this</span><span class="s1">.mNotes = notes;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">setPriorSibling(Task priorSibling) {</span>
|
|
<span class="s2">this</span><span class="s1">.mPriorSibling = priorSibling;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">setParent(TaskList parent) {</span>
|
|
<span class="s2">this</span><span class="s1">.mParent = parent;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public boolean </span><span class="s1">getCompleted() {</span>
|
|
<span class="s2">return this</span><span class="s1">.mCompleted;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public </span><span class="s1">String getNotes() {</span>
|
|
<span class="s2">return this</span><span class="s1">.mNotes;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public </span><span class="s1">Task getPriorSibling() {</span>
|
|
<span class="s2">return this</span><span class="s1">.mPriorSibling;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public </span><span class="s1">TaskList getParent() {</span>
|
|
<span class="s2">return this</span><span class="s1">.mParent;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">}</span>
|
|
</pre>
|
|
</body>
|
|
</html> |