Sort tasks according to website. Fixes #67

This commit is contained in:
Phillip Thelen 2015-12-09 23:58:47 +01:00
parent b23f175cb1
commit e32615fb82
6 changed files with 38 additions and 2 deletions

View file

@ -0,0 +1 @@
ALTER TABLE Task ADD COLUMN 'position' INTEGER DEFAULT 0;

View file

@ -35,6 +35,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
import com.magicmicky.habitrpgwrapper.lib.utils.ChecklistItemSerializer;
import com.magicmicky.habitrpgwrapper.lib.utils.SkillDeserializer;
import com.magicmicky.habitrpgwrapper.lib.utils.TaskListDeserializer;
import com.raizlabs.android.dbflow.structure.ModelAdapter;
import java.io.IOException;
@ -78,6 +79,8 @@ public class APIHelper implements ErrorHandler, Profiler {
}.getType();
Type taskClassListType = new TypeToken<List<Task>>() {}.getType();
//Exclusion stratety needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
Gson gson = new GsonBuilder()
.setExclusionStrategies(new CheckListItemExcludeStrategy())
@ -97,6 +100,7 @@ public class APIHelper implements ErrorHandler, Profiler {
.registerTypeAdapter(boolean.class, booleanAsIntAdapter)
.registerTypeAdapter(SkillList.class, new SkillDeserializer())
.registerTypeAdapter(ChecklistItem.class, new ChecklistItemSerializer())
.registerTypeAdapter(taskClassListType, new TaskListDeserializer())
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.create();

View file

@ -10,5 +10,5 @@ public class HabitDatabase {
public static final String NAME = "Habitica";
public static final int VERSION = 3;
public static final int VERSION = 4;
}

View file

@ -644,7 +644,7 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends Task>
.begin(Condition.column("completed").eq(false))
.or(Condition.column("type").eq("daily"))
)
.orderBy(OrderBy.columns("dateCreated").descending())
.orderBy(OrderBy.columns("position", "dateCreated").descending())
.async()
.queryList(taskTransactionListener);

View file

@ -57,6 +57,9 @@ public class Task extends BaseModel {
@Column
public Date dateCreated;
@Column
public int position;
//Habits
@Column
public Boolean up, down;

View file

@ -0,0 +1,28 @@
package com.magicmicky.habitrpgwrapper.lib.utils;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
/**
* Created by viirus on 09/12/15.
*/
public class TaskListDeserializer implements JsonDeserializer<List<Task>> {
public List<Task> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext ctx) {
List<Task> vals = new ArrayList<Task>();
int position = 0;
for (JsonElement e : json.getAsJsonArray()) {
Task task = (Task) ctx.deserialize(e, Task.class);
task.position = position;
vals.add(task);
position++;
}
return vals;
}
}