Browse Source

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

Kevin Trometer 8 năm trước cách đây
mục cha
commit
f01fb50f41

+ 35 - 40
src/ui/controller/Control.java

@@ -8,6 +8,7 @@ import java.util.ArrayList;
 import Interfaces.CategoryListener;
 import classes.Category;
 import classes.CpsEdge;
+import classes.CpsNode;
 import classes.CpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
@@ -30,7 +31,7 @@ public class Control {
 	private final AutoSaveController autoSaveController;
 	private SimulationManager simulationManager;
 	private String autoPath = "";
-	
+
 	public Control(Model model) {
 		this.MODEL = model;
 
@@ -72,12 +73,6 @@ public class Control {
 
 	public void addObject(Category cat, String obj, ArrayList<HolonElement> ele, String img) {
 		categoryController.addNewHolonObject(cat, obj, ele, img);
-		try {
-			autoSave();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
 	}
 
 	public void addTransformer(Category cat, String obj) {
@@ -99,19 +94,18 @@ public class Control {
 	public void delObjectCategory(String cat, String obj) {
 		categoryController.deleteObject(cat, obj);
 	}
-	
 
 	public void deleteSelectedObject(CpsObject obj) {
 		objectController.deleteSelectedObject(obj);
 	}
-	
+
 	public void addSelectedObject(CpsObject obj) {
 		objectController.addSelectedObject(obj);
 	}
 
 	/* Operations for Canvas */
 
-	public void AddEdgeOnCanvas(CpsEdge edge){
+	public void AddEdgeOnCanvas(CpsEdge edge) {
 		canvasController.addEdgeOnCanvas(edge);
 		try {
 			autoSave();
@@ -137,11 +131,13 @@ public class Control {
 
 	public void addObjectCanvas(CpsObject object) {
 		canvasController.addNewObject(object);
-		try {
-			autoSave();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+		if (!(object instanceof CpsNode)) {
+			try {
+				autoSave();
+			} catch (IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
 		}
 	}
 
@@ -168,11 +164,11 @@ public class Control {
 		objectController.addNewElementIntoCategoryObject(catName, objName, eleName, amount, energy);
 	}
 
-	public void deleteElementCanvas(int id, String element){
+	public void deleteElementCanvas(int id, String element) {
 		objectController.deleteElementInCanvas(id, element);
 	}
 
-	public void deleteElementCanvas(HolonObject obj, HolonElement ele){
+	public void deleteElementCanvas(HolonObject obj, HolonElement ele) {
 		objectController.deleteElement(obj, ele);
 	}
 
@@ -206,45 +202,44 @@ public class Control {
 	public void initListener(CategoryListener catLis) {
 		categoryController.addCategoryListener(catLis);
 	}
-	
-	public void calculateStateForTimeStep(int x){
+
+	public void calculateStateForTimeStep(int x) {
 		simulationManager.reset();
 		simulationManager.calculateStateForTimeStep(x);
 	}
-	
-	public void setCanvas(MyCanvas can){
+
+	public void setCanvas(MyCanvas can) {
 		simulationManager.setCanvas(can);
 	}
-	
 
 	private void autoSave() throws IOException {
 		autoSaveController.increaseAutoSaveNr();
-		storeController.writeSaveFile(autoPath+autoSaveController.getAutoSaveNr());
+		storeController.writeSaveFile(autoPath + autoSaveController.getAutoSaveNr());
 	}
-	
-	public String getUndoSave(){
+
+	public String getUndoSave() {
 		autoSaveController.decreaseAutoSaveNr();
-		if(!new File(autoPath + (autoSaveController.getAutoSaveNr())).exists()){
+		if (!new File(autoPath + (autoSaveController.getAutoSaveNr())).exists()) {
 			autoSaveController.increaseAutoSaveNr();
 		}
-		return autoPath+(autoSaveController.getAutoSaveNr());
+		return autoPath + (autoSaveController.getAutoSaveNr());
 	}
-	
-	public String getRedoSave(){
+
+	public String getRedoSave() {
 		autoSaveController.increaseAutoSaveNr();
-		if(!new File(autoPath+(autoSaveController.getAutoSaveNr())).exists()){
+		if (!new File(autoPath + (autoSaveController.getAutoSaveNr())).exists()) {
 			autoSaveController.decreaseAutoSaveNr();
 		}
-		return autoPath+(autoSaveController.getAutoSaveNr());
-	}
-	
-//	public void increaseAutoSaveNr(){
-//		autoSaveController.increaseAutoSaveNr();
-//	}
-//	
-//	public void decreaseAutoSaveNr(){
-//		autoSaveController.decreaseAutoSaveNr();
-//	}
+		return autoPath + (autoSaveController.getAutoSaveNr());
+	}
+
+	// public void increaseAutoSaveNr(){
+	// autoSaveController.increaseAutoSaveNr();
+	// }
+	//
+	// public void decreaseAutoSaveNr(){
+	// autoSaveController.decreaseAutoSaveNr();
+	// }
 
 	/**
 	 * Getter for Model

+ 1 - 1
src/ui/controller/LoadController.java

@@ -72,7 +72,7 @@ public class LoadController {
 		if (mode.equals(MODE.ALL) || mode.equals(MODE.CATEGORY)) {
 			MODEL.setCgIdx(new HashMap<String, Integer>());
 			MODEL.setCategories(new ArrayList<Category>());
-			MODEL.setEdgesOnCanvas(new ArrayList<>());
+			MODEL.setEdgesOnCanvas(new ArrayList<CpsEdge>());
 		}
 		if (mode.equals(MODE.ALL) || mode.equals(MODE.CATEGORY)) {
 			MODEL.setCvsObjIdx(new HashMap<Integer, Integer>());

+ 27 - 1
src/ui/controller/SimulationManager.java

@@ -5,6 +5,7 @@ import java.util.ArrayList;
 import classes.CpsEdge;
 import classes.CpsNode;
 import classes.CpsObject;
+import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.subNet;
@@ -35,6 +36,7 @@ public class SimulationManager {
 		for(subNet singleSubNet: subNets){
 			float production = calculateEnergy("prod", singleSubNet, x);
 			float consumption = calculateEnergy("cons", singleSubNet, x);
+			float minConsumption = calculateMinimumEnergy( singleSubNet, x);
 			for(CpsEdge e: singleSubNet.getEdges()){
 				e.setFlow(production);
 			}
@@ -48,7 +50,13 @@ public class SimulationManager {
 								hl.setState(2);
 							}
 							if((production + consumption) < 0){
-								hl.setState(1);
+								if((production + minConsumption) >= 0){
+									hl.setState(4);
+									System.out.println("yellow");
+								}else{
+									hl.setState(1);
+									System.out.println("orange");
+								}
 							}
 							break;
 						}
@@ -89,6 +97,24 @@ public class SimulationManager {
 		return energy;
 	}
 	
+	public float calculateMinimumEnergy(subNet sN, int x){
+		float min = 0;
+		float minElement = 0;
+		for(HolonObject hl: sN.getObjects()){
+			if(hl.getElements().size() > 0 && hl.getElements().get(0).getTotalEnergyAtTimeStep(x) < 0 ){
+				minElement = hl.getElements().get(0).getTotalEnergyAtTimeStep(x);
+			}
+			for(HolonElement he: hl.getElements()){
+				if(minElement < he.getTotalEnergyAtTimeStep(x) && he.getTotalEnergyAtTimeStep(x) < 0){
+					minElement = he.getTotalEnergyAtTimeStep(x);
+				}
+			}
+			System.out.println(minElement);
+			min = min + minElement;
+		}
+		return min;
+	}
+	
 	/**
 	 * generates all subNets from all objectsToHandle
 	 */

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

@@ -191,6 +191,9 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 							controller.getScale() + ((controller.getScale() / 20) * 2),
 							controller.getScale() + ((controller.getScale() / 20) * 2));
 				} else if (cps instanceof HolonObject) {
+					if (((HolonObject) cps).getState() == 4) {
+						g2.setColor(Color.YELLOW);
+					}
 					if (((HolonObject) cps).getState() == 3) {
 						g2.setColor(Color.lightGray);
 					}