From e310324ebff14f74a426aca38454ef839619625c Mon Sep 17 00:00:00 2001 From: tobias <tobias@thecodedev.de> Date: Fri, 6 Sep 2019 22:21:00 +0200 Subject: [PATCH] Add playout log delete function --- .../plugin/playout/PlayoutLogPlugin.java | 2 +- .../plugin/playout/log/LogSeasons.java | 4 +++ .../log/storage/LogSeasonStorageHandler.java | 10 ++----- .../SqlLiteLogSeasonStorageHandler.java | 29 +++++++++++++++---- .../PlayoutLogViewController.java | 5 +++- 5 files changed, 36 insertions(+), 14 deletions(-) diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java index 88fb53dc..2b4baeef 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java @@ -38,7 +38,7 @@ public class PlayoutLogPlugin implements PlayPadPluginStub, PluginArtifact { try { LogSeasons.getStorageHandler().close(); - } catch (RuntimeException e) { + } catch (Exception e) { Logger.log(LogLevel.ERROR, "Cannot close LogSeasonStorageHandler (" + e.getLocalizedMessage() + ")"); } } diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java index a3c8c8a3..45a07844 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeasons.java @@ -41,6 +41,10 @@ public class LogSeasons { return getStorageHandler().getAllLogSeasonsLazy(); } + public static void deleteSession(int id) { + getStorageHandler().deleteSession(id); + }; + public static LogSeason getLogSeason(int id) { return getStorageHandler().getLogSeason(id); } diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/storage/LogSeasonStorageHandler.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/storage/LogSeasonStorageHandler.java index 639071c9..b03378b9 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/storage/LogSeasonStorageHandler.java +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/storage/LogSeasonStorageHandler.java @@ -6,7 +6,8 @@ import de.tobias.playpad.plugin.playout.log.PlayOutItem; import java.util.List; -public interface LogSeasonStorageHandler { +public interface LogSeasonStorageHandler extends AutoCloseable { + void addLogSeason(LogSeason season); void addLogItem(LogItem item); @@ -17,10 +18,5 @@ public interface LogSeasonStorageHandler { List<LogSeason> getAllLogSeasonsLazy(); - /** - * Close the storage handler. - * - * @throws RuntimeException fail to close handler (e.g. sql error) - */ - void close(); + void deleteSession(int id); } diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/storage/SqlLiteLogSeasonStorageHandler.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/storage/SqlLiteLogSeasonStorageHandler.java index 49390921..b1659620 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/storage/SqlLiteLogSeasonStorageHandler.java +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/storage/SqlLiteLogSeasonStorageHandler.java @@ -1,6 +1,5 @@ package de.tobias.playpad.plugin.playout.storage; -import de.thecodelabs.logger.LogLevel; import de.thecodelabs.logger.Logger; import de.tobias.playpad.plugin.playout.log.LogItem; import de.tobias.playpad.plugin.playout.log.LogSeason; @@ -51,7 +50,7 @@ public class SqlLiteLogSeasonStorageHandler implements LogSeasonStorageHandler { } } } catch (SQLException e) { - Logger.log(LogLevel.ERROR, e.getLocalizedMessage()); + Logger.error(e); } } @@ -124,7 +123,7 @@ public class SqlLiteLogSeasonStorageHandler implements LogSeasonStorageHandler { } } } catch (SQLException e) { - Logger.log(LogLevel.ERROR, e.getLocalizedMessage()); + Logger.error(e); } return null; } @@ -149,7 +148,7 @@ public class SqlLiteLogSeasonStorageHandler implements LogSeasonStorageHandler { } } } catch (SQLException e) { - Logger.log(LogLevel.ERROR, e.getLocalizedMessage()); + Logger.error(e); } return logItems; } @@ -172,11 +171,31 @@ public class SqlLiteLogSeasonStorageHandler implements LogSeasonStorageHandler { } } } catch (SQLException e) { - Logger.log(LogLevel.ERROR, e.getLocalizedMessage()); + Logger.error(e); } return playOutItems; } + @Override + public void deleteSession(int id) { + try (PreparedStatement deletePlayoutItems = connection.prepareStatement("DELETE FROM PlayOutItem WHERE uuid IN (SELECT uuid FROM LogItem l WHERE l.logSeason = ?)")) { + deletePlayoutItems.setInt(1, id); + deletePlayoutItems.execute(); + + try (PreparedStatement deleteLogItems = connection.prepareStatement("DELETE FROM LogItem WHERE logSeason = ?")) { + deleteLogItems.setInt(1, id); + deleteLogItems.execute(); + } + + try (PreparedStatement deleteLogSeason = connection.prepareStatement("DELETE FROM LogSeason WHERE id = ?")) { + deleteLogSeason.setInt(1, id); + deleteLogSeason.execute(); + } + } catch (SQLException e) { + Logger.error(e); + } + } + @Override public void close() throws RuntimeException { if (connection != null) { diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java index 1d0e1ee4..1c48c973 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/viewcontroller/PlayoutLogViewController.java @@ -140,7 +140,10 @@ public class PlayoutLogViewController extends NVC { @FXML private void deleteButtonHandler(ActionEvent event) { - + getSelectedLogSeason().ifPresent(season -> { // Lazy Season + LogSeasons.deleteSession(season.getId()); + logList.getItems().remove(season); + }); } @FXML -- GitLab