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

+ 9 - 8
src/ui/controller/LoadController.java

@@ -219,6 +219,8 @@ public class LoadController {
 				loadUnitGraph(GRAPHTYPE.ELEMENT, json.get(key), null, eleDispatch);
 			if (key.contains("TRACKED"))
 				loadTracked(json.get(key), objDispatch);
+			if(key.contains("STATSGRAPH"))
+				loadStatisticGraph(json.get(key), objDispatch);
 		}
 
 	}
@@ -237,6 +239,7 @@ public class LoadController {
 			model.setObjectsOnCanvas(new ArrayList<AbstractCpsObject>());
 			model.setEdgesOnCanvas(new ArrayList<CpsEdge>());
 			model.setTrackingObj(new ArrayList<>());
+			model.setStatisticData(new ArrayList<>());
 			model.setCanvasX(json.get("CANVAS_SIZE_X").getAsInt());
 			model.setCanvasX(json.get("CANVAS_SIZE_Y").getAsInt());
 			IdCounter.setCounter(json.get("IDCOUNTER").getAsInt());
@@ -289,14 +292,6 @@ public class LoadController {
 
 	}
 
-	private String refreshPath(String image) {
-		// TODO Auto-generated method stub
-		if (!image.contains("/HolonGUI/"))
-			return image;
-		return (System.getProperty("user.home") + image.substring(image.indexOf("/HolonGUI/"), image.length()))
-				.replace("\\", "/");
-	}
-
 	/**
 	 * Load a given Element in Category by Deserialization
 	 * 
@@ -458,6 +453,12 @@ public class LoadController {
 		}
 	}
 
+	private void loadStatisticGraph(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
+		// TODO Auto-generated method stub
+		JsonObject object = jsonElement.getAsJsonObject();
+		model.getStatisticData().add(object);
+	}
+
 	private void loadTracked(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
 		// TODO Auto-generated method stub
 		JsonObject object = jsonElement.getAsJsonObject();

+ 2 - 2
src/ui/controller/SaveController.java

@@ -423,12 +423,11 @@ public class SaveController {
 	private void statisticgraphToJson(JsonObject file) {
 		// TODO Auto-generated method stub
 		JsonObject temp = new JsonObject();
-		String key = null;
+		
 		List<String> keys = model.getGraphTable().keySet().parallelStream()
 				.collect(Collectors.toCollection(ArrayList::new));
 
 		for (String k : keys) {
-			temp.add("KEY", new JsonPrimitive(k));
 			JsonObject dataSet = new JsonObject();
 			for (int i = 0; i < model.getGraphTable().get(k).getStatGraph().getDataSets().size(); i++) {
 				TrackedDataSet set = model.getGraphTable().get(k).getStatGraph().getDataSets().get(i);
@@ -438,6 +437,7 @@ public class SaveController {
 				temp.add("" + i, gson.toJsonTree(dataSet));
 				dataSet = new JsonObject();
 			}
+			temp.add("KEY", new JsonPrimitive(k));
 
 			file.add("STATSGRAPH" + getNumerator(NUMTYPE.STATSGRAPH), gson.toJsonTree(temp));
 			temp = new JsonObject();

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

@@ -9,6 +9,8 @@ import java.util.List;
 
 import javax.swing.JTable;
 
+import com.google.gson.JsonObject;
+
 import classes.AbstractCpsObject;
 import classes.Category;
 import classes.CpsEdge;
@@ -31,6 +33,8 @@ import ui.view.StatisticGraphPanel;
  *
  */
 public class Model {
+	
+
 
 	// Canvas Attributes
 	private String imgPath = "";
@@ -115,7 +119,11 @@ public class Model {
 	private Object algorithm = null;
 	private int selectedHolonBody;
 
+
+	
+	// Statistic Graph Data
 	private Hashtable<String, StatisticGraphPanel> statisticGraphTable = new Hashtable<String, StatisticGraphPanel>();
+	private ArrayList<JsonObject> statisticData = new ArrayList<>();
 	/**
 	 * Constructor for the model. It initializes the categories and
 	 * objectsOnCanvas by default values. Listeners are also initialized by
@@ -894,5 +902,19 @@ public class Model {
 	public void setIsSimRunning(boolean isRunning) {
 		isSimRunning = isRunning;
 	}
+
+	/**
+	 * @return the statisticData
+	 */
+	public ArrayList<JsonObject> getStatisticData() {
+		return statisticData;
+	}
+
+	/**
+	 * @param statisticData the statisticData to set
+	 */
+	public void setStatisticData(ArrayList<JsonObject> statisticData) {
+		this.statisticData = statisticData;
+	}
 }
 

+ 19 - 0
src/ui/view/GUI.java

@@ -22,8 +22,10 @@ import java.beans.PropertyChangeListener;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
+import java.util.stream.Collectors;
 
 import javax.swing.AbstractAction;
 import javax.swing.ActionMap;
@@ -67,6 +69,7 @@ import javax.swing.tree.TreeCellRenderer;
 
 import org.apache.commons.compress.archivers.ArchiveException;
 
+import com.google.gson.JsonObject;
 import com.google.gson.JsonParseException;
 
 import classes.AbstractCpsObject;
@@ -2289,4 +2292,20 @@ public class GUI<E> implements CategoryListener {
 			temp = null;
 		}
 	}
+
+	private void readStatistics(JsonObject json) {
+
+		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(),
+				model.getGraphTable());
+
+		for (String k : keys) {
+			if(k != "KEY") {
+				
+			}
+				
+		}
+	}
 }

+ 6 - 0
src/ui/view/StatisticGraphPanel.java

@@ -12,7 +12,10 @@ import java.awt.event.MouseEvent;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Hashtable;
+import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.imageio.ImageIO;
 import javax.swing.BorderFactory;
@@ -24,6 +27,8 @@ import javax.swing.JPanel;
 import javax.swing.SwingConstants;
 import javax.swing.border.EmptyBorder;
 
+import com.google.gson.JsonObject;
+
 import classes.TrackedDataSet;
 import ui.controller.Control;
 import ui.model.Model;
@@ -302,5 +307,6 @@ public class StatisticGraphPanel extends JPanel {
 	public void resetGraph(){
 		sGraph.resetGraph();
 	}
+
 	
 }