Teh-Hai Julian Zheng 7 rokov pred
rodič
commit
2a00fa1a03

+ 5 - 3
src/classes/HolonObject.java

@@ -25,22 +25,24 @@ public class HolonObject extends CpsObject {
 	 */
 	public HolonObject(String ObjName) {
 		super(ObjName);
-		setEleIdx(new HashMap<>());
+
 		setElements(new ArrayList<HolonElement>());
+		setEleIdx(new HashMap<>());
 
 	}
 
 	public HolonObject(String ObjName, String obj) {
 		super(ObjName);
 		super.setName(obj);
-		setEleIdx(new HashMap<>());
 		setElements(new ArrayList<HolonElement>());
+		setEleIdx(new HashMap<>());
 	}
 
 	public HolonObject(CpsObject obj) {
 		super(obj);
+
+		//setElements(((HolonObject) obj).getCopyofElements());
 		setEleIdx(MultiPurposeController.copyHashMap(((HolonObject) obj).getEleIdx()));
-//		setElements(((HolonObject) obj).getCopyofElements());
 		setElements(MultiPurposeController.copyArrayList(((HolonObject)obj).getElements()));
 	}
 

+ 0 - 1
src/ui/controller/CanvasController.java

@@ -25,7 +25,6 @@ public class CanvasController {
 	 *            CpsObject to be added.
 	 */
 	public void addObject(CpsObject object) {
-
 		MODEL.getCvsObjIdx().put(object.getID(), MODEL.getObjectsOnCanvas().size());
 		MODEL.getObjectsOnCanvas().add(object);
 		notifyObjListeners();

+ 5 - 0
src/ui/controller/LoadController.java

@@ -4,6 +4,7 @@ import java.awt.Point;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 
 import org.json.simple.JSONArray;
@@ -47,9 +48,12 @@ public class LoadController {
 	 */
 	public void readJSON(String path) throws IOException {
 		JSONParser parser = new JSONParser();
+		MODEL.setCgIdx(new HashMap<>());
+		MODEL.setCvsObjIdx(new HashMap<>());
 		MODEL.setCategories(new ArrayList<>());
 		MODEL.setObjectsOnCanvas(new ArrayList<>());
 
+
 		ArrayList<String> obj = new ArrayList<>();
 		ArrayList<String> ele = new ArrayList<>();
 		ArrayList<String> edge = new ArrayList<>();
@@ -101,6 +105,7 @@ public class LoadController {
 			} else if (str.contains("CVSO")) {
 				readCanvasObject((JSONArray) json.get(str));
 			} else if (str.contains("CGE") || str.contains("CVSE")) {
+				System.out.println(str.toString());
 				readElement((JSONArray) json.get(str));
 			} else if (str.contains("EDGE")) {
 				readEdge((JSONArray) json.get(str));

+ 32 - 22
src/ui/controller/MultiPurposeController.java

@@ -38,10 +38,10 @@ public class MultiPurposeController {
 		// return null;
 		Integer idx;
 
-		if ((idx = MODEL.getCgIdx().get(category)) != null)
-			return MODEL.getCategories().get(idx);
-		else
+		if ((idx = MODEL.getCgIdx().get(category)) == null || MODEL.getCgIdx().size() < 1 )
 			return null;
+		else
+			return MODEL.getCategories().get(idx);
 	}
 
 	/**
@@ -59,10 +59,10 @@ public class MultiPurposeController {
 		// return null;
 		Integer idx;
 
-		if ((idx = category.getObjIdx().get(object)) != null)
-			return category.getObjects().get(idx);
-		else
+		if ((idx = category.getObjIdx().get(object)) == null || category.getObjIdx().size() < 1)
 			return null;
+		else
+			return category.getObjects().get(idx);
 	}
 
 	/**
@@ -80,10 +80,10 @@ public class MultiPurposeController {
 		// return null;
 		Integer idx;
 
-		if ((idx = MODEL.getCvsObjIdx().get(ID)) != null)
-			return MODEL.getObjectsOnCanvas().get(idx);
-		else
+		if ((idx = MODEL.getCvsObjIdx().get(ID)) == null || MODEL.getCvsObjIdx().size() < 1)
 			return null;
+		else
+			return MODEL.getObjectsOnCanvas().get(idx);
 	}
 
 	/**
@@ -95,13 +95,12 @@ public class MultiPurposeController {
 	 */
 	public HolonElement searchHolonElement(HolonObject object, String element) {
 
-		if (object.getElements() != null) {
-			for (HolonElement ele : object.getElements()) {
-				if (ele.getEleName().equals(element))
-					return ele;
-			}
-		}
-		return null;
+		Integer idx;
+
+		if ((idx = object.getEleIdx().get(element)) == null || object.getEleIdx().size() < 1)
+			return null;
+		else
+			return object.getElements().get(idx);
 	}
 
 	/**
@@ -115,11 +114,16 @@ public class MultiPurposeController {
 		for (Entry<T, Integer> i : map.entrySet()) {
 			if (i.getValue() > map.get(key))
 				i.setValue(i.getValue() - 1);
-
 		}
 
 	}
-	
+
+	/**
+	 * Copies all Object inside of an Arraylist
+	 * 
+	 * @param arr
+	 * @return
+	 */
 	public static <T> ArrayList<T> copyArrayList(ArrayList<T> arr) {
 		ArrayList<T> newArr = new ArrayList<>();
 		for (T t : arr) {
@@ -127,12 +131,18 @@ public class MultiPurposeController {
 		}
 		return newArr;
 	}
-	
-	public static <T,Integer> HashMap<T, Integer> copyHashMap(HashMap<T, Integer> map) {
-		
+
+	/**
+	 * Copies a HashMap into a new One
+	 * 
+	 * @param map
+	 * @return
+	 */
+	public static <T, Integer> HashMap<T, Integer> copyHashMap(HashMap<T, Integer> map) {
+
 		HashMap<T, Integer> newMap = new HashMap<>();
 		for (Entry<T, Integer> i : map.entrySet()) {
-			newMap.put( i.getKey(), i.getValue());
+			newMap.put(i.getKey(), i.getValue());
 		}
 		return newMap;
 	}

+ 1 - 0
src/ui/model/Model.java

@@ -72,6 +72,7 @@ public class Model {
 		setCategoryListeners(new LinkedList<CategoryListener>());
 		setObjectListeners(new LinkedList<ObjectListener>());
 
+
 	}
 
 	/**