diff --git a/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java b/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java index 9380be1..e012240 100644 --- a/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java @@ -4,77 +4,192 @@ import de.fanta.challengesjoinentities.ChatUtil; import de.fanta.challengesjoinentities.Server; import de.fanta.challengesjoinentities.utils.guiutils.GUIUtils; -import net.md_5.bungee.api.ChatColor; +import de.iani.cubesideutils.StringUtil; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; public class AdventureLoadGUI implements Listener { private static final ChallengesJoinEntities plugin = ChallengesJoinEntities.getPlugin(); private static final int SAVE_1_INDEX = 1; - private static final int AUTOSAVE_INDEX = 3; + private static final int SAVE_2_INDEX = 3; + private static final int SAVE_3_INDEX = 5; + private static final int SAVE_AUTO_INDEX = 7; - public static final int INVENTORY_SIZE = 5; - public static final Inventory RESET_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, ChallengesJoinEntities.ADVENTUREGUIPREFIX + " >> AdventureMap laden"); + + public static final Inventory CHALLENGE_LOAD_GUI = Bukkit.createInventory(null, 9, ChallengesJoinEntities.ADVENTUREGUIPREFIX + " >> Map laden"); + public static final int INVENTORY_SIZE = CHALLENGE_LOAD_GUI.getSize(); + public static void createloadGUI(Player p) { - File adventuresave = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/1"); - File adventureautosave = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/autosave"); + File adventureSave1 = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/1"); + File adventureSave2 = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/2"); + File adventureSave3 = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/3"); + File adventureSaveAuto = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/autosave"); - if (adventuresave.isDirectory()) { - RESET_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 1", ChatColor.GREEN + "Klicken zum laden.")); + if (p.hasPermission("challenge.save.slot1")) { + if (adventureSave1.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 1", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(adventureSave1))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei")); + } } else { - RESET_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte")); } - if (adventureautosave.isDirectory()) { - RESET_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatColor.GREEN + "Klicken zum laden.")); + if (p.hasPermission("challenge.save.slot2")) { + if (adventureSave2.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 2", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(adventureSave2))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei")); + } } else { - RESET_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP")); + } + + + if (p.hasPermission("challenge.save.slot3")) { + if (adventureSave3.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 3", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(adventureSave3))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei")); + } + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP")); + } + + if (p.hasPermission("challenge.save.slotauto")) { + if (adventureSaveAuto.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_AUTO_INDEX, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(adventureSaveAuto))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_AUTO_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "AutoSave")); + } + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_AUTO_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte")); } for (int i = 0; i < INVENTORY_SIZE; i++) { - ItemStack item = RESET_GUI.getItem(i); + ItemStack item = CHALLENGE_LOAD_GUI.getItem(i); if (item == null || item.getType() == Material.AIR) { - RESET_GUI.setItem(i, GUIUtils.EMPTY_ICON); + CHALLENGE_LOAD_GUI.setItem(i, GUIUtils.EMPTY_ICON); } } - p.openInventory(RESET_GUI); + p.openInventory(CHALLENGE_LOAD_GUI); } @EventHandler public void onInventoryClick(InventoryClickEvent e) { int slot = e.getRawSlot(); Player p = (Player) e.getWhoClicked(); - if (RESET_GUI.equals(e.getClickedInventory())) { + File adventureSave1 = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/1"); + File adventureSave2 = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/2"); + File adventureSave3 = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/3"); + File adventureSaveAuto = new File("/home/minecraft/Adventure-saves/" + p.getUniqueId() + "/autosave"); + if (CHALLENGE_LOAD_GUI.equals(e.getClickedInventory())) { if (slot == SAVE_1_INDEX) { + if (!p.hasPermission("challenge.save.slot1")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot hast du keine Rechte!"); + return; + } + if (!adventureSave1.isDirectory()) { + e.setCancelled(true); + return; + } if (!Server.serverPlayers.containsValue(p.getUniqueId())) { p.closeInventory(); plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, "1"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); } } - if (slot == AUTOSAVE_INDEX) { + if (slot == SAVE_2_INDEX) { + if (!p.hasPermission("challenge.save.slot2")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot brauchst du VIP!"); + return; + } + if (!adventureSave2.isDirectory()) { + e.setCancelled(true); + return; + } + if (!Server.serverPlayers.containsValue(p.getUniqueId())) { + e.setCancelled(true); + p.closeInventory(); + plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, "2"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); + } else { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); + } + } + if (slot == SAVE_3_INDEX) { + if (!p.hasPermission("challenge.save.slot3")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot brauchst du VIP!"); + return; + } + if (!adventureSave3.isDirectory()) { + e.setCancelled(true); + return; + } + if (!Server.serverPlayers.containsValue(p.getUniqueId())) { + p.closeInventory(); + plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, "3"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); + } else { + ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); + } + } + + if (slot == SAVE_AUTO_INDEX) { + if (!p.hasPermission("challenge.save.slotauto")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot hast du keine Rechte!"); + return; + } + if (!adventureSaveAuto.isDirectory()) { + e.setCancelled(true); + return; + } if (!Server.serverPlayers.containsValue(p.getUniqueId())) { p.closeInventory(); plugin.getPluginConfig().getOnlineAdventureServer().ifPresentOrElse(server -> server.loadSaved(p, "autosave"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); } } - p.closeInventory(); e.setCancelled(true); } } + + private static String getFileDate(File file) { + FileTime fileTime; + try { + BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class); + fileTime = attr.creationTime(); + } catch (IOException e) { + throw new RuntimeException(e); + } + return StringUtil.formatDate(fileTime.toMillis()); + } } diff --git a/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java b/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java index 598d94e..c065a33 100644 --- a/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java @@ -4,7 +4,7 @@ import de.fanta.challengesjoinentities.ChatUtil; import de.fanta.challengesjoinentities.Server; import de.fanta.challengesjoinentities.utils.guiutils.GUIUtils; -import net.md_5.bungee.api.ChatColor; +import de.iani.cubesideutils.StringUtil; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -15,6 +15,10 @@ import org.bukkit.inventory.ItemStack; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; public class ChallengeLoadGUI implements Listener { @@ -23,39 +27,58 @@ private static final int SAVE_1_INDEX = 1; private static final int SAVE_2_INDEX = 3; private static final int SAVE_3_INDEX = 5; - private static final int AUTOSAVE_INDEX = 7; + private static final int SAVE_AUTO_INDEX = 7; - public static final Inventory CHALLENGE_LOAD_GUI = Bukkit.createInventory(null, 9, ChallengesJoinEntities.CHALLENGEGUIPREFIX + " >> Challenge laden"); + public static final Inventory CHALLENGE_LOAD_GUI = Bukkit.createInventory(null, 9, ChallengesJoinEntities.CHALLENGEGUIPREFIX + " >> Map laden"); public static final int INVENTORY_SIZE = CHALLENGE_LOAD_GUI.getSize(); public static void createloadGUI(Player p) { - File adventuresave1 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/1"); - File adventuresave2 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/2"); - File adventuresave3 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/3"); - File adventureautosave = new File("/home/minecraft/saves/" + p.getUniqueId() + "/autosave"); + File challengeSave1 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/1"); + File challengeSave2 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/2"); + File challengeSave3 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/3"); + File challengeSaveAuto = new File("/home/minecraft/saves/" + p.getUniqueId() + "/autosave"); - if (adventuresave1.isDirectory()) { - CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 1", ChatColor.GREEN + "Klicken zum laden.")); + if (p.hasPermission("challenge.save.slot1")) { + if (challengeSave1.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 1", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave1))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei")); + } } else { - CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); - } - if (adventuresave2.isDirectory()) { - CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 2", ChatColor.GREEN + "Klicken zum laden.")); - } else { - CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); - } - if (adventuresave3.isDirectory()) { - CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatColor.GREEN + "Save 3", ChatColor.GREEN + "Klicken zum laden.")); - } else { - CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + CHALLENGE_LOAD_GUI.setItem(SAVE_1_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte")); } - if (adventureautosave.isDirectory()) { - CHALLENGE_LOAD_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatColor.GREEN + "Klicken zum laden.")); + if (p.hasPermission("challenge.save.slot2")) { + if (challengeSave2.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 2", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave2))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei")); + } } else { - CHALLENGE_LOAD_GUI.setItem(AUTOSAVE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatColor.DARK_RED + "Du hast noch keine Map gespeichert.")); + CHALLENGE_LOAD_GUI.setItem(SAVE_2_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP")); + } + + + if (p.hasPermission("challenge.save.slot3")) { + if (challengeSave3.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 3", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave3))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei")); + } + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_3_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP")); + } + + if (p.hasPermission("challenge.save.slotauto")) { + if (challengeSaveAuto.isDirectory()) { + CHALLENGE_LOAD_GUI.setItem(SAVE_AUTO_INDEX, GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSaveAuto))); + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_AUTO_INDEX, GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "AutoSave")); + } + } else { + CHALLENGE_LOAD_GUI.setItem(SAVE_AUTO_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte")); } for (int i = 0; i < INVENTORY_SIZE; i++) { @@ -71,42 +94,102 @@ public void onInventoryClick(InventoryClickEvent e) { int slot = e.getRawSlot(); Player p = (Player) e.getWhoClicked(); + File challengeSave1 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/1"); + File challengeSave2 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/2"); + File challengeSave3 = new File("/home/minecraft/saves/" + p.getUniqueId() + "/3"); + File challengeSaveAuto = new File("/home/minecraft/saves/" + p.getUniqueId() + "/autosave"); if (CHALLENGE_LOAD_GUI.equals(e.getClickedInventory())) { if (slot == SAVE_1_INDEX) { + if (!p.hasPermission("challenge.save.slot1")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot hast du keine Rechte!"); + return; + } + if (!challengeSave1.isDirectory()) { + e.setCancelled(true); + return; + } if (!Server.serverPlayers.containsValue(p.getUniqueId())) { p.closeInventory(); plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "1"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); } } if (slot == SAVE_2_INDEX) { + if (!p.hasPermission("challenge.save.slot2")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot brauchst du VIP!"); + return; + } + if (!challengeSave2.isDirectory()) { + e.setCancelled(true); + return; + } if (!Server.serverPlayers.containsValue(p.getUniqueId())) { + e.setCancelled(true); p.closeInventory(); plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "2"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); } else { + e.setCancelled(true); ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); } } if (slot == SAVE_3_INDEX) { + if (!p.hasPermission("challenge.save.slot3")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot brauchst du VIP!"); + return; + } + if (!challengeSave3.isDirectory()) { + e.setCancelled(true); + return; + } if (!Server.serverPlayers.containsValue(p.getUniqueId())) { p.closeInventory(); plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "3"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); } } - if (slot == AUTOSAVE_INDEX) { + if (slot == SAVE_AUTO_INDEX) { + if (!p.hasPermission("challenge.save.slotauto")) { + e.setCancelled(true); + ChatUtil.sendErrorMessage(p, "Für diesen Slot hast du keine Rechte!"); + return; + } + if (!challengeSaveAuto.isDirectory()) { + e.setCancelled(true); + return; + } if (!Server.serverPlayers.containsValue(p.getUniqueId())) { p.closeInventory(); plugin.getPluginConfig().getOnlineChanllengeServer().ifPresentOrElse(server -> server.loadSaved(p, "autosave"), () -> ChatUtil.sendErrorMessage(p, "Aktuell ist kein Server Frei!")); + p.closeInventory(); } else { ChatUtil.sendErrorMessage(p, "Du kannst nur einen Server starten!"); + p.closeInventory(); } } - p.closeInventory(); e.setCancelled(true); } } + + private static String getFileDate(File file) { + FileTime fileTime; + try { + BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class); + fileTime = attr.creationTime(); + } catch (IOException e) { + throw new RuntimeException(e); + } + return StringUtil.formatDate(fileTime.toMillis()); + } }