Browse Source

initial try for new Store Controller

Teh-Hai Julian Zheng 7 years ago
parent
commit
ac92b848c2

+ 12 - 11
.classpath

@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" path="res"/>
-	<classpathentry excluding="src/|res/" kind="src" path=""/>
-	<classpathentry kind="lib" path="jars/json-simple-1.1.1.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
-	<classpathentry kind="lib" path="jars/CpsAlgorithm.jar"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="res"/>
+	<classpathentry excluding="src/|res/" kind="src" path=""/>
+	<classpathentry kind="lib" path="jars/json-simple-1.1.1.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry kind="lib" path="jars/CpsAlgorithm.jar"/>
+	<classpathentry kind="lib" path="jars/gson-2.8.0.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

BIN
jars/gson-2.8.0.jar


+ 29 - 0
src/Serializer/PositionDeserializer.java

@@ -0,0 +1,29 @@
+package Serializer;
+
+import java.lang.reflect.Type;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import classes.Position;
+
+public class PositionDeserializer implements JsonDeserializer<Position> {
+
+	@Override
+	public Position deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2) {
+		// TODO Auto-generated method stub
+
+		try {
+			String arg = arg0.getAsString();
+			int mid = arg.indexOf(':');
+			int x = Integer.parseInt(arg.substring(0, mid));
+			int y = Integer.parseInt(arg.substring(mid + 1, arg.length() - 1));
+			return new Position(x, y);
+			
+		} catch (Exception e) {
+			// TODO: handle exception
+		}
+		return new Position(-1,-1);
+	}
+
+}

+ 20 - 0
src/Serializer/PositionSerializer.java

@@ -0,0 +1,20 @@
+package Serializer;
+
+import java.lang.reflect.Type;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+
+import classes.Position;
+
+public class PositionSerializer implements JsonSerializer<Position> {
+
+	@Override
+	public JsonElement serialize(Position arg0, Type arg1, JsonSerializationContext arg2) {
+		// TODO Auto-generated method stub
+		return new JsonPrimitive(arg0.x + ":" + arg0.y);
+	}
+
+}

+ 8 - 6
src/classes/AbstractCpsObject.java

@@ -3,6 +3,8 @@ package classes;
 import java.awt.Color;
 import java.util.ArrayList;
 
+import com.google.gson.annotations.Expose;
+
 /**
  * The abstract class "CpsObject" represents any possible object in the system
  * (except Edges). The representation of any object contains following
@@ -13,22 +15,22 @@ import java.util.ArrayList;
  */
 public abstract class AbstractCpsObject {
 	/* Type of the Object. */
-	String objName;
+	@Expose String objName;
 	/* Name given by the user. */
-	String name;
+	@Expose String name;
 	/* ID of the Obj. */
-	int id;
+	@Expose int id;
 	/* Path of the image for the Obj. */
-	String image;
+	@Expose String image;
 	/* Array of neighbors */
 	ArrayList<CpsEdge> connections;
 	/* Position with a X and Y value */
-	Position position;
+	@Expose Position position;
 	/*
 	 * Energy input and output of each object in the grid Where the Object is
 	 * Stored
 	 */
-	String sav;
+	@Expose String sav;
 	/* borderColor the user sets */
 	Color borderColor = Color.WHITE;
 	/* a Tag that can be used */

+ 24 - 11
src/ui/controller/StoreController.java

@@ -8,6 +8,10 @@ import java.util.ListIterator;
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import Serializer.PositionSerializer;
 import classes.Category;
 import classes.CpsEdge;
 import classes.AbstractCpsObject;
@@ -16,6 +20,7 @@ import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.HolonTransformer;
 import classes.IdCounter;
+import classes.Position;
 import ui.model.Model;
 
 /**
@@ -50,19 +55,27 @@ public class StoreController {
 	 */
 	public void writeSaveFile(String path) throws IOException {
 
+		Gson gson = new GsonBuilder().serializeNulls().excludeFieldsWithoutExposeAnnotation().registerTypeAdapter(Position.class, new PositionSerializer()).create();
+		
 		JSONObject json = new JSONObject();
+		int i = 1;
 
-		json.put("MODE", "ALL");
-		json.put("ID", IdCounter.getCounter());
-		json.put("SIZEX", model.getCanvasX());
-		json.put("SIZEY", model.getCanvasY());
-		writeCategory(json);
-		writeCategoryObjects(json);
-		writeCanvasObjects(json);
-		writeCategoryElements(json);
-		writeCanvasElements(json);
-		writeEdges(json);
-		writeElementGraph(json);
+//		json.put("MODE", "ALL");
+//		json.put("ID", IdCounter.getCounter());
+//		json.put("SIZEX", model.getCanvasX());
+//		json.put("SIZEY", model.getCanvasY());
+//		writeCategory(json);
+//		writeCategoryObjects(json);
+//		writeCanvasObjects(json);
+//		writeCategoryElements(json);
+//		writeCanvasElements(json);
+//		writeEdges(json);
+//		writeElementGraph(json);
+		
+		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+			gson.toJson(cps);
+			json.put("CVS" + i++, gson.toJson(cps));
+		}
 
 		FileWriter writer = new FileWriter(path);
 		writer.write(json.toJSONString());

+ 29 - 0
src/ui/controller/TestNewStoreController.java

@@ -1,5 +1,34 @@
 package ui.controller;
 
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import ui.model.Model;
+import classes.HolonObject;
+
+
 public class TestNewStoreController {
 
+	private Model model;
+	
+	/**
+	 * Constructor
+	 * 
+	 * @param model
+	 */
+	public TestNewStoreController(Model model) {
+		this.model = model;
+		
+	}
+	
+	public void writeSaveFile(String path) {
+		Gson gson = new Gson();
+		JSONObject json = new JSONObject();
+//		
+		
+	}
+
 }