package com.mechinn.android.ouralliance.gson; import android.database.Cursor; import com.activeandroid.annotation.Column; import com.activeandroid.annotation.Table; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.mechinn.android.ouralliance.data.Event; import com.mechinn.android.ouralliance.data.EventTeam; import com.mechinn.android.ouralliance.data.Team; import java.lang.reflect.Type; import java.util.Date; import de.greenrobot.event.EventBus; import de.greenrobot.event.util.AsyncExecutor; public class EventTeamAdapter implements JsonSerializer<EventTeam>, JsonDeserializer<EventTeam> { @Override public EventTeam deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { EventTeam eventTeam = new EventTeam(); JsonObject object = json.getAsJsonObject(); eventTeam.setModified(new Date(object.get(EventTeam.MODIFIED).getAsLong())); eventTeam.setEvent(OurAllianceGson.BUILDER.fromJson(object.get(EventTeam.EVENT), Event.class)); eventTeam.setTeam(OurAllianceGson.BUILDER.fromJson(object.get(EventTeam.TEAM), Team.class)); eventTeam.setScouted(object.get(EventTeam.SCOUTED).getAsBoolean()); JsonElement element = object.get(EventTeam.RANK); if(null!=element) { eventTeam.setRank(element.getAsInt()); } return eventTeam; } @Override public JsonElement serialize(EventTeam src, Type typeOfSrc, JsonSerializationContext context) { JsonObject object = new JsonObject(); object.addProperty(EventTeam.MODIFIED,src.getModified().getTime()); object.add(EventTeam.EVENT, OurAllianceGson.BUILDER.toJsonTree(src.getEvent())); object.add(EventTeam.TEAM, OurAllianceGson.BUILDER.toJsonTree(src.getTeam())); object.addProperty(EventTeam.RANK,src.getRank()); object.addProperty(EventTeam.SCOUTED,src.isScouted()); return object; } }