소스 검색

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 년 전
부모
커밋
b98f29da08
3개의 변경된 파일42개의 추가작업 그리고 16개의 파일을 삭제
  1. 29 5
      src/ui/controller/SimulationManager.java
  2. 10 8
      src/ui/view/GUI.java
  3. 3 3
      src/ui/view/MyCanvas.java

+ 29 - 5
src/ui/controller/SimulationManager.java

@@ -38,13 +38,14 @@ public class SimulationManager {
 			float consumption = calculateEnergy("cons", singleSubNet, x);
 			float minConsumption = calculateMinimumEnergy( singleSubNet, x);
 			for(CpsEdge e: singleSubNet.getEdges()){
-				e.setFlow(production);
+				e.setFlow(0);
 			}
+			setFlow(singleSubNet);
 			for(HolonObject hl: singleSubNet.getObjects()){
 				if(!(hl.getState() == 0) && !(hl.getState() == 3)){
 					for(int i = 0; i < hl.getConnections().size(); i++){
 						CpsEdge edge = hl.getConnectedTo().get(i);
-						if(edge.getState()){
+						if(edge.getState() && edge.getFlow() > 0){
 							// 0 = no energy, 1 = not supplied, 2 = supplied
 							if((production + consumption) >= 0){
 								hl.setState(2);
@@ -52,10 +53,8 @@ public class SimulationManager {
 							if((production + consumption) < 0){
 								if((production + minConsumption) >= 0){
 									hl.setState(4);
-									System.out.println("yellow");
 								}else{
 									hl.setState(1);
-									System.out.println("orange");
 								}
 							}
 							break;
@@ -69,6 +68,32 @@ public class SimulationManager {
 		canvas.repaint();
 	}
 	
+	public void setFlow(subNet sN){
+		for(HolonObject hl: sN.getObjects()){
+			if(hl.getCurrentEnergyAtTimeStep(timeStep) > 0){
+				fillConnectionsFor(hl, new ArrayList<Integer>(), new ArrayList<CpsEdge>(), hl.getCurrentEnergyAtTimeStep(timeStep));
+			}
+		}
+	}
+	
+	public void fillConnectionsFor(CpsObject cps, ArrayList<Integer> visitedObj, ArrayList<CpsEdge> visitedEdges ,float energy ){
+		visitedObj.add(cps.getID());
+		for(CpsEdge e: cps.getConnections()){
+			if(!(visitedEdges.contains(e))){
+				e.setFlow(e.getFlow() + energy);
+				if(e.getState()){
+					visitedEdges.add(e);
+					if(!(visitedObj.contains(e.getA().getID()))){
+					fillConnectionsFor(e.getA(), visitedObj, visitedEdges, energy);
+					}
+					if(!(visitedObj.contains(e.getB().getID()))){
+						fillConnectionsFor(e.getB(), visitedObj, visitedEdges, energy);
+					}
+			}
+			}
+		}
+	}
+	
 	/**
 	 * calculates the energy of either all producers or consumers
 	 * @param type
@@ -109,7 +134,6 @@ public class SimulationManager {
 					minElement = he.getTotalEnergyAtTimeStep(x);
 				}
 			}
-			System.out.println(minElement);
 			min = min + minElement;
 		}
 		return min;

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

@@ -448,6 +448,7 @@ public class GUI<E> implements CategoryListener {
 		tableHolonElement.addMouseListener(new MouseAdapter() {
 			public void mousePressed(MouseEvent e) {
 				HolonObject obj = (HolonObject) getActualCps();
+				
 				yValueElements = e.getY();
 				HolonElement ele = getActualHolonElement(obj, yValueElements);
 				if (e.isControlDown() && ele != null) {
@@ -479,13 +480,13 @@ public class GUI<E> implements CategoryListener {
 					selectedElements.clear();
 					holonEleNamesDisplayed = "None ";
 				}
-				for (int i = 0; i < selectedElements.size(); i++) {
-					if (i == 0) {
-						System.out.println("Selected Items: " + selectedElements.get(i).getEleName());
-					} else {
-						System.out.println(selectedElements.get(i).getEleName());
-					}
-				}
+//				for (int i = 0; i < selectedElements.size(); i++) {
+//					if (i == 0) {
+//						System.out.println("Selected Items: " + selectedElements.get(i).getEleName());
+//					} else {
+//						System.out.println(selectedElements.get(i).getEleName());
+//					}
+//				}
 				elementGraph.setText(holonEleNamesDisplayed);
 				yBTHIS = e.getY();
 				xBTHIS = e.getX();
@@ -1298,7 +1299,8 @@ public class GUI<E> implements CategoryListener {
 		for (CpsObject o : objects) {
 			if (o instanceof HolonObject) {
 				for (HolonElement he : ((HolonObject) o).getElements()) {
-					Object[] temp = { o.getName(), he.getEleName(), he.getEnergy(), he.getAmount(), he.getActive() };
+					Object[] temp = { o.getName() + ", " + o.getID(), he.getEleName(), he.getEnergy(), he.getAmount(),
+							he.getActive() };
 					tableModelHolonElement.addRow(temp);
 				}
 			}

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

@@ -389,7 +389,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 							x = 0;
 						else if (x > this.getWidth() - controller.getScale())
 							x = this.getWidth() - controller.getScale();
-						if (y <=0)
+						if (y <= 0)
 							y = 0;
 						else if (y > this.getHeight() - controller.getScale())
 							y = this.getHeight() - controller.getScale();
@@ -404,7 +404,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		}
 
 		// Mark Objects
-		if (doMark){
+		if (doMark) {
 			for (CpsObject cps : model.getObjectsOnCanvas()) {
 				int x1 = sx, x2 = x, y1 = sy, y2 = y;
 
@@ -551,7 +551,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 			e = new CpsEdge(n, tempCps, edgeCapacity);
 
 			controller.AddEdgeOnCanvas(e);
-			System.out.println("node ID: " + n.getID());
+//			System.out.println("node ID: " + n.getID());
 		}
 
 		// Wenn ein Node ohne Connections da ist