Browse Source

Allows deletion of Devices, Connections can be terminated

Andreas T. Meyer-Berg 6 years ago
parent
commit
47fadae95c

+ 5 - 1
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/Main.java

@@ -31,7 +31,11 @@ public class Main {
 	 */
 	static Controller c;
 	
+	/**
+	 * SimulationManager which runs the simulation
+	 */
 	static SimulationManager sim;
+	
 	/**
 	 * Starts the program
 	 * @param args will be ignored
@@ -43,7 +47,7 @@ public class Main {
 	    v = new MainFrame(m, c);
 	    sim = new SimulationManager(m);
 	    initializeTest();
-	    sim.simulateTimeIntervall(0, 10000);
+	    sim.simulateTimeIntervall(0, 1000);
 	}
 	
 	public static void initializeTest(){

+ 4 - 0
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/control/Controller.java

@@ -172,8 +172,12 @@ public class Controller {
 			c.removeSmartDevice(toDelete);
 			if(c.getSource()==null){
 				model.addTerminatingConnections(c);
+				for(SmartDevice sd:c.getParticipants()){
+					if(sd!=null)sd.getConnections().remove(c);
+				}
 			}
 		}
+		model.getDevices().remove(toDelete);
 	}
 	
 	/**

+ 2 - 2
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/core/SimpleConnection.java

@@ -41,7 +41,7 @@ public class SimpleConnection implements Connection {
 	}
 	@Override
 	public Collection<SmartDevice> getParticipants() {
-		return new ArrayList<SmartDevice>(Arrays.asList(source, destination));
+		return new LinkedList<SmartDevice>(Arrays.asList(source, destination));
 	}
 	@Override
 	public void removeSmartDevice(SmartDevice sd) {
@@ -53,7 +53,7 @@ public class SimpleConnection implements Connection {
 	
 	@Override
 	public Collection<Packet> getTerminationPackages(long startTime) {
-		return new ArrayList<Packet>(Arrays.asList((Packet)new SimplePacket(startTime, srcOfTermination, other)));
+		return new LinkedList<Packet>(Arrays.asList((Packet)new SimplePacket(startTime, srcOfTermination, other)));
 	}
 
 }

+ 21 - 2
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/core/SimplePacket.java

@@ -16,6 +16,11 @@ public class SimplePacket extends Packet {
 	 */
 	SmartDevice source, destination;
 	
+	/**
+	 * Payload which was sent
+	 */
+	private String payload;
+	
 	/**
 	 * Creates a new dummy packet
 	 * @param time
@@ -26,6 +31,20 @@ public class SimplePacket extends Packet {
 		this.time = time;
 		this.source = source;
 		this.destination = destination;
+		this.payload = null;
+	}
+	
+	/**
+	 * Creates a new dummy packet
+	 * @param time
+	 * @param source
+	 * @param destination
+	 */
+	public SimplePacket(long time, SmartDevice source, SmartDevice destination, String payload) {
+		this.time = time;
+		this.source = source;
+		this.destination = destination;
+		this.payload = payload;
 	}
 	@Override
 	public Byte[] dumpBytes() {
@@ -34,12 +53,12 @@ public class SimplePacket extends Packet {
 
 	@Override
 	public String getTextualRepresentation() {
-		return "[SimplePacket:time-"+time+";source:"+source.getName()+";dest:"+destination.getName()+"]";
+		return "[SimplePacket:"+payload+" time-"+time+";source:"+source.getName()+";dest:"+destination.getName()+"]";
 	}
 
 	@Override
 	public String getPayload() {
-		return "Empty";
+		return payload == null ? "":payload;
 	}
 
 }

+ 4 - 4
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/core/SmartDevice.java

@@ -1,6 +1,6 @@
 package de.tu_darmstadt.tk.SmartHomeNetworkSim.core;
 
-import java.util.ArrayList;
+import java.util.LinkedList;
 import java.util.List;
 
 /**
@@ -34,8 +34,8 @@ public class SmartDevice {
 	 */
 	public SmartDevice(String name) {
 		this.name = name;
-		links = new ArrayList<Link>();
-		connections = new ArrayList<Connection>();
+		links = new LinkedList<Link>();
+		connections = new LinkedList<Connection>();
 	}
 
 	/**
@@ -64,7 +64,7 @@ public class SmartDevice {
 	 * @param name
 	 *            the name to set
 	 */
-	public void setName(String name) {
+	public void setoDeletetName(String name) {
 		this.name = name;
 	}
 

+ 29 - 5
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/view/VisualisationInteractor.java

@@ -11,7 +11,10 @@ import javax.swing.JPopupMenu;
 import javax.swing.event.MouseInputListener;
 
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.control.Controller;
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Connection;
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Link;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Model;
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Packet;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.SmartDevice;
 
 /**
@@ -80,6 +83,27 @@ public class VisualisationInteractor implements MouseInputListener, MouseMotionL
 		this.rightClickMenu = new JPopupMenu();
 		itemCreate = new JMenuItem("Create SmartDevice");
 		itemDelete = new JMenuItem("Delete");
+		itemDelete.addActionListener(e -> {
+			controller.deleteSmartDevice(dragged);
+			panel.repaint();
+			});
+		itemCreate.addActionListener(e->{
+			for(Link l:model.getConnectionNetworks())
+				System.out.println("Link: "+l.getName());
+			for(SmartDevice d: model.getDevices()){
+				System.out.println("Device: "+d.getName());
+				for(Connection c: d.getConnections()){
+					if(c.getSource()==null)
+						System.out.println("Connection: terminated");
+					else
+						System.out.println("Connection: "+c.getSource().getName());
+				}
+			}
+			for(Connection c: model.getTerminatingConnections()){
+				for(Packet p:c.getTerminationPackages(1000))
+					System.out.println(p.toString());
+			}
+		});
 		rightClickMenu.add(itemCreate);
 		rightClickMenu.add(itemDelete);
 		this.panel.add(rightClickMenu);
@@ -87,21 +111,21 @@ public class VisualisationInteractor implements MouseInputListener, MouseMotionL
 
 	@Override
 	public void mouseClicked(MouseEvent e) {
-		/**
-		 * SmartDevice that was clicked
+		/*
+		 * FindSmartDevice that was clicked
 		 */
-		SmartDevice clickedOn = null;
+		dragged = null;
 		// Find the clicked SmartDevice
 		for (SmartDevice d : model.getDevices()) {
 			if (Math.abs(d.getX() - e.getX()) < panel.getVisualisationRadius()
 					&& Math.abs(d.getY() - e.getY()) < panel.getVisualisationRadius()) {
-				clickedOn = d;
+				dragged = d;
 			}
 		}
 		//If Rightclick
 		if(e.getButton()==MouseEvent.BUTTON3) {
 			//Show the RightClickMenu
-			showRightClickMenu(clickedOn);	
+			showRightClickMenu(dragged);	
 		}
 			
 	}