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 java.lang.reflect.Type;
import java.util.Date;
import de.greenrobot.event.EventBus;
import de.greenrobot.event.util.AsyncExecutor;
public class EventAdapter implements JsonSerializer<Event>, JsonDeserializer<Event> {
@Override
public Event deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Event event = new Event();
JsonObject object = json.getAsJsonObject();
event.setModified(new Date(object.get(Event.MODIFIED).getAsLong()));
event.setEventCode(object.get(Event.EVENT_CODE).getAsString());
event.setEventType(object.get(Event.EVENT_TYPE).getAsInt());
event.setEventDistrict(object.get(Event.EVENT_DISTRICT).getAsInt());
event.setYear(object.get(Event.YEAR).getAsInt());
event.setOfficial(object.get(Event.OFFICIAL).getAsBoolean());
JsonElement element = object.get(Event.NAME);
if(null!=element) {
event.setName(element.getAsString());
}
element = object.get(Event.SHORT_NAME);
if(null!=element) {
event.setShortName(element.getAsString());
}
element = object.get(Event.VENUE_ADDRESS);
if(null!=element) {
event.setVenueAddress(element.getAsString());
}
element = object.get(Event.WEBSITE);
if(null!=element) {
event.setWebsite(element.getAsString());
}
element = object.get(Event.START_DATE);
if(null!=element) {
event.setStartDate(new Date(element.getAsLong()));
}
element = object.get(Event.END_DATE);
if(null!=element) {
event.setEndDate(new Date(element.getAsLong()));
}
return event;
}
@Override
public JsonElement serialize(Event src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject object = new JsonObject();
object.addProperty(Event.MODIFIED,src.getModified().getTime());
object.addProperty(Event.NAME,src.getName());
object.addProperty(Event.SHORT_NAME,src.getShortName());
object.addProperty(Event.EVENT_CODE,src.getEventCode());
object.addProperty(Event.EVENT_TYPE,src.getEventType());
object.addProperty(Event.EVENT_DISTRICT,src.getEventDistrict());
object.addProperty(Event.YEAR,src.getYear());
object.addProperty(Event.VENUE_ADDRESS,src.getVenueAddress());
object.addProperty(Event.WEBSITE,src.getWebsite());
object.addProperty(Event.START_DATE,src.getStartDate().getTime());
object.addProperty(Event.END_DATE,src.getEndDate().getTime());
object.addProperty(Event.OFFICIAL,src.isOfficial());
return object;
}
}