Browse Source

Fix for old save files

Tom Troppmann 3 years ago
parent
commit
73b15b502a
1 changed files with 14 additions and 43 deletions
  1. 14 43
      src/ui/controller/LoadController.java

+ 14 - 43
src/ui/controller/LoadController.java

@@ -138,24 +138,17 @@ public class LoadController {
      * distribute the Edges
      */
     private void forwardEdges(List<String> edges, JsonObject json, HashMap<Integer, AbstractCanvasObject> objDispatch) {
-
-        List<String> conn = new ArrayList<>();
-
         for (String edge : edges) {
             if (edge.contains("CVSEDGE"))
                 loadEdge(EDGETYPE.CANVAS, json.get(edge), objDispatch);
             if (edge.contains("CONNEDGE"))
-                conn.add(edge);
+            	loadEdge(EDGETYPE.CONNECTION, json.get(edge), objDispatch);
             if (edge.contains("NODE"))
                 loadEdge(EDGETYPE.NODE, json.get(edge), objDispatch);
             if (edge.contains("OLD"))
                 loadEdge(EDGETYPE.OLD, json.get(edge), objDispatch);
         }
 
-        for (String edge : conn) {
-            loadEdge(EDGETYPE.CONNECTION, json.get(edge), objDispatch);
-        }
-
     }
 
     /**
@@ -263,7 +256,18 @@ public class LoadController {
      * Load a given Object in Canvas by Deserialization
      */
     private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch) {
-        AbstractCanvasObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCanvasObject.class);
+    	AbstractCanvasObject temp = null;
+    	if(jsonElement.getAsJsonObject().get("type").getAsString().equals("CpsUpperNode")) {
+    		//Change Old Name
+    		jsonElement.getAsJsonObject().addProperty("type", "GroupNode");
+    	}
+    	try{
+        	temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCanvasObject.class);
+        }catch(java.lang.ClassCastException e) {
+        	System.err.println("ClassRenameError");
+        	e.printStackTrace();
+        	return;
+        }
         initObjects(temp);
         temp.setImage(checkOS(temp.getImage()));
         if (temp instanceof GroupNode) {
@@ -331,40 +335,7 @@ public class LoadController {
         // look for A and B inside the Table
         temp.setA(objDispatch.get(object.get("A").getAsInt()));
         temp.setB(objDispatch.get(object.get("B").getAsInt()));
-
-        int sav;
-
-        switch (type) {
-            case CANVAS:
-                // if in canvas add it into the canvas but delete connection before
-                model.getEdgesOnCanvas().add(temp);
-                break;
-            case CONNECTION:
-            	if(temp.getA() == null || temp.getB() == null){
-            		System.err.println(temp.toString());
-            		new Error().getStackTrace();
-            		break;
-            	}
-                // if no duplicates in connection store them into the given A and B
-                if (!uppC.lookforDuplicates(temp.getA(), temp.getB(), temp.getA().getConnections()))
-                    temp.getA().getConnections().add(temp);
-                if (!uppC.lookforDuplicates(temp.getA(), temp.getB(), temp.getB().getConnections()))
-                    temp.getB().getConnections().add(temp);
-                break;
-            default:
-                break;
-        }
-
-        if (object.get("connection").getAsBoolean() && !type.equals(EDGETYPE.CONNECTION)) {
-            if(temp.getA() == null || temp.getB() == null){
-            	System.err.println("invaldid Connection loaded: " + temp.toString());
-            	new Error().printStackTrace();
-            	return;
-            }
-        	temp.getA().getConnections().add(temp);
-            temp.getB().getConnections().add(temp);
-        }
-
+        model.getEdgesOnCanvas().add(temp);
     }
 
     /**