Browse Source

Edge with BreakManuel and InfinitCapacity

Tom Troppmann 5 years ago
parent
commit
f99ee8e181

+ 23 - 1
src/classes/CpsEdge.java

@@ -16,7 +16,7 @@ public class CpsEdge {
     // Max. capacity of the Edge, if flow is greater than the status --> is
     // Working would be false
     @Expose
-    float maxCapacity;
+    private float maxCapacity;
     ArrayList<Integer> tags;
     // for internal use --> flow of electricity (simulation state)
     ArrayList<Integer> pseudoTags;
@@ -25,6 +25,12 @@ public class CpsEdge {
     // Destination
     AbstractCpsObject b;
 
+    @Expose
+    private boolean breakedManuel = false;
+    @Expose
+    private boolean unlimitedCapacity = false;
+    
+    
     /**
      * Constructor without max. capacity (by default as 100)
      *
@@ -207,4 +213,20 @@ public class CpsEdge {
     	return "CpsEdge: " + A + " to " + B;
     }
 
+	public boolean isBreakedManuel() {
+		return breakedManuel;
+	}
+
+	public void setBreakedManuel(boolean breakedManuel) {
+		this.breakedManuel = breakedManuel;
+	}
+
+	public boolean isUnlimitedCapacity() {
+		return unlimitedCapacity;
+	}
+
+	public void setUnlimitedCapacity(boolean unlimitedCapacity) {
+		this.unlimitedCapacity = unlimitedCapacity;
+	}
+
 }

+ 8 - 2
src/ui/controller/SimulationManager.java

@@ -66,6 +66,7 @@ public class SimulationManager {
 		{
 			//make cable hastmap
 			DecoratedState theStateBefore = saves.get(timestep-1);
+			//edges without HolonObjects or burned
 			for(DecoratedCable edge : theStateBefore.getLeftOverEdges())
 			{
 				map.put(edge.getModel(), edge.getState());
@@ -74,7 +75,12 @@ public class SimulationManager {
 		timeStep = timestep;
 		ArrayList<MinimumNetwork> list =  new ArrayList<MinimumNetwork>();
 		MinimumModel minimumModel = new MinimumModel(model.getObjectsOnCanvas(), model.getEdgesOnCanvas());
-		//set all working:
+		//set all BreakedManuel Cable Burned:
+		for(IntermediateCableWithState cable : minimumModel.getEdgeList()) {
+			if(cable.getModel().isBreakedManuel()) cable.setState(CableState.Burned);
+		}
+		
+		//set all the state before:
 		for(IntermediateCableWithState cable : minimumModel.getEdgeList()) {
 			if(map.containsKey(cable.getModel())) cable.setState(map.get(cable.getModel()));
 		}
@@ -86,7 +92,7 @@ public class SimulationManager {
 			for(MinimumNetwork net : list) {
 				float energyOnCables = net.getHolonObjectList().stream().filter(object -> object.getEnergyAtTimeStep(timestep) > 0.0f).map(object -> object.getEnergyAtTimeStep(timestep)).reduce(0.0f, ((a,b) -> a + b));
 				//find the cable with the energy supplied from his two connected objects are the biggest, from all cables that the network give more energy than the cablecapacity. 
-				IntermediateCableWithState cable = net.getEdgeList().stream().filter(aCable -> energyOnCables > aCable.getModel().getCapacity()).max((lhs,rhs) -> Float.compare(lhs.getEnergyFromConnetedAtTimestep(timestep), rhs.getEnergyFromConnetedAtTimestep(timestep))).orElse(null);
+				IntermediateCableWithState cable = net.getEdgeList().stream().filter(aCable -> energyOnCables > aCable.getModel().getCapacity() && !aCable.getModel().isUnlimitedCapacity()).max((lhs,rhs) -> Float.compare(lhs.getEnergyFromConnetedAtTimestep(timestep), rhs.getEnergyFromConnetedAtTimestep(timestep))).orElse(null);
 				if(cable != null) {
 					cable.setState(CableState.Burned);
 					doAnotherLoop = true;

+ 1 - 21
src/ui/view/EditEdgesPopUp.java

@@ -44,7 +44,7 @@ public class EditEdgesPopUp extends JDialog {
         super((java.awt.Frame) null, true);
 		setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL);
 		this.setTitle(Languages.getLanguage()[46]);
-		setBounds(100, 100, 600, 220);
+		setBounds(100, 100, 400, 220);
         setLocationRelativeTo(parentFrame);
         getContentPane().setLayout(new BorderLayout());
 		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
@@ -86,21 +86,6 @@ public class EditEdgesPopUp extends JDialog {
 		JButton btnOk1 = new JButton("OK");
 		btnOk1.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
-				if (capacityField.getText().equals("infinite")) {
-					capacity = -1;
-					if (rdbtnChangeForAll.isSelected()) {
-						changeForExisting(capacity);
-						dispose();
-					} else if (rdbtnChangeForNew.isSelected()) {
-						changeForNew(capacity);
-						dispose();
-					} else if (rdbtnChangeForAll1.isSelected()) {
-						changeForExAndNew(capacity);
-						dispose();
-					} else {
-						JOptionPane.showMessageDialog(new JFrame(), Languages.getLanguage()[52]);
-					}
-				} else {
 					try {
 						capacity = Float.parseFloat(capacityField.getText().toString());
 						if (capacity < 0) {
@@ -121,7 +106,6 @@ public class EditEdgesPopUp extends JDialog {
 					} catch (NumberFormatException eex) {
 						JOptionPane.showMessageDialog(new JFrame(), Languages.getLanguage()[53]);
 					}
-				}
 			}
 		});
 		btnOk1.setBounds(186, 147, 89, 23);
@@ -131,10 +115,6 @@ public class EditEdgesPopUp extends JDialog {
 		bG.add(rdbtnChangeForAll1);
 		bG.add(rdbtnChangeForNew);
 		bG.add(rdbtnChangeForAll);
-
-		lblenterinfiniteFor = new JLabel(Languages.getLanguage()[55]);
-		lblenterinfiniteFor.setBounds(237, 11, 360, 14);
-		contentPanel.add(lblenterinfiniteFor);
 	}
 
 	/**

+ 6 - 15
src/ui/view/MyCanvas.java

@@ -417,6 +417,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		Position end =  cable.getModel().getB().getPosition();
 		float currentEnergy = cable.getFlowEnergy();
 		float capacity = cable.getModel().getCapacity();
+		boolean unlimited = cable.getModel().isUnlimitedCapacity();
 		switch(cable.getState()) {
 		case Burned:
 			g.setColor(Color.RED);
@@ -424,7 +425,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 			break;
 		case Working:
 			g.setColor(new Color(13, 175, 28));
-			g.setStroke(new BasicStroke((currentEnergy / capacity* 2f) + 1));
+			g.setStroke(new BasicStroke(unlimited?2f:(currentEnergy / capacity * 2f) + 1));
 			break;
 		}
 		if(isSelected){
@@ -433,7 +434,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		g.drawLine(start.x, start.y, end.x, end.y);
 		Position middle = new Position((start.x + end.x) / 2, (start.y + end.y) / 2);
 		g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10) )); 
-		g.drawString(currentEnergy + "/" + capacity , middle.x, middle.y);
+		g.drawString(currentEnergy + "/" + (unlimited?"\u221E":capacity) , middle.x, middle.y);
 	}
 	private void paintSwitch(Graphics2D g, DecoratedSwitch dSwitch)
 	{
@@ -445,6 +446,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		Position end = eCable.getFinish().getPosition();
 		float currentEnergy = eCable.getCable().getFlowEnergy();
 		float capacity = eCable.getCable().getModel().getCapacity();
+		boolean unlimited = eCable.getCable().getModel().isUnlimitedCapacity();
 		switch(eCable.getCable().getState()) {
 		case Burned:
 			g.setColor(Color.RED);
@@ -452,24 +454,13 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 			break;
 		case Working:
 			g.setColor(new Color(13, 175, 28));
-			g.setStroke(new BasicStroke((currentEnergy / capacity* 2f) + 1));
+			g.setStroke(new BasicStroke(unlimited?2f:(currentEnergy / capacity * 2f) + 1));
 			break;
 		}
 		g.drawLine(start.x, start.y, end.x, end.y);
 		Position middle = new Position((start.x + end.x) / 2, (start.y + end.y) / 2);
 		g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10) )); 
-		g.drawString(currentEnergy + "/" + capacity , middle.x, middle.y);
-		switch(eCable.getState()) {
-		case DOWN:
-			break;
-		case DOWNDOWN:
-			break;
-		case DOWNUP:
-		case UP:
-		default:
-			System.out.println("Error");
-			break;
-		}
+		g.drawString(currentEnergy + "/" + (unlimited?"\u221E":capacity) , middle.x, middle.y);
 	}
 	private void paintGroupNode(Graphics2D g, DecoratedGroupNode dGroupNode, CpsUpperNode onThisGroupNodeModel) {
 //		for(ExitCable exitCable : dGroupNode.getExitCableList()) {

+ 7 - 5
src/ui/view/UpperNodeCanvas.java

@@ -403,6 +403,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		Position end =  cable.getModel().getB().getPosition();
 		float currentEnergy = cable.getFlowEnergy();
 		float capacity = cable.getModel().getCapacity();
+		boolean unlimited = cable.getModel().isUnlimitedCapacity();
 		switch(cable.getState()) {
 		case Burned:
 			g.setColor(Color.RED);
@@ -410,7 +411,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 			break;
 		case Working:
 			g.setColor(new Color(13, 175, 28));
-			g.setStroke(new BasicStroke((currentEnergy / capacity* 2f) + 1));
+			g.setStroke(new BasicStroke(unlimited?2f:(currentEnergy / capacity * 2f) + 1));
 			break;
 		}
 		if(isSelected){
@@ -419,7 +420,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		g.drawLine(start.x, start.y, end.x, end.y);
 		Position middle = new Position((start.x + end.x) / 2, (start.y + end.y) / 2);
 		g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10) )); 
-		g.drawString(currentEnergy + "/" + capacity , middle.x, middle.y);
+		g.drawString(currentEnergy + "/" + (unlimited?"\u221E":capacity) , middle.x, middle.y);
 	}
 	private void paintSwitch(Graphics2D g, DecoratedSwitch dSwitch)
 	{
@@ -436,6 +437,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		Position end = eCable.getFinish().getPosition();
 		float currentEnergy = eCable.getCable().getFlowEnergy();
 		float capacity = eCable.getCable().getModel().getCapacity();
+		boolean unlimited = eCable.getCable().getModel().isUnlimitedCapacity();
 		switch(eCable.getCable().getState()) {
 		case Burned:
 			g.setColor(Color.RED);
@@ -443,7 +445,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 			break;
 		case Working:
 			g.setColor(new Color(13, 175, 28));
-			g.setStroke(new BasicStroke((currentEnergy / capacity* 2f) + 1));
+			g.setStroke(new BasicStroke(unlimited?2f:(currentEnergy / capacity * 2f) + 1));
 			break;
 		}
 		switch(eCable.getState()) {
@@ -452,7 +454,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 			g.drawLine(start.x, start.y, end.x, end.y);
 			Position middle = new Position((start.x + end.x) / 2, (start.y + end.y) / 2);
 			g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10) )); 
-			g.drawString(currentEnergy + "/" + capacity , middle.x, middle.y);
+			g.drawString(currentEnergy + "/" + (unlimited?"\u221E":capacity) , middle.x, middle.y);
 			break;
 		case DOWNUP:
 		case UP:
@@ -465,7 +467,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 			g.drawLine(start.x, start.y, result.x, result.y);
 			Position middle1 = new Position((start.x +result.x) / 2, (start.y + +result.y) / 2);
 			g.setFont(new Font("TimesRoman", Font.PLAIN, Math.max((int) (controller.getScale() / 3.5f), 10) )); 
-			g.drawString(currentEnergy + "/" + capacity , middle1.x, middle1.y);
+			g.drawString(currentEnergy + "/" + (unlimited?"\u221E":capacity) , middle1.x, middle1.y);
 			drawCanvasObject(g, "/Images/arrowUp.png" , result);
 			break;
 		default: