Procházet zdrojové kódy

stat graph almost done

Teh-Hai Julian Zheng před 7 roky
rodič
revize
d819d28ac7

+ 10 - 25
src/ui/controller/ClipboardController.java

@@ -50,7 +50,6 @@ public class ClipboardController {
 	private CanvasController cvsC;
 	private ObjectController objC;
 	private NodeController uppC;
-	private Gson gson;
 	private JsonParser parser;
 	private Clipboard clipboard;
 	private HashMap<Integer, Integer> objIDMap;
@@ -67,8 +66,7 @@ public class ClipboardController {
 		this.objC = obj;
 		this.uppC = uppC;
 		this.clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
-		initGson();
-
+		parser = new JsonParser();
 	}
 
 	/**
@@ -85,7 +83,7 @@ public class ClipboardController {
 
 		file.add("SAV", new JsonPrimitive((upperNode == null ? "CVS" : "" + upperNode.getId())));
 		Position pos = uppC.calculatePos(model.getSelectedCpsObjects());
-		file.add("CENTER", gson.toJsonTree(pos, Position.class));
+		file.add("CENTER", model.getGson().toJsonTree(pos, Position.class));
 
 		for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
 			queue.add(abs);
@@ -96,7 +94,7 @@ public class ClipboardController {
 			u = queue.pop();
 
 			String key = "CVSOBJECT" + store.getNumerator(NUMTYPE.OBJECT);
-			file.add(key, gson.toJsonTree(u, AbstractCpsObject.class));
+			file.add(key, model.getGson().toJsonTree(u, AbstractCpsObject.class));
 			edgeToJson(EDGETYPE.CONNECTION, file, u.getId(), u.getConnections());
 
 			if (u instanceof HolonObject)
@@ -119,7 +117,7 @@ public class ClipboardController {
 		else
 			edgeToJson(EDGETYPE.LAYER, file, upperNode.getId(), upperNode.getNodeEdges());
 
-		StringSelection selection = new StringSelection(gson.toJson(file));
+		StringSelection selection = new StringSelection(model.getGson().toJson(file));
 		clipboard.setContents(selection, selection);
 
 	}
@@ -162,7 +160,7 @@ public class ClipboardController {
 		eleIDMap = new HashMap<>();
 		sav = json.get("SAV").getAsString();
 
-		Position old = gson.getAdapter(Position.class).fromJsonTree(json.get("CENTER"));
+		Position old = model.getGson().getAdapter(Position.class).fromJsonTree(json.get("CENTER"));
 		point = new Point(old.x - p.x, old.y - p.y);
 
 		forwardObjects(keys, json, objDispatch, eleDispatch, upperNode);
@@ -227,7 +225,7 @@ public class ClipboardController {
 	private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
 			CpsUpperNode upperNode) {
 		// TODO Auto-generated method stub
-		AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+		AbstractCpsObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
 		load.initObjects(temp);
 		objIDMapper(temp);
 		updatePosition(temp, upperNode);
@@ -254,7 +252,7 @@ public class ClipboardController {
 		// TODO Auto-generated method stub
 		JsonObject object = jsonElement.getAsJsonObject();
 
-		HolonElement temp = gson.fromJson(object.get("properties"), HolonElement.class);
+		HolonElement temp = model.getGson().fromJson(object.get("properties"), HolonElement.class);
 		load.initElements(temp);
 		eleIDMapper(temp);
 		// id which Object it was stored before
@@ -313,7 +311,7 @@ public class ClipboardController {
 			CpsUpperNode upperNode) {
 		// TODO Auto-generated method stub
 		JsonObject object = jsonElement.getAsJsonObject();
-		CpsEdge temp = gson.fromJson(object.get("properties"), CpsEdge.class);
+		CpsEdge temp = model.getGson().fromJson(object.get("properties"), CpsEdge.class);
 		load.initCpsEdge(temp);
 		// look for A and B inside the Table
 		temp.setA(objDispatch.get(objIDMap.get(object.get("A").getAsInt())));
@@ -371,7 +369,7 @@ public class ClipboardController {
 			if (model.getClipboradObjects().contains(edge.getA())
 					&& model.getClipboradObjects().contains(edge.getB())) {
 				// add properties and only the ids from a and b
-				temp.add("properties", gson.toJsonTree(edge));
+				temp.add("properties", model.getGson().toJsonTree(edge));
 				temp.add("A", new JsonPrimitive(edge.getA().getId()));
 				temp.add("B", new JsonPrimitive(edge.getB().getId()));
 
@@ -400,7 +398,7 @@ public class ClipboardController {
 						&& !type.equals(EDGETYPE.CONNECTION))
 					b = true;
 				temp.add("connection", new JsonPrimitive(b));
-				file.add(k, gson.toJsonTree(temp));
+				file.add(k, model.getGson().toJsonTree(temp));
 				temp = new JsonObject();
 			}
 		}
@@ -434,19 +432,6 @@ public class ClipboardController {
 
 	}
 
-	private void initGson() {
-		// TODO Auto-generated method stub
-		GsonBuilder builder = new GsonBuilder();
-		builder.excludeFieldsWithoutExposeAnnotation().serializeNulls().setPrettyPrinting();
-		builder.registerTypeAdapter(AbstractCpsObject.class, new AbstractCpsObjectAdapter());
-		builder.registerTypeAdapter(Position.class, new PositionAdapter());
-		builder.registerTypeAdapter(Color.class, new ColorAdapter());
-		// use the builder and make a instance of the Gson
-		this.gson = builder.create();
-		this.parser = new JsonParser();
-
-	}
-
 	private void objIDMapper(AbstractCpsObject temp) {
 		// TODO Auto-generated method stub
 		int id = temp.getId();

+ 4 - 0
src/ui/controller/Control.java

@@ -152,6 +152,10 @@ public class Control {
 	public AbstractCpsObject searchByIDUpperNode(int id, CpsUpperNode upperNode) {
 		return multiPurposeController.searchByIDUpperNode(id, upperNode);
 	}
+	
+	public AbstractCpsObject searchTracked(int id) {
+		return multiPurposeController.searchByID(id);
+	}
 
 	/**
 	 * Search for Object in a Category.

+ 7 - 32
src/ui/controller/LoadController.java

@@ -1,6 +1,5 @@
 package ui.controller;
 
-import java.awt.Color;
 import java.awt.Point;
 import java.io.File;
 import java.io.FileInputStream;
@@ -12,29 +11,20 @@ import java.io.OutputStream;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.zip.ZipException;
-import java.util.zip.ZipInputStream;
-
 import org.apache.commons.compress.archivers.ArchiveEntry;
 import org.apache.commons.compress.archivers.ArchiveException;
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 import org.apache.commons.compress.archivers.ArchiveStreamFactory;
-import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.utils.IOUtils;
 
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
-import TypeAdapter.AbstractCpsObjectAdapter;
-import TypeAdapter.ColorAdapter;
-import TypeAdapter.PositionAdapter;
 import classes.Category;
 import classes.CpsEdge;
 import classes.CpsUpperNode;
@@ -44,7 +34,6 @@ import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.IdCounter;
 import classes.IdCounterElem;
-import classes.Position;
 import ui.model.Model;
 
 /**
@@ -74,7 +63,6 @@ public class LoadController {
 	private ObjectController objC;
 	private NodeController uppC;
 	private MultiPurposeController mpC;
-	private Gson gson;
 	private JsonParser parser;
 
 	/**
@@ -99,7 +87,7 @@ public class LoadController {
 		this.objC = obj;
 		this.uppC = uppC;
 		this.mpC = mp;
-		initGson();
+		this.parser = new JsonParser();
 	}
 
 	/**
@@ -283,7 +271,7 @@ public class LoadController {
 	private void loadCategoryObject(JsonElement jsonElement) {
 		// TODO Auto-generated method stub
 
-		AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+		AbstractCpsObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
 		temp.setImage(checkOS(temp.getImage()));
 		initObjects(temp);
 		if (mpC.searchCatObj(mpC.searchCat(temp.getSav()), temp.getObjName()) != null)
@@ -299,7 +287,7 @@ public class LoadController {
 	 */
 	private void loadCategoryElements(JsonElement jsonElement) {
 		// TODO Auto-generated method stub
-		HolonElement temp = gson.fromJson(jsonElement.getAsJsonObject().get("properties").getAsJsonObject(),
+		HolonElement temp = model.getGson().fromJson(jsonElement.getAsJsonObject().get("properties").getAsJsonObject(),
 				HolonElement.class);
 		initElements(temp);
 		objC.addElementIntoCategoryObject(temp.getSav(), temp.getObj(), temp);
@@ -313,7 +301,7 @@ public class LoadController {
 	 */
 	private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
 		// TODO Auto-generated method stub
-		AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+		AbstractCpsObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
 		initObjects(temp);
 		temp.setImage(checkOS(temp.getImage()));
 		// if its stored before on the canvas just put it there
@@ -343,7 +331,7 @@ public class LoadController {
 
 		JsonObject object = jsonElement.getAsJsonObject();
 
-		HolonElement temp = gson.fromJson(object.get("properties"), HolonElement.class);
+		HolonElement temp = model.getGson().fromJson(object.get("properties"), HolonElement.class);
 		initElements(temp);
 		// id which Object it was stored before
 		int stored = object.get("ID").getAsInt();
@@ -365,7 +353,7 @@ public class LoadController {
 	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);
+		CpsEdge temp = model.getGson().fromJson(object.get("properties"), CpsEdge.class);
 		initCpsEdge(temp);
 		// look for A and B inside the Table
 		temp.setA(objDispatch.get(object.get("A").getAsInt()));
@@ -475,20 +463,7 @@ public class LoadController {
 
 	}
 
-	/**
-	 * Initialize the Gson with wanted parameters
-	 */
-	private void initGson() {
-		// TODO Auto-generated method stub
-		GsonBuilder builder = new GsonBuilder();
-		builder.serializeNulls();
-		builder.registerTypeAdapter(AbstractCpsObject.class, new AbstractCpsObjectAdapter());
-		builder.registerTypeAdapter(Position.class, new PositionAdapter());
-		builder.registerTypeAdapter(Color.class, new ColorAdapter());
-		// use the builder and make a instance of the Gson
-		this.gson = builder.create();
-		this.parser = new JsonParser();
-	}
+
 
 	private File readArchive(String path, File src) throws IOException, ArchiveException {
 		File tmp = Files.createTempDirectory("tmpHolon").toFile();

+ 16 - 1
src/ui/controller/MultiPurposeController.java

@@ -132,6 +132,20 @@ public class MultiPurposeController {
 			return upperNode.getNodes().get(idx);
 	}
 
+	/**
+	 * 
+	 * @param id
+	 * @return
+	 */
+	public AbstractCpsObject searchTracked(int id) {
+
+		for (AbstractCpsObject cps : model.getTrackingObj()) {
+			if (cps.getId() == id)
+				return cps;
+		}
+		return null;
+	}
+
 	/**
 	 * Search Edge between 2 Objects.
 	 * 
@@ -195,6 +209,7 @@ public class MultiPurposeController {
 
 	/**
 	 * Returns the highest Id
+	 * 
 	 * @param map
 	 * @return
 	 */
@@ -205,7 +220,7 @@ public class MultiPurposeController {
 			if (map.get(i) > max)
 				max = map.get(i);
 		}
-		
+
 		return max;
 	}
 

+ 14 - 30
src/ui/controller/SaveController.java

@@ -75,7 +75,6 @@ public class SaveController {
 	}
 
 	private Model model;
-	private Gson gson;
 	private int nCat, nObj, nEle, nEdge, nConn, nNodeEdge, nOldEdge, nUnitGraph, nStatsGraph;
 
 	/**
@@ -86,7 +85,6 @@ public class SaveController {
 	 */
 	public SaveController(Model model) {
 		this.model = model;
-		initGson();
 	}
 
 	/**
@@ -119,7 +117,7 @@ public class SaveController {
 		storeData(stream);
 
 		FileWriter writer = new FileWriter(holonFile);
-		writer.write(gson.toJson(file));
+		writer.write(model.getGson().toJson(file));
 		writer.flush();
 		writer.close();
 
@@ -146,7 +144,7 @@ public class SaveController {
 		storeCanvas(file);
 
 		FileWriter writer = new FileWriter(path);
-		writer.write(gson.toJson(file));
+		writer.write(model.getGson().toJson(file));
 
 		writer.flush();
 		writer.close();
@@ -166,7 +164,7 @@ public class SaveController {
 		storeCategory(file);
 
 		FileWriter writer = new FileWriter(path);
-		writer.write(gson.toJson(file));
+		writer.write(model.getGson().toJson(file));
 
 		writer.flush();
 		writer.close();
@@ -219,7 +217,7 @@ public class SaveController {
 			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));
+				file.add("CGOBJECT" + getNumerator(NUMTYPE.OBJECT), model.getGson().toJsonTree(obj, AbstractCpsObject.class));
 				// if its a holonobject add elements too
 				if (obj instanceof HolonObject)
 					elementsToJson(TYPE.CATEGORY, file, obj);
@@ -247,7 +245,7 @@ public class SaveController {
 			u = queue.pop();
 			// add currentnode into jsontree
 			String key = "CVSOBJECT" + getNumerator(NUMTYPE.OBJECT);
-			file.add(key, gson.toJsonTree(u, AbstractCpsObject.class));
+			file.add(key, model.getGson().toJsonTree(u, AbstractCpsObject.class));
 			// and its connections too
 			edgeToJson(EDGETYPE.CONNECTION, file, u.getId(), u.getConnections());
 			// if holonobject elements too
@@ -306,7 +304,7 @@ public class SaveController {
 		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("properties", model.getGson().toJsonTree(ele));
 			temp.add("ID", new JsonPrimitive(obj.getId()));
 			// switch for deciding the key
 			switch (type) {
@@ -319,7 +317,7 @@ public class SaveController {
 			default:
 				break;
 			}
-			file.add(key, gson.toJsonTree(temp));
+			file.add(key, model.getGson().toJsonTree(temp));
 			// if there are gps add them into
 			if (ele.getGraphPoints().size() != 0)
 				unitgraphToJson(GRAPHTYPE.ELEMENT, file, ele.getId(), ele.getGraphPoints());
@@ -355,7 +353,7 @@ public class SaveController {
 		// add id of element so it can be found again
 		temp.add("ID", new JsonPrimitive(id));
 
-		file.add(key, gson.toJsonTree(temp));
+		file.add(key, model.getGson().toJsonTree(temp));
 	}
 
 	/**
@@ -374,7 +372,7 @@ public class SaveController {
 
 		for (CpsEdge edge : arr) {
 			// add properties and only the ids from a and b
-			temp.add("properties", gson.toJsonTree(edge));
+			temp.add("properties", model.getGson().toJsonTree(edge));
 			temp.add("A", new JsonPrimitive(edge.getA().getId()));
 			temp.add("B", new JsonPrimitive(edge.getB().getId()));
 
@@ -402,7 +400,7 @@ public class SaveController {
 					&& !type.equals(EDGETYPE.CONNECTION))
 				b = true;
 			temp.add("connection", new JsonPrimitive(b));
-			file.add(k, gson.toJsonTree(temp));
+			file.add(k, model.getGson().toJsonTree(temp));
 			temp = new JsonObject();
 		}
 
@@ -417,7 +415,7 @@ public class SaveController {
 			temp.add("" + i, new JsonPrimitive(model.getTrackingObj().get(i).getId()));
 		}
 
-		file.add(key, gson.toJsonTree(temp));
+		file.add(key, model.getGson().toJsonTree(temp));
 	}
 
 	private void statisticgraphToJson(JsonObject file) {
@@ -432,14 +430,14 @@ public class SaveController {
 			for (int i = 0; i < model.getGraphTable().get(k).getStatGraph().getDataSets().size(); i++) {
 				TrackedDataSet set = model.getGraphTable().get(k).getStatGraph().getDataSets().get(i);
 				dataSet.add("ID", new JsonPrimitive(set.getCpsObject().getId()));
-				dataSet.add("COLOR", gson.toJsonTree(set.getColor(), Color.class));
+				dataSet.add("COLOR", model.getGson().toJsonTree(set.getColor(), Color.class));
 				dataSet.add("PROPERTY", new JsonPrimitive(set.getProperty()));
-				temp.add("" + i, gson.toJsonTree(dataSet));
+				temp.add("" + i, model.getGson().toJsonTree(dataSet));
 				dataSet = new JsonObject();
 			}
 			temp.add("KEY", new JsonPrimitive(k));
 
-			file.add("STATSGRAPH" + getNumerator(NUMTYPE.STATSGRAPH), gson.toJsonTree(temp));
+			file.add("STATSGRAPH" + getNumerator(NUMTYPE.STATSGRAPH), model.getGson().toJsonTree(temp));
 			temp = new JsonObject();
 		}
 
@@ -515,20 +513,6 @@ public class SaveController {
 		return ret;
 	}
 
-	/**
-	 * Initialize the Gson with wanted parameters
-	 */
-	private void initGson() {
-		// TODO Auto-generated method stub
-		GsonBuilder builder = new GsonBuilder();
-		builder.excludeFieldsWithoutExposeAnnotation().serializeNulls().setPrettyPrinting();
-		builder.registerTypeAdapter(AbstractCpsObject.class, new AbstractCpsObjectAdapter());
-		builder.registerTypeAdapter(Position.class, new PositionAdapter());
-		builder.registerTypeAdapter(Color.class, new ColorAdapter());
-		// use the builder and make a instance of the Gson
-		this.gson = builder.create();
-	}
-
 	/**
 	 * Just initialize the Numerators for the Json Keys. Maybe bad Style..
 	 */

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

@@ -9,14 +9,21 @@ import java.util.List;
 
 import javax.swing.JTable;
 
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 
+import TypeAdapter.AbstractCpsObjectAdapter;
+import TypeAdapter.ColorAdapter;
+import TypeAdapter.PositionAdapter;
 import classes.AbstractCpsObject;
 import classes.Category;
 import classes.CpsEdge;
 import classes.CpsUpperNode;
 import classes.HolonElement;
 import classes.HolonSwitch;
+import classes.Position;
 import interfaces.CategoryListener;
 import interfaces.GraphListener;
 import interfaces.ObjectListener;
@@ -122,6 +129,8 @@ public class Model {
 	// Statistic Graph Data
 	private Hashtable<String, StatisticGraphPanel> statisticGraphTable = new Hashtable<String, StatisticGraphPanel>();
 	private ArrayList<JsonObject> statisticData = new ArrayList<>();
+	
+	private Gson gson;
 
 	/**
 	 * Constructor for the model. It initializes the categories and
@@ -144,6 +153,7 @@ public class Model {
 		setPropertyTable(new DefaulTable(1000, colNames.length));
 		getPropertyTable().setColumnIdentifiers(colNames);
 		setTableHolonElement(new JTable());
+		initGson();
 	}
 
 	/**
@@ -938,4 +948,34 @@ public class Model {
 		this.showConsoleLog = showConsoleLog;
 
 	}
+	
+	/**
+	 * Initialize the Gson with wanted parameters
+	 */
+	private void initGson() {
+		// TODO Auto-generated method stub
+		GsonBuilder builder = new GsonBuilder();
+		builder.serializeNulls();
+		builder.excludeFieldsWithoutExposeAnnotation();
+		builder.registerTypeAdapter(AbstractCpsObject.class, new AbstractCpsObjectAdapter());
+		builder.registerTypeAdapter(Position.class, new PositionAdapter());
+		builder.registerTypeAdapter(Color.class, new ColorAdapter());
+		// use the builder and make a instance of the Gson
+		this.setGson(builder.create());
+
+	}
+
+	/**
+	 * @return the gson
+	 */
+	public Gson getGson() {
+		return gson;
+	}
+
+	/**
+	 * @param gson the gson to set
+	 */
+	public void setGson(Gson gson) {
+		this.gson = gson;
+	}
 }

+ 23 - 8
src/ui/view/GUI.java

@@ -82,6 +82,7 @@ import classes.HolonSwitch;
 import classes.HolonTransformer;
 import classes.IdCounter;
 import classes.IdCounterElem;
+import classes.TrackedDataSet;
 import interfaces.CategoryListener;
 import ui.controller.Control;
 import ui.controller.UpdateController;
@@ -329,7 +330,8 @@ public class GUI<E> implements CategoryListener {
 				if (JOptionPane.showConfirmDialog(frmCyberPhysical, Languages.getLanguage()[88],
 						"Cyber Physical Systems Model", JOptionPane.YES_NO_OPTION,
 						JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
-					controller.deleteDirectory(new File(System.getProperty("user.home") + "/.config/HolonGUI/Autosave"));
+					controller
+							.deleteDirectory(new File(System.getProperty("user.home") + "/.config/HolonGUI/Autosave"));
 					System.exit(0);
 				}
 			}
@@ -714,7 +716,7 @@ public class GUI<E> implements CategoryListener {
 				controller.setShowConsoleLog(consoleLogCheckBox.isSelected());
 			}
 		});
-		
+
 		menuBar.add(mnNewMenuView);
 
 		mnNewMenuView.add(mntmCanvasSize);
@@ -1722,6 +1724,9 @@ public class GUI<E> implements CategoryListener {
 						canvas.repaint();
 						unitGraph.update(model.getObjectsOnCanvas());
 						tree.repaint();
+						for (JsonObject json : model.getStatisticData()) {
+							readStatistics(json);
+						}
 					} catch (IOException | ArchiveException e) {
 						// TODO Auto-generated catch block
 						e.printStackTrace();
@@ -2307,15 +2312,25 @@ public class GUI<E> implements CategoryListener {
 
 		List<String> keys = json.entrySet().stream().map(i -> i.getKey())
 				.collect(Collectors.toCollection(ArrayList::new));
-		String key = null;
-		StatisticGraphPanel temp = new StatisticGraphPanel(model, controller, json.get("KEY").getAsString(),
+
+		// Saved Values
+		JsonObject obj = null;
+		AbstractCpsObject cps = null;
+		int prop = 0;
+		Color color = null;
+
+		StatisticGraphPanel stat = new StatisticGraphPanel(model, controller, json.get("KEY").getAsString(),
 				model.getGraphTable());
 
 		for (String k : keys) {
-			if(k != "KEY") {
-				
-			}
-				
+			if (!k.equals("KEY")) {
+				obj = json.get(k).getAsJsonObject();
+				cps = controller.searchTracked(obj.get("ID").getAsInt());
+				prop = obj.get("PROPERTY").getAsInt();
+				color = model.getGson().fromJson(obj.get("COLOR"), Color.class);
+				stat.getStatGraph().addObject(new TrackedDataSet(cps, prop, color));
+			}
+			model.getGraphTable().put(json.get("KEY").getAsString(), stat);
 		}
 	}
 }

+ 0 - 4
src/ui/view/MyCanvas.java

@@ -65,8 +65,6 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 	private float scalediv20;
 	private Position unPos;
 	private ArrayList<Position> savePos;
-	private UnitGraph unitGraph;
-
 	private UpdateController updCon;
 
 	ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
@@ -125,8 +123,6 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		toolTip = false;
 		this.controller = control;
 		this.model = mod;
-		this.unitGraph = unitGraph;
-
 		scalediv20 = model.getScale() / 20;
 
 		showedInformation[0] = true;