Browse Source

load store Merge branch 'Ohne_Drag_and_Drop' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons into Ohne_Drag_and_Drop

# Conflicts:
#	src/ui/view/GUI.java
Teh-Hai Julian Zheng 8 years ago
parent
commit
391bd52fd7

+ 1 - 1
src/classes/CpsNode.java

@@ -11,7 +11,7 @@ public class CpsNode extends CpsObject {
 		this.setConnections(new ArrayList<CpsEdge>());
 		this.setImage("/Images/node.png");
 		this.setID(idCounter.nextId());
-		this.setStored("Canvas");
+		this.setSav("Canvas");
 	}
 
 }

+ 5 - 5
src/classes/CpsObject.java

@@ -20,7 +20,7 @@ public abstract class CpsObject implements ComparableObject {
 	Position position;
 	/* Energy input and output of each object in the grid */
 	
-	String stored;
+	String sav;
 	
 	float energyIn;
 	float energyOut;
@@ -125,15 +125,15 @@ public abstract class CpsObject implements ComparableObject {
 	/**
 	 * @return the stored
 	 */
-	public String getStored() {
-		return stored;
+	public String getSav() {
+		return sav;
 	}
 
 	/**
 	 * @param stored the stored to set
 	 */
-	public void setStored(String stored) {
-		this.stored = stored;
+	public void setSav(String sav) {
+		this.sav = sav;
 	}
 
 	/* Getter and Setters for the energy input and output */

+ 25 - 5
src/classes/HolonElement.java

@@ -17,7 +17,9 @@ public class HolonElement {
 	/* +: for Consumers and -: Producers */
 	char sign;
 	
-	String stored;
+	String sav;
+	
+	String obj;
 	/*
 	 * Energy at each point of the graph with 50 predefined points. At the
 	 * beginning, it starts with all values at energy
@@ -34,12 +36,16 @@ public class HolonElement {
 	}
 
 	public HolonElement(HolonElement element) {
+	
+		
 		setEleName(element.getEleName());
 		setAmount(element.getAmount());
 		setEnergy(element.getEnergy());
 		setActive(element.getActive());
 		setSign(element.getEnergy());
 		setEnergyAt(element.getEnergy());
+		setSav("Canvas");
+		setObj(element.getObj());
 	}
 
 	public float[] getEnergyAt() {
@@ -164,15 +170,29 @@ public class HolonElement {
 	/**
 	 * @return the stored
 	 */
-	public String getStored() {
-		return stored;
+	public String getSav() {
+		return sav;
 	}
 
 	/**
 	 * @param stored the stored to set
 	 */
-	public void setStored(String stored) {
-		this.stored = stored;
+	public void setSav(String sav) {
+		this.sav = sav;
+	}
+
+	/**
+	 * @return the obj
+	 */
+	public String getObj() {
+		return obj;
+	}
+
+	/**
+	 * @param obj the obj to set
+	 */
+	public void setObj(String obj) {
+		this.obj = obj;
 	}
 
 }

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

@@ -1,5 +1,7 @@
 package ui.controller;
 
+import java.util.ArrayList;
+
 import Interfaces.CategoryListener;
 import Interfaces.ObjectListener;
 import classes.CpsEdge;
@@ -22,6 +24,8 @@ public class CanvasController {
 	 */
 	public void addObjectIntoCanvas(CpsObject object) {
 		String objName = object.getObjName();
+		object.setSav("Canvas");
+		object.setConnections(new ArrayList<>());
 		MODEL.getObjectsOnCanvas().add(object);
 		notifyObjListeners();
 		System.out.println("Added: " + objName);

+ 7 - 4
src/ui/controller/CategoryController.java

@@ -30,19 +30,19 @@ public class CategoryController {
 
 		HolonObject powerp = new HolonObject("Power Plant");
 		powerp.setImage("/Images/power-plant.png");
-		powerp.setStored("Energy");
+		powerp.setSav("Energy");
 		
 		HolonObject house = new HolonObject("House");
 		house.setImage("/Images/home.png");
-		house.setStored("Building");
+		house.setSav("Building");
 
 		HolonTransformer transformer = new HolonTransformer("Transformer");
 		transformer.setImage("/Images/transformer.png");
-		transformer.setStored("Component");
+		transformer.setSav("Component");
 		
 		HolonSwitch sw = new HolonSwitch("Switch");
 		sw.setImage("/Images/switch-on.png");
-		sw.setStored("Component");
+		sw.setSav("Component");
 
 		addObject(energy, powerp);
 		addObject(building, house);
@@ -133,6 +133,7 @@ public class CategoryController {
 		HolonObject object = new HolonObject(objName);
 		object.setImage(image);
 		object.setElements(elements);
+		object.setSav(cat.getName());
 		addObject(cat, object);
 	}
 
@@ -147,6 +148,7 @@ public class CategoryController {
 	public void addNewHolonTransformer(Category cat, String objName, String image) {
 		HolonTransformer transformer = new HolonTransformer(objName);
 		transformer.setImage(image);
+		transformer.setSav(cat.getName());
 		addObject(cat, transformer);
 	}
 
@@ -161,6 +163,7 @@ public class CategoryController {
 	public void addNewHolonSwitch(Category cat, String objName, String image) {
 		HolonSwitch holonSwitch = new HolonSwitch(objName);
 		holonSwitch.setImage(image);
+		holonSwitch.setSav(cat.getName());
 		addObject(cat, holonSwitch);
 	}
 

+ 5 - 1
src/ui/controller/Control.java

@@ -33,7 +33,7 @@ public class Control {
 		this.objectController = new ObjectController(MODEL);
 		this.canvasController = new CanvasController(MODEL);
 		this.globalController = new GlobalController(MODEL);
-		this.loadStoreController = new LoadStoreController(MODEL);
+		this.loadStoreController = new LoadStoreController(MODEL, categoryController, canvasController, objectController);
 		
 	}
 
@@ -130,6 +130,10 @@ public class Control {
 	public void writeFile() throws IOException {
 		loadStoreController.writeJSONFile();
 	}
+	
+	public void readFile() throws IOException {
+		loadStoreController.readJSON();
+	}
 	////////// etc
 	public void initListener(CategoryListener catLis) {
 		categoryController.addCategoryListener(catLis);

+ 255 - 25
src/ui/controller/LoadStoreController.java

@@ -5,85 +5,315 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+
 import classes.Category;
+import classes.CpsEdge;
+import classes.CpsNode;
 import classes.CpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
+import classes.HolonTransformer;
 import ui.model.Model;
+import ui.model.idCounter;
 
 public class LoadStoreController {
+
 	private Model MODEL;
+	private CategoryController categoryController;
+	private CanvasController canvasController;
+	private ObjectController objectController;
 
-	public LoadStoreController(Model model) {
+	public LoadStoreController(Model model, CategoryController cg, CanvasController cvs, ObjectController obj) {
 		this.MODEL = model;
+		this.categoryController = cg;
+		this.canvasController = cvs;
+		this.objectController = obj;
+
 	}
 
-	
-	
+	/**
+	 * Writes a Savefile in .json
+	 * 
+	 * @throws IOException
+	 */
 	public void writeJSONFile() throws IOException {
 
 		JSONObject json = new JSONObject();
 
-		
+		json.put("ID", idCounter.getCounter()-1);
 		writeCategory(json);
-		writeCategoryObjects(json);
-		writeCategoryElements(json);
+		writeObjects(json);
+		writeElements(json);
+		writeEdges(json);
 
 		FileWriter writer = new FileWriter("//Users//zheng//Desktop//Tesst.json");
+		writer.write(json.toJSONString());
 		writer.flush();
 		writer.close();
 	}
 
-	public void writeCategory(JSONObject json) throws IOException {
+	/**
+	 * writes all Categories into a JSONObject
+	 * 
+	 * @param json
+	 * @throws IOException
+	 */
+	public void writeCategory(JSONObject json) {
 		JSONArray arr = new JSONArray();
-		
+
 		for (Category cat : MODEL.getCategories())
 			arr.add(cat.getName());
-		json.put("Category", arr);
+
+		json.put("CG", arr);
 	}
 
-	public void writeCategoryObjects(JSONObject json) throws IOException {
-		
+	/**
+	 * writes all Objects in Category into a JSONObject
+	 * 
+	 * @param json
+	 */
+	public void writeObjects(JSONObject json) {
+
 		JSONArray arr = new JSONArray();
 		int i = 1;
-		
+
 		for (Category cats : MODEL.getCategories())
 			for (CpsObject cps : cats.getObjects()) {
-				arr.add(cps.getStored());
+				arr.add(getObjectType(cps));
+				arr.add(cps.getSav());
 				arr.add(cps.getObjName());
-				arr.add(cps.getName());
 				arr.add(cps.getImage());
-				json.put("CategoryObject." + i++, arr);
+				json.put("CGO" + i++, arr);
 				arr = new JSONArray();
 			}
+
+		i = 1;
+		for (CpsObject cps : MODEL.getObjectsOnCanvas()) {
+			arr.add(getObjectType(cps));
+			arr.add(cps.getObjName());
+			arr.add(cps.getID());
+			arr.add(cps.getImage());
+			arr.add(cps.getPosition().x);
+			arr.add(cps.getPosition().y);
+			json.put("CVSO" + i++, arr);
+			arr = new JSONArray();
+			;
+
+		}
 	}
 
-	public void writeCategoryElements(JSONObject json) throws IOException {
-		
+	/**
+	 * 
+	 * @param cps
+	 * @return
+	 */
+	public String getObjectType(CpsObject cps) {
+		if (cps instanceof HolonObject)
+			return "HolonObject";
+		if (cps instanceof HolonTransformer)
+			return "HolonTransformer";
+		if (cps instanceof HolonSwitch)
+			return "HolonSwitch";
+		else
+			return "CpsNode";
+	}
+
+	/**
+	 * writes all Elements in Objects in Category into a JSONObject
+	 * 
+	 * @param json
+	 */
+	public void writeElements(JSONObject json) {
 
 		JSONArray arr = new JSONArray();
 		int i = 1;
-		
+
 		for (Category cats : MODEL.getCategories())
 			for (CpsObject cps : cats.getObjects())
 				if (cps instanceof HolonObject)
 					for (HolonElement ele : ((HolonObject) cps).getElements()) {
-						arr.add(ele.getStored());
+						arr.add(ele.getSav());
+						arr.add(ele.getObj());
 						arr.add(ele.getEleName());
 						arr.add(ele.getAmount());
 						arr.add(ele.getEnergy());
-						json.put("CategoryElement." + i++, arr);
+						json.put("CGE" + i++, arr);
 						arr = new JSONArray();
 					}
+
+		i = 1;
+		for (CpsObject cps : MODEL.getObjectsOnCanvas()) {
+			if (cps instanceof HolonObject)
+				for (HolonElement ele : ((HolonObject) cps).getElements()) {
+					arr.add(ele.getSav());
+					arr.add(cps.getID());
+					arr.add(ele.getEleName());
+					arr.add(ele.getAmount());
+					arr.add(ele.getEnergy());
+					json.put("CVSE" + i++, arr);
+					arr = new JSONArray();
+				}
+		}
 	}
 
-	public void readFromJSON(File jsonFile) throws IOException {
-		String line;
-		BufferedReader reader = new BufferedReader(new FileReader("textfile"));
-		while ((line = reader.readLine()) != null) {
-			// mach hier irgendwas mit der Gelesenen Zeile
+	/**
+	 * write all Edges into a JSONObject
+	 * 
+	 * @param json
+	 */
+	public void writeEdges(JSONObject json) {
+
+		JSONArray arr = new JSONArray();
+		int i = 1;
+
+		for (CpsEdge edge : MODEL.getEdgesOnCanvas()) {
+			arr.add(edge.getA().getID());
+			arr.add(edge.getB().getID());
+			arr.add(edge.getCapacity());
+			arr.add(edge.getFlow());
+			json.put("EDGE" + i++, arr);
+			arr = new JSONArray();
 		}
 	}
+
+	public void readJSON() throws IOException {
+		JSONParser parser = new JSONParser();
+		MODEL.setCategories(new ArrayList<>());
+		MODEL.setObjectsOnCanvas(new ArrayList<>());
+
+		ArrayList<String> obj = new ArrayList<>();
+		ArrayList<String> ele = new ArrayList<>();
+		ArrayList<String> edge = new ArrayList<>();
+
+		try {
+
+			JSONObject json = (JSONObject) parser.parse(new FileReader("//Users//zheng//Desktop//Tesst.json"));
+
+			for (Object key : json.keySet()) {
+
+				if (key.equals("CG"))
+					readCategory((JSONArray) json.get(key));
+				else if (key.toString().contains("CGO") || key.toString().contains("CVSO"))
+					obj.add(key.toString());
+				else if (key.toString().contains("CGE") || key.toString().contains("CVSE"))
+					ele.add(key.toString());
+				else if (key.toString().contains("EDGE"))
+					edge.add(key.toString());
+				else idCounter.setCounter(Integer.parseInt(json.get(key.toString()).toString()));
+			}
+
+			dispatch(obj, json);
+			dispatch(ele, json);
+			dispatch(edge, json);
+
+		} catch (ParseException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+	}
+
+	public void dispatch(ArrayList<String> input, JSONObject json) {
+
+		for (String str : input) {
+			if (str.contains("CGO")) {
+				readCategoryObject((JSONArray) json.get(str));
+			} else if (str.contains("CVSO")) {
+				readCanvasObject((JSONArray) json.get(str));
+			} else if (str.contains("CGE") || str.contains("CVSE")) {
+				readElement((JSONArray) json.get(str));
+			} else if (str.contains("EDGE")) {
+				readEdge((JSONArray) json.get(str));
+			}
+		}
+
+	}
+
+	public void readCategory(JSONArray arr) {
+
+		Iterator<Object> i = arr.iterator();
+
+		while (i.hasNext()) {
+			categoryController.addNewCategory(i.next().toString());
+		}
+	}
+
+	public void readCategoryObject(JSONArray arr) {
+		Iterator<Object> i = arr.iterator();
+
+		String type = i.next().toString();
+
+		if (type.equals("HolonObject")) {
+			categoryController.addNewHolonObject(categoryController.searchCatNode(i.next().toString()),
+					i.next().toString(), new ArrayList<>(), i.next().toString());
+		}
+		if (type.equals("HolonTransformer")) {
+			categoryController.addNewHolonTransformer(categoryController.searchCatNode(i.next().toString()),
+					i.next().toString(), i.next().toString());
+		}
+		if (type.equals("HolonSwitch")) {
+			categoryController.addNewHolonSwitch(categoryController.searchCatNode(i.next().toString()),
+					i.next().toString(), i.next().toString());
+		}
+
+	}
+
+	public void readCanvasObject(JSONArray arr) {
+		Iterator<Object> i = arr.iterator();
+		CpsObject cps = null;
+
+		String type = i.next().toString();
+
+		if (type.equals("HolonObject")) {
+			cps = new HolonObject(i.next().toString());
+		}
+		if (type.equals("HolonTransformer")) {
+			cps = new HolonTransformer(i.next().toString());
+		}
+		if (type.equals("HolonSwitch")) {
+			cps = new HolonSwitch(i.next().toString());
+		}
+		if (type.equals("CpsNode")) {
+			cps = new CpsNode(i.next().toString());
+		}
+
+		cps.setID(Integer.parseInt(i.next().toString()));
+		cps.setImage(i.next().toString());
+		cps.setPosition(Integer.parseInt(i.next().toString()), Integer.parseInt(i.next().toString()));
+
+		canvasController.addObjectIntoCanvas(cps);
+	}
+
+	public void readElement(JSONArray arr) {
+		Iterator<Object> i = arr.iterator();
+
+		String sav = i.next().toString();
+		System.out.println(sav);
+
+		if (sav.equals("Canvas")) {
+			objectController.addNewElementIntoCanvasObject(Integer.parseInt(i.next().toString()), i.next().toString(),
+					Integer.parseInt(i.next().toString()), Float.parseFloat(i.next().toString()));
+		} else
+			objectController.addNewElementIntoCategoryObject(sav, i.next().toString(), i.next().toString(),
+					Integer.parseInt(i.next().toString()), Float.parseFloat(i.next().toString()));
+	}
+
+	public void readEdge(JSONArray arr) {
+		Iterator<Object> i = arr.iterator();
+
+		CpsEdge edge = new CpsEdge(objectController.searchByID(Integer.parseInt(i.next().toString())),
+				objectController.searchByID(Integer.parseInt(i.next().toString())));
+		edge.setCapacity(Float.parseFloat(i.next().toString()));
+		edge.setFlow(Float.parseFloat(i.next().toString()));
+
+		canvasController.addEdgeOnCanvas(edge);
+	}
 }

+ 5 - 1
src/ui/controller/ObjectController.java

@@ -43,6 +43,8 @@ public class ObjectController {
 	 * @param type
 	 */
 	public void addElementIntoCanvasObject(HolonObject object, HolonElement element) {
+		element.setSav("Canvas");
+		element.setObj(object.getObjName());
 		addElement(object, element);
 	}
 
@@ -75,7 +77,9 @@ public class ObjectController {
 				break;
 			}
 		}
-		element.setStored(object);
+		element.setSav(cat.getName());
+		element.setObj(object);
+		
 		addElement(searchHolonObject(object, cat.getObjects()), element);
 	}
 

+ 16 - 0
src/ui/model/idCounter.java

@@ -3,8 +3,24 @@ package ui.model;
 public class idCounter {
 	private static int counter = 1;
 
+
 	public static synchronized int nextId() {
 		return counter++;
 
 	}
+	
+	/**
+	 * @return the counter
+	 */
+	public static int getCounter() {
+		return counter;
+	}
+
+	/**
+	 * @param counter the counter to set
+	 */
+	public static void setCounter(int counter) {
+		idCounter.counter = counter;
+	}
+
 }

+ 0 - 1
src/ui/view/Main.java

@@ -25,7 +25,6 @@ public class Main {
 		EventQueue.invokeLater(new Runnable() {
 			public void run() {
 				try {
-					idCounter ID = new idCounter();
 					Model MODEL = new Model();
 					Control CONTROL = new Control(MODEL);
 					GUI VIEW = new GUI(CONTROL);