server

Clone or download

Refactored, Added factory reset

Modified Files

--- 'a/src/main/java/com/stream_pi/server/connection/ClientConnection.java'
+++ b/src/main/java/com/stream_pi/server/connection/ClientConnection.java
@@ -8,17 +8,15 @@ 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.NormalAction;
-import com.stream_pi.action_api.externalplugin.ToggleAction;
import com.stream_pi.action_api.otheractions.CombineAction;
import com.stream_pi.action_api.otheractions.FolderAction;
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.client.ClientTheme;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.info.ServerInfo;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
-import com.stream_pi.server.window.dashboard.actiongridpane.ActionBox;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.alert.StreamPiAlertType;
import com.stream_pi.util.comms.Message;
@@ -29,7 +27,6 @@ import com.stream_pi.util.platform.Platf
import com.stream_pi.util.platform.ReleaseStatus;
import com.stream_pi.util.version.Version;
import javafx.concurrent.Task;
-import javafx.scene.control.Toggle;
import java.io.*;
import java.net.Socket;
--- 'a/src/main/java/com/stream_pi/server/connection/MainServer.java'
+++ b/src/main/java/com/stream_pi/server/connection/MainServer.java
@@ -1,5 +1,6 @@
package com.stream_pi.server.connection;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.exception.SevereException;
--- 'a/src/main/java/com/stream_pi/server/connection/ServerListener.java'
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.stream_pi.server.connection;
-
-import com.stream_pi.action_api.externalplugin.NormalAction;
-import com.stream_pi.action_api.externalplugin.ToggleAction;
-import com.stream_pi.server.client.Client;
-import com.stream_pi.server.window.dashboard.ClientAndProfileSelectorPane;
-import com.stream_pi.server.window.dashboard.DashboardBase;
-import com.stream_pi.server.window.settings.SettingsBase;
-import com.stream_pi.util.exception.SevereException;
-import javafx.stage.Stage;
-
-import java.net.SocketAddress;
-
-public interface ServerListener
-{
- void onActionClicked(Client client, String profileID, String actionID, boolean toggle);
-
- void clearTemp();
-
- void init();
-
- void restart();
-
- void othInit();
-
- Stage getStage();
-
- DashboardBase getDashboardBase();
- SettingsBase getSettingsBase();
-
- void initLogger() throws SevereException;
-}
--- 'a/src/main/java/com/stream_pi/server/controller/Controller.java'
+++ b/src/main/java/com/stream_pi/server/controller/Controller.java
@@ -27,6 +27,7 @@ import com.stream_pi.util.alert.StreamPi
import com.stream_pi.util.alert.StreamPiAlertListener;
import com.stream_pi.util.alert.StreamPiAlertType;
import com.stream_pi.util.exception.*;
+import com.stream_pi.util.iohelper.IOHelper;
import javafx.animation.Animation;
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
@@ -59,7 +60,7 @@ import java.util.logging.Level;
public class Controller extends Base implements PropertySaver, ServerConnection, ToggleExtras
{
- private ExecutorService executor = Executors.newCachedThreadPool();
+ private final ExecutorService executor = Executors.newCachedThreadPool();
private MainServer mainServer;
private Animation openSettingsAnimation;
private Animation closeSettingsAnimation;
@@ -86,7 +87,6 @@ public class Controller extends Base imp
{
try
{
-
initBase();
setupDashWindow();
@@ -206,6 +206,26 @@ public class Controller extends Base imp
});
}
+ @Override
+ public void factoryReset()
+ {
+ getLogger().info("Reset to factory ...");
+
+ onQuitApp();
+
+ boolean result = IOHelper.deleteFile(getServerInfo().getPrePath());
+
+ if(result)
+ {
+ getStage().close();
+ init();
+ }
+ else
+ {
+ handleSevereException(new SevereException("Unable to delete all files successfully. Installation corrupt. Re-install."));
+ }
+ }
+
private void setupSettingsWindowsAnimations()
{
Node settingsNode = getSettingsBase();
@@ -228,8 +248,7 @@ public class Controller extends Base imp
}
onQuitApp();
- ExternalPlugins.getInstance().shutDownActions();
- Platform.exit();
+ exit();
}
catch (SevereException e)
{
@@ -243,6 +262,8 @@ public class Controller extends Base imp
public void onQuitApp()
{
+ getLogger().info("Shutting down ...");
+
try
{
if(getConfig() != null)
@@ -260,8 +281,14 @@ public class Controller extends Base imp
stopServerAndAllConnections();
executor.shutdown();
- getLogger().info("Shutting down ...");
+ ExternalPlugins.getInstance().shutDownActions();
closeLogger();
+ Config.nullify();
+ }
+
+ public void exit()
+ {
+ Platform.exit();
}
private void stopServerAndAllConnections()
@@ -314,7 +341,7 @@ public class Controller extends Base imp
exitItem.addActionListener(l->{
systemTray.remove(getTrayIcon());
onQuitApp();
- Platform.exit();
+ exit();
});
popup.add(exitItem);
@@ -367,7 +394,7 @@ public class Controller extends Base imp
public void onClick(String txt)
{
onQuitApp();
- Platform.exit();
+ exit();
}
});
--- /dev/null
+++ b/src/main/java/com/stream_pi/server/controller/ServerListener.java
@@ -0,0 +1,34 @@
+package com.stream_pi.server.controller;
+
+import com.stream_pi.action_api.externalplugin.NormalAction;
+import com.stream_pi.action_api.externalplugin.ToggleAction;
+import com.stream_pi.server.client.Client;
+import com.stream_pi.server.window.dashboard.ClientAndProfileSelectorPane;
+import com.stream_pi.server.window.dashboard.DashboardBase;
+import com.stream_pi.server.window.settings.SettingsBase;
+import com.stream_pi.util.exception.SevereException;
+import javafx.stage.Stage;
+
+import java.net.SocketAddress;
+
+public interface ServerListener
+{
+ void onActionClicked(Client client, String profileID, String actionID, boolean toggle);
+
+ void clearTemp();
+
+ void init();
+
+ void restart();
+
+ void othInit();
+
+ Stage getStage();
+
+ DashboardBase getDashboardBase();
+ SettingsBase getSettingsBase();
+
+ void initLogger() throws SevereException;
+
+ void factoryReset();
+}
--- 'a/src/main/java/com/stream_pi/server/io/Config.java'
+++ b/src/main/java/com/stream_pi/server/io/Config.java
@@ -61,6 +61,11 @@ public class Config
return instance;
}
+ public static void nullify()
+ {
+ instance = null;
+ }
+
Logger logger = Logger.getLogger(Config.class.getName());
public void save() throws SevereException {
--- 'a/src/main/java/com/stream_pi/server/window/Base.java'
+++ b/src/main/java/com/stream_pi/server/window/Base.java
@@ -1,6 +1,6 @@
package com.stream_pi.server.window;
-import com.stream_pi.server.connection.ServerListener;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.io.Config;
import com.stream_pi.server.info.ServerInfo;
import com.stream_pi.server.Main;
@@ -11,25 +11,22 @@ import com.stream_pi.theme_api.Themes;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.exception.SevereException;
-import com.stream_pi.util.iohelper.IOHelper;
import com.stream_pi.util.loggerhelper.StreamPiLogFallbackHandler;
import com.stream_pi.util.loggerhelper.StreamPiLogFileHandler;
import com.stream_pi.util.platform.Platform;
import javafx.application.HostServices;
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
-import java.awt.*;
import java.io.File;
import java.util.Objects;
import java.util.logging.Logger;
-public abstract class Base extends StackPane implements ExceptionAndAlertHandler, ServerListener {
+public abstract class Base extends StackPane implements ExceptionAndAlertHandler, ServerListener
+{
private Config config;
private ServerInfo serverInfo;
--- 'a/src/main/java/com/stream_pi/server/window/firsttimeuse/FinalConfigPane.java'
+++ b/src/main/java/com/stream_pi/server/window/firsttimeuse/FinalConfigPane.java
@@ -1,20 +1,16 @@
package com.stream_pi.server.window.firsttimeuse;
-import com.stream_pi.server.connection.ServerListener;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.io.Config;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.util.exception.SevereException;
import com.stream_pi.util.uihelper.HBoxInputBox;
-import com.stream_pi.util.uihelper.SpaceFiller;
-import javafx.geometry.Pos;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Alert.AlertType;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
--- 'a/src/main/java/com/stream_pi/server/window/firsttimeuse/FirstTimeUse.java'
+++ b/src/main/java/com/stream_pi/server/window/firsttimeuse/FirstTimeUse.java
@@ -1,7 +1,7 @@
package com.stream_pi.server.window.firsttimeuse;
import com.stream_pi.server.Main;
-import com.stream_pi.server.connection.ServerListener;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.util.uihelper.SpaceFiller;
--- 'a/src/main/java/com/stream_pi/server/window/settings/ClientsSettings.java'
+++ b/src/main/java/com/stream_pi/server/window/settings/ClientsSettings.java
@@ -5,7 +5,7 @@ import com.stream_pi.server.client.Clien
import com.stream_pi.server.client.ClientTheme;
import com.stream_pi.server.connection.ClientConnection;
import com.stream_pi.server.connection.ClientConnections;
-import com.stream_pi.server.connection.ServerListener;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.exception.SevereException;
--- 'a/src/main/java/com/stream_pi/server/window/settings/GeneralSettings.java'
+++ b/src/main/java/com/stream_pi/server/window/settings/GeneralSettings.java
@@ -1,12 +1,11 @@
package com.stream_pi.server.window.settings;
-import com.stream_pi.server.connection.ServerListener;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.info.StartupFlags;
import com.stream_pi.server.io.Config;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.server.info.ServerInfo;
-import com.stream_pi.theme_api.Themes;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.alert.StreamPiAlertListener;
import com.stream_pi.util.alert.StreamPiAlertType;
@@ -17,17 +16,14 @@ import com.stream_pi.util.exception.Seve
import com.stream_pi.util.platform.PlatformType;
import com.stream_pi.util.startatboot.StartAtBoot;
import com.stream_pi.util.uihelper.HBoxWithSpaceBetween;
-import com.stream_pi.util.version.Version;
import javafx.application.HostServices;
import javafx.application.Platform;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
-import javafx.scene.control.*;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
-import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.*;
import javafx.stage.DirectoryChooser;
@@ -35,10 +31,7 @@ import org.controlsfx.control.ToggleSwit
import org.kordamp.ikonli.javafx.FontIcon;
import java.awt.SystemTray;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.InputStreamReader;
-import java.net.URL;
import java.util.logging.Logger;
public class GeneralSettings extends VBox {
@@ -57,6 +50,7 @@ public class GeneralSettings extends VBo
private final HBoxWithSpaceBetween showAlertsPopupHBox;
private final Button saveButton;
private final Button checkForUpdatesButton;
+ private final Button factoryResetButton;
private Logger logger;
@@ -101,6 +95,9 @@ public class GeneralSettings extends VBo
checkForUpdatesButton = new Button("Check for updates");
checkForUpdatesButton.setOnAction(event->checkForUpdates());
+ factoryResetButton = new Button("Factory Reset");
+ factoryResetButton.setOnAction(actionEvent -> onFactoryResetButtonClicked());
+
getStyleClass().add("general_settings");
prefWidthProperty().bind(widthProperty());
@@ -124,7 +121,7 @@ public class GeneralSettings extends VBo
saveButton = new Button("Save");
saveButton.setOnAction(event->save());
- getChildren().addAll(checkForUpdatesButton, saveButton);
+ getChildren().addAll(factoryResetButton, checkForUpdatesButton, saveButton);
setPadding(new Insets(10));
@@ -431,4 +428,27 @@ public class GeneralSettings extends VBo
}
}).start();
}
+
+ private void onFactoryResetButtonClicked()
+ {
+ StreamPiAlert confirmation = new StreamPiAlert("Warning","Are you sure?\n" +
+ "This will erase everything.",StreamPiAlertType.WARNING);
+
+ String yesButton = "Yes";
+ String noButton = "No";
+
+ confirmation.setButtons(yesButton, noButton);
+
+ confirmation.setOnClicked(new StreamPiAlertListener() {
+ @Override
+ public void onClick(String s) {
+ if(s.equals(yesButton))
+ {
+ serverListener.factoryReset();
+ }
+ }
+ });
+
+ confirmation.show();
+ }
}
--- 'a/src/main/java/com/stream_pi/server/window/settings/PluginsSettings.java'
+++ b/src/main/java/com/stream_pi/server/window/settings/PluginsSettings.java
@@ -5,9 +5,8 @@ import com.stream_pi.server.uipropertybo
import com.stream_pi.action_api.actionproperty.property.ControlType;
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.NormalAction;
import com.stream_pi.server.action.ExternalPlugins;
-import com.stream_pi.server.connection.ServerListener;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.uihelper.SpaceFiller;
--- 'a/src/main/java/com/stream_pi/server/window/settings/SettingsBase.java'
+++ b/src/main/java/com/stream_pi/server/window/settings/SettingsBase.java
@@ -1,6 +1,6 @@
package com.stream_pi.server.window.settings;
-import com.stream_pi.server.connection.ServerListener;
+import com.stream_pi.server.controller.ServerListener;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.server.window.settings.About.About;
import javafx.application.HostServices;