From 79633f53c636ba24ace0611e19c7603cac6d220e Mon Sep 17 00:00:00 2001 From: SofianeLasri <alasri250@gmail.com> Date: Sat, 10 Sep 2022 21:28:02 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'une=20interface=20pour=20la?= =?UTF-8?q?=20cr=C3=A9ation=20de=20classes=20de=20type=20Data=20Handler,?= =?UTF-8?q?=20cr=C3=A9ation=20de=20la=20classe=20PlayedTimeHandler=20et=20?= =?UTF-8?q?d=C3=A9placement=20de=20son=20code=20dans=20cette=20derni=C3=A8?= =?UTF-8?q?re=20anciennement=20pr=C3=A9sent=20dans=20=20PlayerDataHandler.?= =?UTF-8?q?=20Reformattage=20du=20code.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/slprojects/slcraftplugin/Main.java | 7 ++- .../commands/admins/WildReset.java | 1 - .../dataHandlers/PlayedTimeHandler.java | 53 +++++++++++++++++++ .../{ => dataHandlers}/PlayerDataHandler.java | 49 +++++++---------- .../dataHandlers/dataHandler.java | 9 ++++ .../parallelTasks/events/GeneralEvents.java | 4 ++ .../{ => events}/PeriodicEvent.java | 7 ++- .../slcraftplugin/utils/Database.java | 14 ++--- 8 files changed, 98 insertions(+), 46 deletions(-) create mode 100644 src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java rename src/main/java/com/slprojects/slcraftplugin/parallelTasks/{ => dataHandlers}/PlayerDataHandler.java (90%) create mode 100644 src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/dataHandler.java create mode 100644 src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java rename src/main/java/com/slprojects/slcraftplugin/parallelTasks/{ => events}/PeriodicEvent.java (90%) diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java index 98c00f3..9e18ac2 100644 --- a/src/main/java/com/slprojects/slcraftplugin/Main.java +++ b/src/main/java/com/slprojects/slcraftplugin/Main.java @@ -4,8 +4,8 @@ import com.slprojects.slcraftplugin.commands.admins.WildReset; import com.slprojects.slcraftplugin.commands.publics.LinkCode; import com.slprojects.slcraftplugin.commands.publics.Wild; import com.slprojects.slcraftplugin.parallelTasks.InternalWebServer; -import com.slprojects.slcraftplugin.parallelTasks.PeriodicEvent; -import com.slprojects.slcraftplugin.parallelTasks.PlayerDataHandler; +import com.slprojects.slcraftplugin.parallelTasks.events.PeriodicEvent; +import com.slprojects.slcraftplugin.parallelTasks.dataHandlers.PlayerDataHandler; import com.slprojects.slcraftplugin.utils.ConsoleLog; import me.clip.placeholderapi.PlaceholderAPI; import net.luckperms.api.LuckPerms; @@ -13,7 +13,6 @@ import net.luckperms.api.cacheddata.CachedMetaData; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Sound; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; @@ -350,7 +349,7 @@ public final class Main extends JavaPlugin implements Listener { ps.executeQuery(); con.close(); } catch (Exception e) { -ConsoleLog.danger("Erreur lors de l'exécution de initDatabase(): " + e); + ConsoleLog.danger("Erreur lors de l'exécution de initDatabase(): " + e); } } } diff --git a/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java b/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java index 869292d..677fffd 100644 --- a/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java +++ b/src/main/java/com/slprojects/slcraftplugin/commands/admins/WildReset.java @@ -2,7 +2,6 @@ package com.slprojects.slcraftplugin.commands.admins; import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.utils.ConsoleLog; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java new file mode 100644 index 0000000..ccabc51 --- /dev/null +++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayedTimeHandler.java @@ -0,0 +1,53 @@ +package com.slprojects.slcraftplugin.parallelTasks.dataHandlers; + +import com.slprojects.slcraftplugin.Main; +import com.slprojects.slcraftplugin.utils.Database; +import org.bukkit.entity.Player; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class PlayedTimeHandler implements dataHandler { + private final Main plugin; + private final List<UUID> usersIndexes; + private final List<LocalDateTime> userSessionJoinDateTime; + private final List<Long> userStoredPlayedTimeBeforeJoining; + + public PlayedTimeHandler(Main plugin) { + this.plugin = plugin; + usersIndexes = new ArrayList<>(); + userSessionJoinDateTime = new ArrayList<>(); + userStoredPlayedTimeBeforeJoining = new ArrayList<>(); + } + + @Override + public void joinEvent(Player player) { + usersIndexes.add(player.getUniqueId()); + userSessionJoinDateTime.add(LocalDateTime.now()); + + if (plugin.playerDataHandler.playerAlreadyJoined(player)) { + userStoredPlayedTimeBeforeJoining.add(Long.valueOf(Database.getUserSetting(player.getUniqueId().toString(), "playedTime"))); + } else { + userStoredPlayedTimeBeforeJoining.add(0L); + } + } + + @Override + public void quitEvent(Player player) { + savePlayedTime(player); // On actualise le temps de jeu du joueur + } + + public void savePlayedTime(Player player) { + // On va calculer le temps de jeu du joueur + UUID playerUuid = player.getUniqueId(); + LocalDateTime timeNow = LocalDateTime.now(); + Duration duration = Duration.between(timeNow, userSessionJoinDateTime.get(usersIndexes.indexOf(playerUuid))); + long playedTimeInSeconds = Math.abs(duration.toSeconds()); + long actualPlayedTime = userStoredPlayedTimeBeforeJoining.get(usersIndexes.indexOf(playerUuid)) + playedTimeInSeconds; + + Database.setUserSetting(playerUuid.toString(), "playedTime", String.valueOf(actualPlayedTime)); + } +} diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PlayerDataHandler.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayerDataHandler.java similarity index 90% rename from src/main/java/com/slprojects/slcraftplugin/parallelTasks/PlayerDataHandler.java rename to src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayerDataHandler.java index 42a2e4f..f54650e 100644 --- a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PlayerDataHandler.java +++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/PlayerDataHandler.java @@ -1,14 +1,12 @@ -package com.slprojects.slcraftplugin.parallelTasks; +package com.slprojects.slcraftplugin.parallelTasks.dataHandlers; import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.utils.ConsoleLog; -import com.slprojects.slcraftplugin.utils.Database; import org.bukkit.ChatColor; import org.bukkit.Statistic; import org.bukkit.entity.Player; import java.sql.*; -import java.time.Duration; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; @@ -17,39 +15,34 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -public class PlayerDataHandler { +public class PlayerDataHandler implements dataHandler { private final Main plugin; private Connection con; // Playtime - private final List<UUID> playTimeUsersIndexes; - private final List<LocalDateTime> userSessionJoinDateTime; - private final List<Long> userStoredPlayedTimeBeforeJoining; + public final PlayedTimeHandler playedTimeHandler; + private final List<UUID> playerIndexes; + private final List<Boolean> playerAlreadyJoined; public PlayerDataHandler(Main plugin) { this.plugin = plugin; - playTimeUsersIndexes = new ArrayList<>(); - userSessionJoinDateTime = new ArrayList<>(); - userStoredPlayedTimeBeforeJoining = new ArrayList<>(); + this.playedTimeHandler = new PlayedTimeHandler(plugin); + playerIndexes = new ArrayList<>(); + playerAlreadyJoined = new ArrayList<>(); } + @Override public void joinEvent(Player player) { // On ouvre la bdd con = plugin.bddOpenConn(); - playTimeUsersIndexes.add(player.getUniqueId()); - userSessionJoinDateTime.add(LocalDateTime.now()); - - boolean playerAlreadyJoinded = insertPlayerName(player); // On check si le nom du joueur est déjà enregistré + playerIndexes.add(player.getUniqueId()); + playerAlreadyJoined.add(insertPlayerName(player)); // On check si le nom du joueur est déjà enregistré statsPlayerEntryExit(player, true); // On ajoute son entée checkPlayerJoinedDate(player); // On check si on dipose de sa date de rejoint setPlayerJoinCount(player); // On set le nombre de fois qu'il a rejoint plugin.wildCommand.setPlayerStats(player, getPlayerWildCmdStats(player)); - if(playerAlreadyJoinded){ - userStoredPlayedTimeBeforeJoining.add(Long.valueOf(Database.getUserSetting(player.getUniqueId().toString(), "playedTime"))); - }else{ - userStoredPlayedTimeBeforeJoining.add(0L); - } + playedTimeHandler.joinEvent(player); // On ferme la bdd try { @@ -60,11 +53,12 @@ public class PlayerDataHandler { } } + @Override public void quitEvent(Player player) { // On ouvre la bdd con = plugin.bddOpenConn(); - savePlayedTime(player); // On actualise le temps de jeu du joueur + playedTimeHandler.quitEvent(player); statsPlayerEntryExit(player, false); // On ajoute son sortie savePlayerWildCmdStats(player, plugin.wildCommand.getPlayerStats(player)); @@ -207,17 +201,6 @@ public class PlayerDataHandler { } } - public void savePlayedTime(Player player) { - // On va calculer le temps de jeu du joueur - UUID playerUuid = player.getUniqueId(); - LocalDateTime timeNow = LocalDateTime.now(); - Duration duration = Duration.between(timeNow, userSessionJoinDateTime.get(playTimeUsersIndexes.indexOf(playerUuid))); - long playedTimeInSeconds = Math.abs(duration.toSeconds()); - long actualPlayedTime = userStoredPlayedTimeBeforeJoining.get(playTimeUsersIndexes.indexOf(playerUuid)) + playedTimeInSeconds; - - Database.setUserSetting(playerUuid.toString(), "playedTime", String.valueOf(actualPlayedTime)); - } - private List<Object> getPlayerWildCmdStats(Player player) { // Indexes: // - 0: Nombre d'utilisation du jour @@ -324,4 +307,8 @@ public class PlayerDataHandler { e.printStackTrace(); } } + + public boolean playerAlreadyJoined(Player player) { + return playerAlreadyJoined.get(playerIndexes.indexOf(player.getUniqueId())); + } } diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/dataHandler.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/dataHandler.java new file mode 100644 index 0000000..18fbe2c --- /dev/null +++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/dataHandlers/dataHandler.java @@ -0,0 +1,9 @@ +package com.slprojects.slcraftplugin.parallelTasks.dataHandlers; + +import org.bukkit.entity.Player; + +public interface dataHandler { + void joinEvent(Player player); + + void quitEvent(Player player); +} diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java new file mode 100644 index 0000000..a8c77f9 --- /dev/null +++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/GeneralEvents.java @@ -0,0 +1,4 @@ +package com.slprojects.slcraftplugin.parallelTasks.events; + +public class GeneralEvents { +} diff --git a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PeriodicEvent.java b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/PeriodicEvent.java similarity index 90% rename from src/main/java/com/slprojects/slcraftplugin/parallelTasks/PeriodicEvent.java rename to src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/PeriodicEvent.java index 4fabf4c..006d155 100644 --- a/src/main/java/com/slprojects/slcraftplugin/parallelTasks/PeriodicEvent.java +++ b/src/main/java/com/slprojects/slcraftplugin/parallelTasks/events/PeriodicEvent.java @@ -1,8 +1,7 @@ -package com.slprojects.slcraftplugin.parallelTasks; +package com.slprojects.slcraftplugin.parallelTasks.events; import com.slprojects.slcraftplugin.Main; import com.slprojects.slcraftplugin.utils.ConsoleLog; -import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @@ -32,8 +31,8 @@ public class PeriodicEvent { } private void periodicEvent() { - for (Player player : plugin.getServer().getOnlinePlayers()){ - plugin.playerDataHandler.savePlayedTime(player); + for (Player player : plugin.getServer().getOnlinePlayers()) { + plugin.playerDataHandler.playedTimeHandler.savePlayedTime(player); } ConsoleLog.warning("[SL-Craft] Évènement périodique éxecuté."); diff --git a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java index 1fa988e..54aee61 100644 --- a/src/main/java/com/slprojects/slcraftplugin/utils/Database.java +++ b/src/main/java/com/slprojects/slcraftplugin/utils/Database.java @@ -11,8 +11,10 @@ import java.sql.SQLException; import static org.bukkit.Bukkit.getServer; +@SuppressWarnings("UnusedReturnValue") public class Database { static final private String userSettingsTabName = "site_userSetting"; + public static String getUserSetting(String uuid, String key) { Connection con = bddOpenConn(); String returnValue = null; @@ -23,7 +25,7 @@ public class Database { query.setString(2, key); ResultSet resultat = query.executeQuery(); - if(resultat.next()){ + if (resultat.next()) { returnValue = resultat.getString("value"); } } catch (SQLException e) { @@ -40,20 +42,20 @@ public class Database { return returnValue; } - public static boolean setUserSetting(String uuid, String key, String value){ + public static boolean setUserSetting(String uuid, String key, String value) { Connection con = bddOpenConn(); boolean isOperationASuccess = false; boolean isEntryExists = (getUserSetting(uuid, key) != null); try { - if(isEntryExists){ + if (isEntryExists) { PreparedStatement updateEntry = con.prepareStatement("UPDATE site_userSetting SET value = ? WHERE uuid = ? AND name = ?"); updateEntry.setString(1, value); updateEntry.setString(2, uuid); updateEntry.setString(3, key); updateEntry.executeUpdate(); isOperationASuccess = true; - }else{ + } else { isOperationASuccess = insertUserSettingEntry(uuid, key, value); } } catch (SQLException e) { @@ -70,8 +72,8 @@ public class Database { return isOperationASuccess; } - - private static boolean insertUserSettingEntry(String uuid, String key, String value){ + + private static boolean insertUserSettingEntry(String uuid, String key, String value) { Connection con = bddOpenConn(); boolean isOperationASuccess = false; -- GitLab