Browse Source

Sets MQTT as default protocol, Fixes new Connections not being shown

Andreas T. Meyer-Berg 5 years ago
parent
commit
0b4e6a6b7d

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

@@ -1,5 +1,6 @@
 package de.tu_darmstadt.tk.SmartHomeNetworkSim.control;
 
+import java.util.Collection;
 import java.util.Observer;
 
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Connection;
@@ -334,6 +335,22 @@ public class Controller {
 	public void removeLink(Link link){
 		model.getConnectionNetworks().remove(link);
 	}
+	
+	public Collection<Link> getLinks(){
+		return model.getConnectionNetworks();
+	}
+	
+	public void addConnection(Connection connection){
+		model.addConnection(connection);
+	}
+	
+	public void removeConnection(Connection connection){
+		model.getConnections().remove(connection);
+	}
+	
+	public Collection<Connection> getConnections(){
+		return model.getConnections();
+	}
 
 	public void addLinkToDevice(Link newLink, SmartDevice smartDevice) {
 		if(!newLink.getDevices().contains(smartDevice)){

+ 32 - 4
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/view/ConnectionCreationPanel.java

@@ -120,7 +120,7 @@ public class ConnectionCreationPanel extends JScrollPane {
 	public ConnectionCreationPanel(Collection<Port> ports, Link l,
 			Controller controller) {
 		this.controller = controller;
-		connection = new ConnectionImplementation(l, new SimpleProtocol());
+		connection = new ConnectionImplementation(l, new MQTT_protocol());
 		this.ports = new Port[ports.size()];
 		int i = 0;
 		for (Port d : ports) {
@@ -349,9 +349,36 @@ public class ConnectionCreationPanel extends JScrollPane {
 
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				/*
-				 * if(!edit){ controller.addLink(connection); }
-				 */
+				
+				if(!edit){ 
+					if(!connection.getLink().getConnections().contains(connection))
+					connection.getLink().addConnection(connection);
+					for(int i = 0; i<ports.length; i++){
+						if(!ports[i].getOwner().getLinks().contains(connection.getLink()))
+							ports[i].getOwner().addLink(connection.getLink());
+						if(connection.getProtocol().getDevices().contains(ports[i])){
+							if(!connection.getParticipants().contains(ports[i]))
+								connection.addSmartDevice(ports[i]);
+							if(ports[i].getConnection()!=connection)
+								ports[i].setConnection(connection);
+							if(!ports[i].getOwner().getPorts().contains(ports[i]))
+								ports[i].getOwner().addPort(ports[i]);
+						} else {
+							if(connection.getParticipants().contains(ports[i]))
+								connection.removeSmartDevice(ports[i]);
+							if(ports[i].getConnection()!=null)
+								ports[i].setConnection(null);
+							if(ports[i].getOwner().getPorts().contains(ports[i]))
+								ports[i].getOwner().removePort(ports[i]);
+							
+						}
+					}
+					if(!controller.getLinks().contains(connection.getLink()))
+						controller.addLink(connection.getLink());
+					if(!controller.getConnections().contains(connection))
+						controller.addConnection(connection);
+				}
+				 
 				connection.setName(tfName.getText());
 				content.setVisible(false);
 				setVisible(false);
@@ -359,6 +386,7 @@ public class ConnectionCreationPanel extends JScrollPane {
 					frame.setVisible(false);
 					frame.dispose();
 				}
+				controller.notifyObservers();
 			}
 		});