[#40]Add ExcludeChecklist annotation

This commit is contained in:
Franze Jr 2015-11-29 10:35:07 -03:00
parent 9471124f76
commit 9e95d2bc67
4 changed files with 35 additions and 1 deletions

View file

@ -19,6 +19,7 @@ import com.google.gson.stream.JsonWriter;
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
import com.habitrpg.android.habitica.callbacks.TaskDeletionCallback;
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
import com.habitrpg.android.habitica.database.CheckListItemExcludeStrategy;
import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
import com.magicmicky.habitrpgwrapper.lib.api.Server;
import com.magicmicky.habitrpgwrapper.lib.api.TypeAdapter.TagsAdapter;
@ -28,10 +29,12 @@ import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocial;
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocialTokens;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
import com.magicmicky.habitrpgwrapper.lib.utils.SkillDeserializer;
import com.raizlabs.android.dbflow.structure.ModelAdapter;
import com.raizlabs.android.dbflow.structure.container.ForeignKeyContainer;
import java.io.IOException;
import java.lang.reflect.Type;
@ -74,6 +77,7 @@ public class APIHelper implements ErrorHandler, Profiler {
//Exclusion stratety needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
Gson gson = new GsonBuilder()
.setExclusionStrategies(new CheckListItemExcludeStrategy())
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {

View file

@ -0,0 +1,20 @@
package com.habitrpg.android.habitica.database;
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
/**
* Created by franzejr on 29/11/15.
*/
public class CheckListItemExcludeStrategy implements ExclusionStrategy {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getAnnotation(ExcludeCheckListItem.class) != null;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return clazz.getAnnotation(ExcludeCheckListItem.class) != null;
}
}

View file

@ -0,0 +1,8 @@
package com.habitrpg.android.habitica.database;
/**
* Created by franzejr on 29/11/15.
*/
public @interface ExcludeCheckListItem {
}

View file

@ -1,6 +1,7 @@
package com.magicmicky.habitrpgwrapper.lib.models.tasks;
import com.habitrpg.android.habitica.HabitDatabase;
import com.habitrpg.android.habitica.database.ExcludeCheckListItem;
import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.ForeignKey;
import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
@ -31,13 +32,14 @@ public class ChecklistItem extends BaseModel {
columnType = String.class,
foreignColumnName = "id")},
saveForeignKeyModel = false)
@ExcludeCheckListItem
ForeignKeyContainer<Task> task;
public ChecklistItem() {
this(null,null);
}
public ChecklistItem(String id, String text) {
this(id,text,false);
this(id, text, false);
}
public ChecklistItem(String id,String text, boolean completed) {
this.setText(text);