From bd3bfb44ca9c340c2ffed00de86ba77cacac3319 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 8 Oct 2017 12:42:20 +0200
Subject: [PATCH] #200 - added command "delete server log"

---
 .../ui/commandLine/CommandBundle.java         | 16 +++++++---
 .../commandLine/commands/CommandDelete.java   | 19 ++++++++---
 .../ui/controller/Controller.java             |  2 +-
 .../ui/commandLine/_en.properties             |  3 +-
 .../serverconnection/ServerConnection.java    | 18 +++++++++++
 .../server/SparkServer.java                   |  2 ++
 .../server/log/LogDelete.java                 | 32 +++++++++++++++++++
 7 files changed, 81 insertions(+), 11 deletions(-)
 create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java

diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java
index 5600b99d5..5bb9bb62f 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java
@@ -3,14 +3,17 @@ package de.deadlocker8.budgetmasterclient.ui.commandLine;
 import java.text.MessageFormat;
 import java.util.ResourceBundle;
 
+import de.deadlocker8.budgetmaster.logic.Settings;
+
 public class CommandBundle
 {
 	private CommandLineController controller;
-	private ResourceBundle languageBundle;	
+	private ResourceBundle languageBundle;
+	private Settings settings;
 
-	public CommandBundle()
+	public CommandBundle(Settings settings)
 	{
-		
+		this.settings = settings;
 	}
 
 	public CommandLineController getController()
@@ -41,5 +44,10 @@ public class CommandBundle
 	public void setLanguageBundle(ResourceBundle languageBundle)
 	{
 		this.languageBundle = languageBundle;
-	}	
+	}
+
+	public Settings getSettings()
+	{
+		return settings;
+	}
 }
\ No newline at end of file
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java
index c160bb382..0b00a1d82 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java
@@ -1,5 +1,6 @@
 package de.deadlocker8.budgetmasterclient.ui.commandLine.commands;
 
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle;
 import logger.Logger;
 
@@ -22,17 +23,25 @@ public class CommandDelete extends Command
 		}
 		
 		if(command[1].equals("log-client"))
-		{
+		{			
 			Logger.clearLogFile();
-			bundle.getController().print(bundle.getString("delete.success", "log-client", Logger.getFolder()));
+			bundle.getController().print(bundle.getString("delete.success", "client logfile"));
 			return;
 		}
 		
 		if(command[1].equals("log-server"))
 		{
-			//TODO
-//			Logger.clearLogFile();
-//			bundle.getController().print(bundle.getString("delete.success", "log-server", Logger.getFolder()));
+			try
+			{
+				ServerConnection connection = new ServerConnection(bundle.getSettings());
+				connection.deleteLog();
+				bundle.getController().print(bundle.getString("delete.success", "server logfile"));
+			}
+			catch(Exception e)
+			{
+				bundle.getController().print(bundle.getString("delete.error.connection"));
+			}
+			
 			return;
 		}
 			
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
index d21c15085..ed1bb60f3 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
@@ -131,7 +131,7 @@ public class Controller extends BaseController
 		paymentHandler = new PaymentHandler();
 		updater = new Updater();
 		
-		CommandBundle commandBundle = new CommandBundle();
+		CommandBundle commandBundle = new CommandBundle(settings);
 		cmd = new CommandLine(getStage(), icon, ResourceBundle.getBundle("de/deadlocker8/budgetmaster/ui/commandLine/", Locale.ENGLISH), commandBundle);
 		
 		if(settings.isAutoUpdateCheckEnabled())
diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties
index c88d1ad9a..314ada7b0 100644
--- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties
+++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties
@@ -17,4 +17,5 @@ open.success=Successfully opened folder {0}
 
 # delete
 help.delete=delte - deletes files\nSYNTAX: delete [PARAMETER]\npossible parameters:\nlog-client\nlog-server
-delete.success=Successfully deleted {0} (in folder: {1})
+delete.success=Successfully deleted {0}
+delete.error.connection=An error occurred while establishing the server connection
diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
index 86191f4c1..e04ab2d77 100644
--- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
+++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
@@ -579,5 +579,23 @@ public class ServerConnection
 		{
 			throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode()));
 		}
+	}	
+	
+	public void deleteLog() throws Exception
+	{
+		URL url = new URL(settings.getUrl() + "/log?secret=" + Helpers.getURLEncodedString(settings.getSecret()));
+		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
+		httpsCon.setRequestMethod("DELETE");
+		httpsCon.setDoInput(true);
+		if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK)
+		{
+			InputStream stream = httpsCon.getInputStream();
+			BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+			reader.close();
+		}
+		else
+		{
+			throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode()));
+		}		
 	}
 }
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java
index 72558d5da..3272b8046 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java
@@ -33,6 +33,7 @@ import de.deadlocker8.budgetmasterserver.server.charts.MonthInOutSum;
 import de.deadlocker8.budgetmasterserver.server.database.DatabaseDelete;
 import de.deadlocker8.budgetmasterserver.server.database.DatabaseExport;
 import de.deadlocker8.budgetmasterserver.server.database.DatabaseImport;
+import de.deadlocker8.budgetmasterserver.server.log.LogDelete;
 import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentAdd;
 import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentDelete;
 import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentGet;
@@ -167,6 +168,7 @@ public class SparkServer
 		delete("/database", new DatabaseDelete(handler, settings));
 		
 		get("/version", new VersionGet(gson, versionInfo));
+		delete("/log", new LogDelete());
 
 		after((request, response) -> {
 			new RepeatingPaymentUpdater(handler).updateRepeatingPayments(DateTime.now());
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java
new file mode 100644
index 000000000..366973c54
--- /dev/null
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java
@@ -0,0 +1,32 @@
+package de.deadlocker8.budgetmasterserver.server.log;
+
+import static spark.Spark.halt;
+
+import logger.Logger;
+import spark.Request;
+import spark.Response;
+import spark.Route;
+
+public class LogDelete implements Route
+{
+	public LogDelete()
+	{	
+	
+	}
+
+	@Override
+	public Object handle(Request req, Response res) throws Exception
+	{		
+		try
+		{							
+			Logger.clearLogFile();	
+			return "";
+		}
+		catch(IllegalStateException ex)
+		{
+			halt(500, "Internal Server Error");
+		}
+		
+		return "";
+	}
+}
\ No newline at end of file
-- 
GitLab