|
@@ -109,6 +109,12 @@ public class LoadController {
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * distribute the Edges
|
|
|
+ * @param edges
|
|
|
+ * @param json
|
|
|
+ * @param objDispatch
|
|
|
+ */
|
|
|
private void distEdges(List<String> edges, JsonObject json, HashMap<Integer, AbstractCpsObject> objDispatch) {
|
|
|
|
|
|
|
|
@@ -123,7 +129,14 @@ public class LoadController {
|
|
|
loadEdge(EDGETYPE.OLD, json.get(edge), objDispatch);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ * Distribute the given keys for right processing
|
|
|
+ * @param keys
|
|
|
+ * @param json
|
|
|
+ * @param objDispatch
|
|
|
+ * @param eleDispatch
|
|
|
+ */
|
|
|
private void distribute(List<String> keys, JsonObject json, HashMap<Integer, AbstractCpsObject> objDispatch,
|
|
|
HashMap<Integer, HolonElement> eleDispatch) {
|
|
|
|
|
@@ -146,49 +159,132 @@ public class LoadController {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void loadUnitGraph(GRAPHTYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
|
|
|
- HashMap<Integer, HolonElement> eleDispatch) {
|
|
|
+
|
|
|
+ * Init the Global Parameters
|
|
|
+ *
|
|
|
+ * @param keys
|
|
|
+ * @param json
|
|
|
+ */
|
|
|
+ private void initialize(List<String> keys, JsonObject json) {
|
|
|
+
|
|
|
+ switch (MODE.valueOf(json.get("MODE").getAsString())) {
|
|
|
+ case COMPLETE:
|
|
|
+ model.setCgIdx(new HashMap<String, Integer>());
|
|
|
+ model.setCategories(new ArrayList<Category>());
|
|
|
+ model.setCvsObjIdx(new HashMap<Integer, Integer>());
|
|
|
+ model.setObjectsOnCanvas(new ArrayList<AbstractCpsObject>());
|
|
|
+ model.setEdgesOnCanvas(new ArrayList<CpsEdge>());
|
|
|
+ model.setCanvasX(json.get("CANVAS_SIZE_X").getAsInt());
|
|
|
+ model.setCanvasX(json.get("CANVAS_SIZE_Y").getAsInt());
|
|
|
+ break;
|
|
|
+ case PARTIAL:
|
|
|
+ model.setCvsObjIdx(new HashMap<Integer, Integer>());
|
|
|
+ model.setObjectsOnCanvas(new ArrayList<AbstractCpsObject>());
|
|
|
+ model.setEdgesOnCanvas(new ArrayList<CpsEdge>());
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ IdCounter.setCounter(json.get("IDCOUNTER").getAsInt());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Load a given Category
|
|
|
+ *
|
|
|
+ * @param jsonElement
|
|
|
+ */
|
|
|
+ private void loadCategory(JsonElement jsonElement) {
|
|
|
|
|
|
+ cgC.addCategory(new Category(jsonElement.getAsString()));
|
|
|
+ }
|
|
|
|
|
|
- JsonObject object = jsonElement.getAsJsonObject();
|
|
|
- List<String> keys = getKeys(object);
|
|
|
- String p = null;
|
|
|
- int mid, x, y = 0;
|
|
|
+
|
|
|
+ * Load a given Object in Category by Deserialization
|
|
|
+ *
|
|
|
+ * @param jsonElement
|
|
|
+ */
|
|
|
+ private void loadCategoryObject(JsonElement jsonElement) {
|
|
|
+
|
|
|
+ AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
|
|
|
+ initObjects(temp);
|
|
|
|
|
|
- LinkedList<Point> graphpoint = new LinkedList<>();
|
|
|
- int sav = 0;
|
|
|
+ cgC.addObject(mpC.searchCat(temp.getSav()), temp);
|
|
|
+ }
|
|
|
|
|
|
- for (String k : keys) {
|
|
|
- if (!k.equals("ID")) {
|
|
|
- p = object.get(k).getAsString();
|
|
|
- mid = p.indexOf(':');
|
|
|
- x = Integer.parseInt(p.substring(0, mid));
|
|
|
- y = Integer.parseInt(p.substring(mid + 1, p.length()));
|
|
|
- graphpoint.add(new Point(x, y));
|
|
|
- } else
|
|
|
- sav = object.get(k).getAsInt();
|
|
|
+
|
|
|
+ * Load a given Element in Category by Deserialization
|
|
|
+ *
|
|
|
+ * @param jsonElement
|
|
|
+ */
|
|
|
+ private void loadCategoryElements(JsonElement jsonElement) {
|
|
|
+
|
|
|
+ HolonElement temp = gson.fromJson(jsonElement.getAsJsonObject().get("properties").getAsJsonObject(),
|
|
|
+ HolonElement.class);
|
|
|
+ initElements(temp);
|
|
|
+ objC.addElementIntoCategoryObject(temp.getSav(), temp.getObj(), temp);
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+
|
|
|
+ * Load a given Object in Canvas by Deserialization
|
|
|
+ *
|
|
|
+ * @param jsonElement
|
|
|
+ * @param objDispatch
|
|
|
+ */
|
|
|
+ private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
|
|
|
+
|
|
|
+ AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
|
|
|
+ initObjects(temp);
|
|
|
+
|
|
|
+ if (temp.getSav().equals("CVS")) {
|
|
|
+ cvsC.addObject(temp);
|
|
|
|
|
|
- switch (type) {
|
|
|
- case SWITCH:
|
|
|
- HolonSwitch sw = (HolonSwitch) objDispatch.get(sav);
|
|
|
- sw.setGraphPoints(graphpoint);
|
|
|
- break;
|
|
|
- case ELEMENT:
|
|
|
- HolonElement ele = eleDispatch.get(sav);
|
|
|
- ele.setGraphPoints(graphpoint);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ } else {
|
|
|
+
|
|
|
+ CpsUpperNode temp2 = (CpsUpperNode) objDispatch.get(Integer.parseInt(temp.getSav()));
|
|
|
+ uppC.addObjectInUpperNode(temp, temp2);
|
|
|
}
|
|
|
+
|
|
|
+ objDispatch.put(temp.getID(), temp);
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ * Load a given Element in Canvas by Deserialization
|
|
|
+ * @param jsonElement
|
|
|
+ * @param objDispatch
|
|
|
+ * @param eleDispatch
|
|
|
+ */
|
|
|
+ private void loadCanvasElements(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
|
|
|
+ HashMap<Integer, HolonElement> eleDispatch) {
|
|
|
+
|
|
|
|
|
|
+ JsonObject object = jsonElement.getAsJsonObject();
|
|
|
+
|
|
|
+ HolonElement temp = gson.fromJson(object.get("properties"), HolonElement.class);
|
|
|
+ initElements(temp);
|
|
|
+
|
|
|
+ int stored = object.get("ID").getAsInt();
|
|
|
+
|
|
|
+ HolonObject temp2 = (HolonObject) objDispatch.get(stored);
|
|
|
+
|
|
|
+ objC.addElement(temp2, temp);
|
|
|
+
|
|
|
+ eleDispatch.put(temp.getId(), temp);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Load a given Edge by Deserialization
|
|
|
+ * @param type
|
|
|
+ * @param jsonElement
|
|
|
+ * @param objDispatch
|
|
|
+ */
|
|
|
private void loadEdge(EDGETYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
|
|
|
|
|
|
JsonObject object = jsonElement.getAsJsonObject();
|
|
|
CpsEdge temp = gson.fromJson(object.get("properties"), CpsEdge.class);
|
|
|
initCpsEdge(temp);
|
|
|
+
|
|
|
temp.setA(objDispatch.get(object.get("A").getAsInt()));
|
|
|
temp.setB(objDispatch.get(object.get("B").getAsInt()));
|
|
|
|
|
@@ -196,21 +292,25 @@ public class LoadController {
|
|
|
|
|
|
switch (type) {
|
|
|
case CANVAS:
|
|
|
+
|
|
|
model.getEdgesOnCanvas().add(temp);
|
|
|
temp.getA().getConnections().remove(temp);
|
|
|
temp.getB().getConnections().remove(temp);
|
|
|
break;
|
|
|
case CONNECTION:
|
|
|
+
|
|
|
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;
|
|
|
case NODE:
|
|
|
+
|
|
|
sav = object.get("ID").getAsInt();
|
|
|
((CpsUpperNode) objDispatch.get(sav)).getNodeEdges().add(temp);
|
|
|
break;
|
|
|
case OLD:
|
|
|
+
|
|
|
sav = object.get("ID").getAsInt();
|
|
|
((CpsUpperNode) objDispatch.get(sav)).getOldEdges().add(temp);
|
|
|
break;
|
|
@@ -219,105 +319,51 @@ public class LoadController {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
- *
|
|
|
+ * Load a Unitgraph by Deserialization
|
|
|
+ * @param type
|
|
|
* @param jsonElement
|
|
|
* @param objDispatch
|
|
|
* @param eleDispatch
|
|
|
*/
|
|
|
- private void loadCanvasElements(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
|
|
|
+ private void loadUnitGraph(GRAPHTYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
|
|
|
HashMap<Integer, HolonElement> eleDispatch) {
|
|
|
|
|
|
|
|
|
JsonObject object = jsonElement.getAsJsonObject();
|
|
|
- HolonElement temp = gson.fromJson(object.get("properties"), HolonElement.class);
|
|
|
- initElements(temp);
|
|
|
-
|
|
|
- int stored = object.get("ID").getAsInt();
|
|
|
-
|
|
|
- HolonObject temp2 = (HolonObject) objDispatch.get(stored);
|
|
|
+ List<String> keys = getKeys(object);
|
|
|
+ String p = null;
|
|
|
+ int mid, x, y = 0;
|
|
|
|
|
|
- objC.addElement(temp2, temp);
|
|
|
- eleDispatch.put(temp.getId(), temp);
|
|
|
- }
|
|
|
+ LinkedList<Point> graphpoint = new LinkedList<>();
|
|
|
+ int sav = 0;
|
|
|
+
|
|
|
+ for (String k : keys) {
|
|
|
+ if (!k.equals("ID")) {
|
|
|
+ p = object.get(k).getAsString();
|
|
|
+ mid = p.indexOf(':');
|
|
|
+ x = Integer.parseInt(p.substring(0, mid));
|
|
|
+ y = Integer.parseInt(p.substring(mid + 1, p.length()));
|
|
|
+ graphpoint.add(new Point(x, y));
|
|
|
+ } else
|
|
|
+
|
|
|
+ sav = object.get(k).getAsInt();
|
|
|
|
|
|
-
|
|
|
- *
|
|
|
- * @param jsonElement
|
|
|
- * @param objDispatch
|
|
|
- */
|
|
|
- private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
|
|
|
-
|
|
|
- AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
|
|
|
- initObjects(temp);
|
|
|
- if (temp.getSav().equals("CVS")) {
|
|
|
- cvsC.addObject(temp);
|
|
|
- } else {
|
|
|
- CpsUpperNode temp2 = (CpsUpperNode) objDispatch.get(Integer.parseInt(temp.getSav()));
|
|
|
- uppC.addObjectInUpperNode(temp, temp2);
|
|
|
}
|
|
|
|
|
|
- objDispatch.put(temp.getID(), temp);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- *
|
|
|
- * @param jsonElement
|
|
|
- */
|
|
|
- private void loadCategoryElements(JsonElement jsonElement) {
|
|
|
-
|
|
|
- HolonElement temp = gson.fromJson(jsonElement.getAsJsonObject().get("properties").getAsJsonObject(),
|
|
|
- HolonElement.class);
|
|
|
- initElements(temp);
|
|
|
- objC.addElementIntoCategoryObject(temp.getSav(), temp.getObj(), temp);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- *
|
|
|
- * @param jsonElement
|
|
|
- */
|
|
|
- private void loadCategoryObject(JsonElement jsonElement) {
|
|
|
-
|
|
|
- AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
|
|
|
- initObjects(temp);
|
|
|
-
|
|
|
- cgC.addObject(mpC.searchCat(temp.getSav()), temp);
|
|
|
- }
|
|
|
-
|
|
|
- private void loadCategory(JsonElement jsonElement) {
|
|
|
-
|
|
|
- cgC.addCategory(new Category(jsonElement.getAsString()));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- *
|
|
|
- * @param keys
|
|
|
- * @param json
|
|
|
- */
|
|
|
- private void initialize(List<String> keys, JsonObject json) {
|
|
|
-
|
|
|
- switch (MODE.valueOf(json.get("MODE").getAsString())) {
|
|
|
- case COMPLETE:
|
|
|
- model.setCgIdx(new HashMap<String, Integer>());
|
|
|
- model.setCategories(new ArrayList<Category>());
|
|
|
- model.setCvsObjIdx(new HashMap<Integer, Integer>());
|
|
|
- model.setObjectsOnCanvas(new ArrayList<AbstractCpsObject>());
|
|
|
- model.setEdgesOnCanvas(new ArrayList<CpsEdge>());
|
|
|
- model.setCanvasX(json.get("CANVAS_SIZE_X").getAsInt());
|
|
|
- model.setCanvasX(json.get("CANVAS_SIZE_Y").getAsInt());
|
|
|
+ switch (type) {
|
|
|
+ case SWITCH:
|
|
|
+ HolonSwitch sw = (HolonSwitch) objDispatch.get(sav);
|
|
|
+ sw.setGraphPoints(graphpoint);
|
|
|
break;
|
|
|
- case PARTIAL:
|
|
|
- model.setCvsObjIdx(new HashMap<Integer, Integer>());
|
|
|
- model.setObjectsOnCanvas(new ArrayList<AbstractCpsObject>());
|
|
|
- model.setEdgesOnCanvas(new ArrayList<CpsEdge>());
|
|
|
+ case ELEMENT:
|
|
|
+ HolonElement ele = eleDispatch.get(sav);
|
|
|
+ ele.setGraphPoints(graphpoint);
|
|
|
break;
|
|
|
-
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- IdCounter.setCounter(json.get("IDCOUNTER").getAsInt());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -368,6 +414,7 @@ public class LoadController {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ * Init Elements
|
|
|
*
|
|
|
* @param ele
|
|
|
*/
|
|
@@ -377,6 +424,11 @@ public class LoadController {
|
|
|
ele.setGraphPoints(new LinkedList<>());
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * Init Edges
|
|
|
+ *
|
|
|
+ * @param edge
|
|
|
+ */
|
|
|
private void initCpsEdge(CpsEdge edge) {
|
|
|
edge.setTags(new ArrayList<>());
|
|
|
edge.setPseudoTag(new ArrayList<>());
|
|
@@ -384,6 +436,12 @@ public class LoadController {
|
|
|
edge.setB(null);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * Get Set of Keys
|
|
|
+ *
|
|
|
+ * @param json
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private List<String> getKeys(JsonObject json) {
|
|
|
return json.entrySet().stream().map(i -> i.getKey()).collect(Collectors.toCollection(ArrayList::new));
|
|
|
}
|