EdgeDeserializer.java 1.2 KB

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