EdgeDeserializer.java 1.1 KB

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