package polly.rx.core.orion.model.json; import java.lang.reflect.Type; import polly.rx.core.orion.model.Portal; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.google.gson.reflect.TypeToken; public class PortalJsonHandler extends AbstractJsonHandler implements JsonSerializer<Portal> { private final static String OWNER = "ownerName"; //$NON-NLS-1$ private final static String OWNER_CLAN = "ownerClan"; //$NON-NLS-1$ private final static String DATE = "date"; //$NON-NLS-1$ private final static String SECTOR = "sector"; //$NON-NLS-1$ private final static String TYPE = "type"; //$NON-NLS-1$ final static Type PORTAL_TYPE = new TypeToken<Portal>() {}.getType(); private final SectorJsonHandler sectorHandler; public PortalJsonHandler(SectorJsonHandler sectorHandler) { this.sectorHandler = sectorHandler; } @Override public JsonElement serialize(Portal src, Type typeOfSrc, JsonSerializationContext context) { final JsonObject result = new JsonObject(); result.addProperty(OWNER, src.getOwnerName()); result.addProperty(OWNER_CLAN, src.getOwnerClan()); result.addProperty(DATE, src.getDate().toString()); final JsonElement sector = this.sectorHandler.serialize(src.getSector(), SectorJsonHandler.SECTOR_TYPE, context); result.add(SECTOR, sector); result.addProperty(TYPE, src.getType().toString()); return result; } }