From: rnayabed Date: Tue, 13 Apr 2021 00:07:02 +0530 Subject: Added support for setToggleStatus --- Added support for setToggleStatus --- --- 'a/src/main/java/com/stream_pi/server/action/ExternalPlugins.java' +++ b/src/main/java/com/stream_pi/server/action/ExternalPlugins.java @@ -24,6 +24,8 @@ import com.stream_pi.action_api.actionpr import com.stream_pi.action_api.actionproperty.property.Property; import com.stream_pi.action_api.actionproperty.property.Type; import com.stream_pi.action_api.externalplugin.ExternalPlugin; +import com.stream_pi.action_api.externalplugin.ToggleAction; +import com.stream_pi.action_api.externalplugin.ToggleExtras; import com.stream_pi.util.exception.MinorException; import com.stream_pi.util.exception.SevereException; import com.stream_pi.util.exception.StreamPiException; @@ -286,9 +288,12 @@ public class ExternalPlugins { try { - eachPlugin.setPropertySaver(propertySaver); + eachPlugin.setPropertySaver(getPropertySaver()); eachPlugin.setServerConnection(serverConnection); + if(eachPlugin instanceof ToggleAction) + ((ToggleAction) eachPlugin).setToggleExtras(getToggleExtras()); + eachPlugin.initProperties(); @@ -503,6 +508,26 @@ public class ExternalPlugins this.propertySaver = propertySaver; } + public PropertySaver getPropertySaver() + { + return propertySaver; + } + + private ToggleExtras toggleExtras = null; + + /** + * Set PropertySaver class + * @param toggleExtras instance of PropertySaver + */ + public void setToggleExtras(ToggleExtras toggleExtras) + { + this.toggleExtras = toggleExtras; + } + + public ToggleExtras getToggleExtras() { + return toggleExtras; + } + private ServerConnection serverConnection = null; /** --- 'a/src/main/java/com/stream_pi/server/connection/ClientConnection.java' +++ b/src/main/java/com/stream_pi/server/connection/ClientConnection.java @@ -940,6 +940,15 @@ public class ClientConnection extends Th } } + public void setToggleStatus(boolean status, String profileID, String actionID) throws SevereException + { + Message message = new Message("set_toggle_status"); + + message.setStringArrValue(profileID, actionID, status+""); + + sendMessage(message); + } + public void sendActionFailed(String profileID, String actionID) throws SevereException { logger.info("Sending failed status ..."); Message message = new Message("action_failed"); --- 'a/src/main/java/com/stream_pi/server/connection/ClientConnections.java' +++ b/src/main/java/com/stream_pi/server/connection/ClientConnections.java @@ -42,7 +42,7 @@ public class ClientConnections { public void removeConnection(ClientConnection clientConnection) { - System.out.println(connections.remove(clientConnection)+" 22222222222222222222222222222222222222222"); + connections.remove(clientConnection); } public void disconnectAll() --- 'a/src/main/java/com/stream_pi/server/controller/Controller.java' +++ b/src/main/java/com/stream_pi/server/controller/Controller.java @@ -5,8 +5,10 @@ import com.stream_pi.action_api.action.P import com.stream_pi.action_api.action.ServerConnection; import com.stream_pi.action_api.externalplugin.NormalAction; import com.stream_pi.action_api.externalplugin.ToggleAction; +import com.stream_pi.action_api.externalplugin.ToggleExtras; import com.stream_pi.server.Main; import com.stream_pi.server.action.ExternalPlugins; +import com.stream_pi.server.client.Client; import com.stream_pi.server.client.ClientProfile; import com.stream_pi.server.connection.ClientConnection; import com.stream_pi.server.connection.ClientConnections; @@ -22,8 +24,7 @@ import com.stream_pi.server.window.setti import com.stream_pi.util.alert.StreamPiAlert; import com.stream_pi.util.alert.StreamPiAlertListener; import com.stream_pi.util.alert.StreamPiAlertType; -import com.stream_pi.util.exception.MinorException; -import com.stream_pi.util.exception.SevereException; +import com.stream_pi.util.exception.*; import javafx.animation.Animation; import javafx.animation.Interpolator; import javafx.animation.KeyFrame; @@ -49,7 +50,7 @@ import java.util.concurrent.ExecutorServ import java.util.concurrent.Executors; import java.util.logging.Level; -public class Controller extends Base implements PropertySaver, ServerConnection +public class Controller extends Base implements PropertySaver, ServerConnection, ToggleExtras { private ExecutorService executor = Executors.newCachedThreadPool(); private MainServer mainServer; @@ -84,6 +85,8 @@ public class Controller extends Base imp setupSettingsWindowsAnimations(); ExternalPlugins.getInstance().setPropertySaver(this); + ExternalPlugins.getInstance().setToggleExtras(this); + ExternalPlugins.getInstance().setServerConnection(this); @@ -716,4 +719,35 @@ public class Controller extends Base imp }); return closeSettingsTimeline; } + + @Override + public void setToggleStatus(boolean currentStatus, String profileID, String actionID, SocketAddress clientSocketAddress) + throws MinorException + { + + ClientConnection clientConnection = ClientConnections.getInstance().getClientConnectionBySocketAddress( + clientSocketAddress + ); + + if(clientConnection == null) + throw new ClientNotFoundException("setToggleStatus failed because no client found with given socket address"); + + + new Thread(new Task() { + @Override + protected Void call() + { + try + { + clientConnection.setToggleStatus(currentStatus, profileID, actionID); + } + catch (SevereException e) + { + handleSevereException(e); + } + return null; + } + }).start(); + + } }