Browse Source

some javadoc

Teh-Hai Julian Zheng 7 years ago
parent
commit
c1a49aecd5
2 changed files with 196 additions and 126 deletions
  1. 169 111
      src/ui/controller/LoadController.java
  2. 27 15
      src/ui/controller/StoreController.java

+ 169 - 111
src/ui/controller/LoadController.java

@@ -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) {
 		// TODO Auto-generated method stub
 
@@ -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) {
 		// TODO Auto-generated method stub
@@ -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) {
 		// TODO Auto-generated method stub
+		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) {
+		// TODO Auto-generated method stub
+		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) {
+		// TODO Auto-generated method stub
+		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) {
+		// TODO Auto-generated method stub
+		AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+		initObjects(temp);
+		// if its stored before on the canvas just put it there
+		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 {
+			// else look up the table and put it into the right Uppernode
+			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) {
+		// TODO Auto-generated method stub
 
+		JsonObject object = jsonElement.getAsJsonObject();
+		
+		HolonElement temp = gson.fromJson(object.get("properties"), HolonElement.class);
+		initElements(temp);
+		//id which Object it was stored before
+		int stored = object.get("ID").getAsInt();
+		//lookup that object
+		HolonObject temp2 = (HolonObject) objDispatch.get(stored);
+		//add it
+		objC.addElement(temp2, temp);
+		//store element also inside a table
+		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) {
 		// TODO Auto-generated method stub
 		JsonObject object = jsonElement.getAsJsonObject();
 		CpsEdge temp = gson.fromJson(object.get("properties"), CpsEdge.class);
 		initCpsEdge(temp);
+		//look for A and B inside the Table
 		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:
+			//if in canvas add it into the canvas but delete connection before
 			model.getEdgesOnCanvas().add(temp);
 			temp.getA().getConnections().remove(temp);
 			temp.getB().getConnections().remove(temp);
 			break;
 		case CONNECTION:
+			//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;
 		case NODE:
+			// put it into given nodeofnode
 			sav = object.get("ID").getAsInt();
 			((CpsUpperNode) objDispatch.get(sav)).getNodeEdges().add(temp);
 			break;
 		case OLD:
+			//same as above
 			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) {
 		// TODO Auto-generated method stub
 
 		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;
+		//foreach Point in the graph restore it
+		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
+				//else its an ID
+				sav = object.get(k).getAsInt();
 
-	/**
-	 * 
-	 * @param jsonElement
-	 * @param objDispatch
-	 */
-	private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
-		// TODO Auto-generated method stub
-		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) {
-		// TODO Auto-generated method stub
-		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) {
-		// TODO Auto-generated method stub
-		AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
-		initObjects(temp);
-
-		cgC.addObject(mpC.searchCat(temp.getSav()), temp);
-	}
-
-	private void loadCategory(JsonElement jsonElement) {
-		// TODO Auto-generated method stub
-		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));
 	}

+ 27 - 15
src/ui/controller/StoreController.java

@@ -148,15 +148,17 @@ public class StoreController {
 	 */
 	private void storeCategory(JsonObject file) {
 		// TODO Auto-generated method stub
+		// forall categories store them into the jsontree
 		for (Category cat : model.getCategories()) {
 			String key = "CATEGORY" + getNumerator(NUMTYPE.CATEGORY);
 
 			file.add(key, new JsonPrimitive(cat.getName()));
-
+			// forall object in the category store them into the jsontree
 			for (AbstractCpsObject obj : cat.getObjects()) {
 				file.add("CGOBJECT" + getNumerator(NUMTYPE.OBJECT), gson.toJsonTree(obj, AbstractCpsObject.class));
+				// if its a holonobject add elements too
 				if (obj instanceof HolonObject)
-					elementsToJson(TYPE.CATEGORY, gson, file, obj);
+					elementsToJson(TYPE.CATEGORY, file, obj);
 			}
 		}
 	}
@@ -170,56 +172,64 @@ public class StoreController {
 		// TODO Auto-generated method stub
 		Queue<AbstractCpsObject> queue = new Queue<>();
 		AbstractCpsObject u = null;
-
+		// put all objects into queue since there is not starting object
 		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
 			queue.enqueue(cps);
 		}
-
+		// while quene not empty
 		while (!queue.isEmpty()) {
 			try {
+				// u = current node
 				u = queue.dequeue();
 			} catch (InterruptedException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
+			// add currentnode into jsontree
 			String key = "CVSOBJECT" + getNumerator(NUMTYPE.OBJECT);
 			file.add(key, gson.toJsonTree(u, AbstractCpsObject.class));
+			// and its connections too
 			edgeToJson(EDGETYPE.CONNECTION, file, u.getID(), u.getConnections());
-
+			// if holonobject elements too
 			if (u instanceof HolonObject)
-				elementsToJson(TYPE.CANVAS, gson, file, u);
+				elementsToJson(TYPE.CANVAS, file, u);
+			// if switch graphpoints too
 			if (u instanceof HolonSwitch)
 				if (((HolonSwitch) u).getGraphPoints().size() != 0)
 					unitgraphToJson(GRAPHTYPE.SWITCH, file, u.getID(), ((HolonSwitch) u).getGraphPoints());
+			// if uppernode put all nodes inside the uppernode into queue
 			if (u instanceof CpsUpperNode) {
 				for (AbstractCpsObject adjacent : ((CpsUpperNode) u).getNodes()) {
 					queue.enqueue(adjacent);
 
 				}
+				// dont forget to add the nodeedges and oldedges
 				edgeToJson(EDGETYPE.NODE, file, u.getID(), ((CpsUpperNode) u).getNodeEdges());
 				edgeToJson(EDGETYPE.OLD, file, u.getID(), ((CpsUpperNode) u).getOldEdges());
 			}
 		}
+		// lastly add canvasedges into json
 		edgeToJson(EDGETYPE.CANVAS, file, 0, model.getEdgesOnCanvas());
 
 	}
 
 	/**
+	 * Stores Category or Canvas Elements into Json
 	 * 
 	 * @param type
 	 * @param gson
 	 * @param file
 	 * @param obj
 	 */
-	private void elementsToJson(TYPE type, Gson gson, JsonObject file, AbstractCpsObject obj) {
+	private void elementsToJson(TYPE type, JsonObject file, AbstractCpsObject obj) {
 		// TODO Auto-generated method stub
 		JsonObject temp = new JsonObject();
 		String key = null;
-
+		// forall elements store them into json and include the id of the object
 		for (HolonElement ele : ((HolonObject) obj).getElements()) {
 			temp.add("properties", gson.toJsonTree(ele));
 			temp.add("ID", new JsonPrimitive(obj.getID()));
-
+			//switch for deciding the key
 			switch (type) {
 			case CANVAS:
 				key = "CVSELEMENT" + getNumerator(NUMTYPE.ELEMENT);
@@ -231,6 +241,7 @@ public class StoreController {
 				break;
 			}
 			file.add(key, gson.toJsonTree(temp));
+			//if there are gps add them into
 			if (ele.getGraphPoints().size() != 0)
 				unitgraphToJson(GRAPHTYPE.ELEMENT, file, ele.getId(), ele.getGraphPoints());
 			temp = new JsonObject();
@@ -239,18 +250,18 @@ public class StoreController {
 	}
 
 	/**
-	 * 
+	 * Put the UnitGraphs of Switches or Elements into Json
 	 * @param ele
 	 */
 	private void unitgraphToJson(GRAPHTYPE type, JsonObject file, int id, LinkedList<Point> graph) {
 
 		JsonObject temp = new JsonObject();
 		String key = null;
-
+		//forall points add them
 		for (int i = 0; i < graph.size(); i++) {
 			temp.add("" + i, new JsonPrimitive(graph.get(i).x + ":" + graph.get(i).y));
 		}
-
+		//decide key
 		switch (type) {
 		case SWITCH:
 			key = "SWUNITGRAPH" + getNumerator(NUMTYPE.UNITGRAPH);
@@ -261,14 +272,14 @@ public class StoreController {
 		default:
 			break;
 		}
-
+		//add id of element so it can be found again
 		temp.add("ID", new JsonPrimitive(id));
 
 		file.add(key, gson.toJsonTree(temp));
 	}
 
 	/**
-	 * 
+	 * Canvas-Edge, Connections, Node-Edge and Old-Edges to json
 	 * @param type
 	 * @param file
 	 * @param id
@@ -280,11 +291,12 @@ public class StoreController {
 		JsonObject temp = new JsonObject();
 
 		for (CpsEdge edge : arr) {
-
+			//add properties and only the ids from a and b
 			temp.add("properties", gson.toJsonTree(edge));
 			temp.add("A", new JsonPrimitive(edge.getA().getID()));
 			temp.add("B", new JsonPrimitive(edge.getB().getID()));
 
+			//Key and occasionally the id of Uppernode 
 			switch (type) {
 			case CANVAS:
 				k = "CVSEDGE" + getNumerator(NUMTYPE.EDGE);