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.Team; import java.lang.reflect.Type; import java.util.Date; /** * Created by mechinn on 3/10/15. */ public class TeamAdapter implements JsonSerializer<Team>, JsonDeserializer<Team> { @Override public Team deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { Team team = new Team(); JsonObject object = json.getAsJsonObject(); team.setTeamNumber(object.get(Team.TEAM_NUMBER).getAsInt()); team.setModified(new Date(object.get(Team.MODIFIED).getAsLong())); JsonElement element = object.get(Team.WEBSITE); if(null!=element) { team.setWebsite(element.getAsString()); } element = object.get(Team.NAME); if(null!=element) { team.setName(element.getAsString()); } element = object.get(Team.LOCALITY); if(null!=element) { team.setLocality(element.getAsString()); } element = object.get(Team.REGION); if(null!=element) { team.setRegion(element.getAsString()); } element = object.get(Team.COUNTRY); if(null!=element) { team.setCountry(element.getAsString()); } element = object.get(Team.NICKNAME); if(null!=element) { team.setNickname(element.getAsString()); } element = object.get(Team.ROOKIE_YEAR); if(null!=element) { team.setRookieYear(element.getAsInt()); } return team; } @Override public JsonElement serialize(Team src, Type typeOfSrc, JsonSerializationContext context) { JsonObject object = new JsonObject(); object.addProperty(Team.MODIFIED,src.getModified().getTime()); object.addProperty(Team.WEBSITE,src.getWebsite()); object.addProperty(Team.NAME,src.getName()); object.addProperty(Team.LOCALITY,src.getLocality()); object.addProperty(Team.REGION,src.getRegion()); object.addProperty(Team.COUNTRY,src.getCountry()); object.addProperty(Team.TEAM_NUMBER,src.getTeamNumber()); object.addProperty(Team.NICKNAME,src.getNickname()); object.addProperty(Team.ROOKIE_YEAR,src.getRookieYear()); return object; } }