EdgeDeserializer.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. package holeg.adapter;
  2. import com.google.gson.*;
  3. import holeg.model.AbstractCanvasObject;
  4. import holeg.model.Edge;
  5. import java.io.IOException;
  6. import java.lang.reflect.Type;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. public class EdgeDeserializer implements JsonDeserializer<Edge> {
  10. public Map<Integer, AbstractCanvasObject> idMap= new HashMap<>();
  11. @Override
  12. public Edge deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
  13. JsonObject jsonObj = json.getAsJsonObject();
  14. Edge edge = new Edge(idToCanvasObject(jsonObj.get("idA").getAsInt()),
  15. idToCanvasObject(jsonObj.get("idB").getAsInt()),
  16. jsonObj.get("maxCapacity").getAsFloat());
  17. edge.mode = Edge.EdgeMode.valueOf(jsonObj.get("mode").getAsString());
  18. return edge;
  19. }
  20. private AbstractCanvasObject idToCanvasObject(int id) throws JsonParseException{
  21. AbstractCanvasObject object = idMap.get(id);
  22. if(object == null){
  23. throw new JsonParseException("Cannot find AbstractCanvasObject with id: " + id);
  24. }
  25. return object;
  26. }
  27. }