| // Copyright 2016 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package io.v.todos; |
| |
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
| |
| /** |
| * Task is a Firebase-compatible class that tracks information regarding a particular task. |
| * |
| * @author alexfandrianto |
| */ |
| @JsonIgnoreProperties({ "key" }) |
| public class Task extends KeyedData<Task> { |
| private String text; |
| private long addedAt; |
| private boolean done; |
| |
| // Unserialized properties. |
| private String key; // Usually assigned for comparison/viewing. |
| |
| // The default constructor is used by Firebase. |
| public Task() {} |
| |
| // Use this constructor when creating a new Task for the first time. |
| public Task(String text) { |
| this.text = text; |
| this.addedAt = System.currentTimeMillis(); |
| this.done = false; |
| } |
| |
| public Task copy() { |
| Task t = new Task(); |
| t.text = text; |
| t.addedAt = addedAt; |
| t.done = done; |
| t.key = key; |
| return t; |
| } |
| |
| public String getText() { |
| return text; |
| } |
| public long getAddedAt() { |
| return addedAt; |
| } |
| public boolean getDone() { |
| return done; |
| } |
| public void setKey(String key) { |
| this.key = key; |
| } |
| public String getKey() { |
| return key; |
| } |
| |
| public void setText(String newText) { |
| text = newText; |
| } |
| public void setDone(boolean newDone) { |
| done = newDone; |
| } |
| |
| @Override |
| public int compareTo(Task other) { |
| if (done && !other.done) { |
| return 1; |
| } else if (!done && other.done) { |
| return -1; |
| } |
| if (key == null && other.key != null) { |
| return 1; |
| } else if (key != null && other.key == null) { |
| return -1; |
| } else if (key == null && other.key == null) { |
| return 0; |
| } |
| return key.compareTo(other.key); |
| } |
| } |