package polly.rx.core.orion.model.json;
import polly.rx.core.orion.model.Quadrant;
import polly.rx.core.orion.model.Sector;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import de.skuzzle.polly.http.api.answers.HttpAnswer;
import de.skuzzle.polly.http.api.answers.HttpAnswers;
public final class OrionJsonAdapter {
private final static FleetJsonHandler FLEET_HANDLER;
private final static ProductionJsonHandler PRODUCTION_HANDLER;
private final static SectorJsonHandler SECTOR_HANDLER;
private final static QuadrantJsonHandler QUADRANT_HANDLER;
private final static PortalJsonHandler PORTAL_HANDLER;
public final static Gson GSON;
static {
FLEET_HANDLER = new FleetJsonHandler();
PRODUCTION_HANDLER = new ProductionJsonHandler();
SECTOR_HANDLER = new SectorJsonHandler(PRODUCTION_HANDLER);
QUADRANT_HANDLER = new QuadrantJsonHandler(SECTOR_HANDLER);
PORTAL_HANDLER = new PortalJsonHandler(SECTOR_HANDLER);
final GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(FleetJsonHandler.FLEET_TYPE, FLEET_HANDLER);
builder.registerTypeAdapter(SectorJsonHandler.SECTOR_TYPE, SECTOR_HANDLER);
builder.registerTypeAdapter(SectorJsonHandler.CLIENT_SECTOR_TYPE, SECTOR_HANDLER);
builder.registerTypeAdapter(ProductionJsonHandler.PRODUCTION_TYPE, PRODUCTION_HANDLER);
builder.registerTypeAdapter(QuadrantJsonHandler.QUADRANT_TYPE, QUADRANT_HANDLER);
builder.registerTypeAdapter(PortalJsonHandler.PORTAL_TYPE, PORTAL_HANDLER);
GSON = builder.create();
}
public static FromClientSector readSectorFromClient(String json) {
return GSON.fromJson(json, SectorJsonHandler.CLIENT_SECTOR_TYPE);
}
public static HttpAnswer sectorAnswer(Sector s) {
final String json = GSON.toJson(s, SectorJsonHandler.SECTOR_TYPE);
return HttpAnswers.newStringAnswer(json);
}
public static HttpAnswer quadrantAnswer(Quadrant q) {
final String json = GSON.toJson(q, QuadrantJsonHandler.QUADRANT_TYPE);
return HttpAnswers.newStringAnswer(json);
}
private OrionJsonAdapter() {}
}