package com.mechinn.android.ouralliance.gson;
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.Match;
import java.lang.reflect.Type;
import java.util.Date;
public class MatchAdapter implements JsonSerializer<Match>, JsonDeserializer<Match> {
@Override
public Match deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Match match = new Match();
JsonObject object = json.getAsJsonObject();
match.setModified(new Date(object.get(Match.MODIFIED).getAsLong()));
match.setEvent(OurAllianceGson.BUILDER.fromJson(object.get(Match.EVENT), Event.class));
match.setCompLevel(object.get(Match.COMPETITION_LEVEL).getAsString());
match.setMatchNumber(object.get(Match.MATCH_NUMBER).getAsInt());
JsonElement element = object.get(Match.SET_NUMBER);
if(null!=element) {
match.setSetNumber(element.getAsInt());
}
element = object.get(Match.TIME);
if(null!=element) {
match.setTime(new Date(element.getAsLong()));
}
element = object.get(Match.RED_SCORE);
if(null!=element) {
match.setRedScore(element.getAsInt());
}
element = object.get(Match.BLUE_SCORE);
if(null!=element) {
match.setBlueScore(element.getAsInt());
}
return match;
}
@Override
public JsonElement serialize(Match src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject object = new JsonObject();
object.addProperty(Match.MODIFIED,src.getModified().getTime());
object.add(Match.EVENT,OurAllianceGson.BUILDER.toJsonTree(src.getEvent()));
object.addProperty(Match.COMPETITION_LEVEL, src.getCompLevel());
object.addProperty(Match.MATCH_NUMBER,src.getMatchNumber());
object.addProperty(Match.SET_NUMBER,src.getSetNumber());
object.addProperty(Match.TIME,src.getTime().getTime());
object.addProperty(Match.RED_SCORE,src.getRedScore());
object.addProperty(Match.BLUE_SCORE,src.getBlueScore());
return object;
}
}