diff --git a/README.MD b/README.MD index 75b357d..4e2cc88 100644 --- a/README.MD +++ b/README.MD @@ -229,7 +229,7 @@ _Отменяет действие указателя `useOnlyConsole`_ ```java CommandManager.Builder builder = CommandManager.create("start") - .useOnlyPlayer("Команду могут использовать только игроки"); + .useOnlyPlayer("Команду могут использовать только игроки"); ``` ### useOnlyConsole @@ -240,7 +240,7 @@ _Отменяет действие указателя `useOnlyPlayer`_ ```java CommandManager.Builder builder = CommandManager.create("start") - .useOnlyConsole(ChatColor.RED + "Команду можно использовать только в консоли"); + .useOnlyConsole(ChatColor.RED + "Команду можно использовать только в консоли"); ``` ### register diff --git a/src/main/java/ghast/BuildHelper.java b/src/main/java/ghast/BuildHelper.java index 70d97f4..6e5d9fe 100644 --- a/src/main/java/ghast/BuildHelper.java +++ b/src/main/java/ghast/BuildHelper.java @@ -19,129 +19,129 @@ import java.util.UUID; @SuppressWarnings("unused") public class BuildHelper { - private final Class CLASS_BLOCKPOSITION = getClassForName("net.minecraft.server.v1_12_R1.BlockPosition"); - private final Class CLASS_GAMEPROFILE = getClassForName("com.mojang.authlib.GameProfile"); + private final Class CLASS_BLOCKPOSITION = getClassForName("net.minecraft.server.v1_12_R1.BlockPosition"); + private final Class CLASS_GAMEPROFILE = getClassForName("com.mojang.authlib.GameProfile"); - /** - * Установка черепа. - *

- * После установки, необходимо выполнить skull.update(true); - * - * @param location место установки. - * @param face куда будет повёрнут череп. - * @return Блок типа {@link Skull} - */ - public Skull placeSkull(Location location, BlockFace face) { - Location fixedLocation = GhastTools.copyLocation(location); - fixedLocation.setZ(fixedLocation.getZ() - 1); + /** + * Установка черепа. + *

+ * После установки, необходимо выполнить skull.update(true); + * + * @param location место установки. + * @param face куда будет повёрнут череп. + * @return Блок типа {@link Skull} + */ + public Skull placeSkull(Location location, BlockFace face) { + Location fixedLocation = GhastTools.copyLocation(location); + fixedLocation.setZ(fixedLocation.getZ() - 1); - Block block = location.getWorld().getBlockAt(location); - block.setType(Material.SKULL); + Block block = location.getWorld().getBlockAt(location); + block.setType(Material.SKULL); - Skull skull = (Skull) block.getState(); - skull.setRotation(face); + Skull skull = (Skull) block.getState(); + skull.setRotation(face); - org.bukkit.material.Skull skullMaterial = (org.bukkit.material.Skull) skull.getData(); - skullMaterial.setFacingDirection(BlockFace.SELF); + org.bukkit.material.Skull skullMaterial = (org.bukkit.material.Skull) skull.getData(); + skullMaterial.setFacingDirection(BlockFace.SELF); - return skull; - } + return skull; + } - /** - * Установка головы игрока. - *

- * После установки, необходимо выполнить skull.update(true); - * - * @param location место установки. - * @param face куда будет повёрнута голова. - * @return Блок типа {@link Skull} - */ - public static Skull placePlayerHead(Location location, BlockFace face) { - Location fixedLocation = GhastTools.copyLocation(location); - fixedLocation.setZ(fixedLocation.getZ() - 1); + /** + * Установка головы игрока. + *

+ * После установки, необходимо выполнить skull.update(true); + * + * @param location место установки. + * @param face куда будет повёрнута голова. + * @return Блок типа {@link Skull} + */ + public static Skull placePlayerHead(Location location, BlockFace face) { + Location fixedLocation = GhastTools.copyLocation(location); + fixedLocation.setZ(fixedLocation.getZ() - 1); - Block block = fixedLocation.getWorld().getBlockAt(fixedLocation); - block.setType(Material.SKULL); + Block block = fixedLocation.getWorld().getBlockAt(fixedLocation); + block.setType(Material.SKULL); - Skull skull = (Skull) block.getState(); - skull.setSkullType(SkullType.PLAYER); - skull.setRotation(face); + Skull skull = (Skull) block.getState(); + skull.setSkullType(SkullType.PLAYER); + skull.setRotation(face); - org.bukkit.material.Skull skullMaterial = (org.bukkit.material.Skull) skull.getData(); - skullMaterial.setFacingDirection(BlockFace.SELF); - return skull; - } + org.bukkit.material.Skull skullMaterial = (org.bukkit.material.Skull) skull.getData(); + skullMaterial.setFacingDirection(BlockFace.SELF); + return skull; + } - /** - * Установка текстурированной головы игрока. - * - * @param location место установки. - * @param face куда будет повёрнута голова. - * @param skinUrl URL на текстуру - * @return Блок типа {@link Skull} - */ - public static Skull placePlayerHead(Location location, BlockFace face, String skinUrl) { - Skull playerHead = placePlayerHead(location, face); - playerHead.update(true); - setPlayerHeadSkin(playerHead, skinUrl); + /** + * Установка текстурированной головы игрока. + * + * @param location место установки. + * @param face куда будет повёрнута голова. + * @param skinUrl URL на текстуру + * @return Блок типа {@link Skull} + */ + public static Skull placePlayerHead(Location location, BlockFace face, String skinUrl) { + Skull playerHead = placePlayerHead(location, face); + playerHead.update(true); + setPlayerHeadSkin(playerHead, skinUrl); - return playerHead; - } + return playerHead; + } - /** - * Установка текстуры для головы игрока. - * - * @param skull блок головы игрока - * @param skinUrl URL на текстуру - */ - public static void setPlayerHeadSkin(Skull skull, String skinUrl) { - //TODO заменить рефлексию на "фантомные" классы - ReflectionObject refobjBlockPosition = new ReflectionClass(CLASS_BLOCKPOSITION) - .constructor(double.class, double.class, double.class) - .newInstance(skull.getX(), skull.getY(), skull.getZ()); + /** + * Установка текстуры для головы игрока. + * + * @param skull блок головы игрока + * @param skinUrl URL на текстуру + */ + public static void setPlayerHeadSkin(Skull skull, String skinUrl) { + //TODO заменить рефлексию на "фантомные" классы + ReflectionObject refobjBlockPosition = new ReflectionClass(CLASS_BLOCKPOSITION) + .constructor(double.class, double.class, double.class) + .newInstance(skull.getX(), skull.getY(), skull.getZ()); - new ReflectionObject(skull.getWorld()) - .method("getHandle").invoke() - .method("getTileEntity", CLASS_BLOCKPOSITION) - .invoke(refobjBlockPosition.getOriginalObject()) - .method("setGameProfile", CLASS_GAMEPROFILE) - .invoke(getRefObjPlayerProfile(skinUrl).getOriginalObject()); - } + new ReflectionObject(skull.getWorld()) + .method("getHandle").invoke() + .method("getTileEntity", CLASS_BLOCKPOSITION) + .invoke(refobjBlockPosition.getOriginalObject()) + .method("setGameProfile", CLASS_GAMEPROFILE) + .invoke(getRefObjPlayerProfile(skinUrl).getOriginalObject()); + } - public Sign placeSignWall(Location location, BlockFace face) { - Block block = location.getWorld().getBlockAt(location); - block.setType(Material.WALL_SIGN); + public Sign placeSignWall(Location location, BlockFace face) { + Block block = location.getWorld().getBlockAt(location); + block.setType(Material.WALL_SIGN); - Sign sign = (Sign) block.getState(); - org.bukkit.material.Sign signMaterial = (org.bukkit.material.Sign) sign.getData(); - signMaterial.setFacingDirection(face); + Sign sign = (Sign) block.getState(); + org.bukkit.material.Sign signMaterial = (org.bukkit.material.Sign) sign.getData(); + signMaterial.setFacingDirection(face); - return sign; - } + return sign; + } - private ReflectionObject getRefObjPlayerProfile(String url){ - ReflectionObject refobjProperty = new ReflectionClass( - getClassForName("com.mojang.authlib.properties.Property")) - .constructor(String.class, String.class) - .newInstance("textures", Base64.getEncoder() - .encodeToString(("{textures:{SKIN:{url:\"" + url + "\"}}}").getBytes(StandardCharsets.UTF_8))); + private ReflectionObject getRefObjPlayerProfile(String url){ + ReflectionObject refobjProperty = new ReflectionClass( + getClassForName("com.mojang.authlib.properties.Property")) + .constructor(String.class, String.class) + .newInstance("textures", Base64.getEncoder() + .encodeToString(("{textures:{SKIN:{url:\"" + url + "\"}}}").getBytes(StandardCharsets.UTF_8))); - ReflectionObject refobjGameProfile = new ReflectionClass(CLASS_GAMEPROFILE) - .constructor(UUID.class, String.class) - .newInstance(UUID.randomUUID(), null); - refobjGameProfile - .method("getProperties").invoke() - .method("put", Object.class, Object.class) - .invoke("textures", refobjProperty.getOriginalObject()); + ReflectionObject refobjGameProfile = new ReflectionClass(CLASS_GAMEPROFILE) + .constructor(UUID.class, String.class) + .newInstance(UUID.randomUUID(), null); + refobjGameProfile + .method("getProperties").invoke() + .method("put", Object.class, Object.class) + .invoke("textures", refobjProperty.getOriginalObject()); - return refobjGameProfile; - } + return refobjGameProfile; + } - private Class getClassForName(String className) { - try { - return Class.forName(className); - } catch (Exception e) { - throw new RuntimeException(e); - } - } + private Class getClassForName(String className) { + try { + return Class.forName(className); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/src/main/java/ghast/EffectsHelper.java b/src/main/java/ghast/EffectsHelper.java index cf6d6ea..26d1362 100644 --- a/src/main/java/ghast/EffectsHelper.java +++ b/src/main/java/ghast/EffectsHelper.java @@ -11,17 +11,17 @@ import org.bukkit.util.Vector; @SuppressWarnings("unused") public class EffectsHelper { - public void playSound(Location location, Sound sound, float pitch) { - location.getWorld().playSound(location, sound, SoundCategory.MASTER, 1.0f, pitch); - } + public void playSound(Location location, Sound sound, float pitch) { + location.getWorld().playSound(location, sound, SoundCategory.MASTER, 1.0f, pitch); + } - public void particle(Location location, Particle particle, double dx, double dy, double dz, double speed, int amount) { - location.getWorld().spawnParticle(particle, location, amount, dx, dy, dz, speed); - } + public void particle(Location location, Particle particle, double dx, double dy, double dz, double speed, int amount) { + location.getWorld().spawnParticle(particle, location, amount, dx, dy, dz, speed); + } - //TODO нужно проверить - public void particle(Location location, Particle particle, Vector vector, double speed, int amount) { - particle(location, particle, vector.getX(), vector.getY(), vector.getZ(), speed, amount); - } + //TODO нужно проверить + public void particle(Location location, Particle particle, Vector vector, double speed, int amount) { + particle(location, particle, vector.getX(), vector.getY(), vector.getZ(), speed, amount); + } } diff --git a/src/main/java/ghast/EventContext.java b/src/main/java/ghast/EventContext.java index 1ddd732..380dc6a 100644 --- a/src/main/java/ghast/EventContext.java +++ b/src/main/java/ghast/EventContext.java @@ -17,55 +17,55 @@ import java.util.function.Consumer; @SuppressWarnings("unused") public class EventContext implements Listener { - private static final BooleanSupplier EMPTY_FILTER = () -> true; - private static final Consumer CANCEL_EVENT = event -> event.setCancelled(true); + private static final BooleanSupplier EMPTY_FILTER = () -> true; + private static final Consumer CANCEL_EVENT = event -> event.setCancelled(true); - private final Map, Consumer> eventMap = new HashMap<>(); - private BooleanSupplier filter = EMPTY_FILTER; + private final Map, Consumer> eventMap = new HashMap<>(); + private BooleanSupplier filter = EMPTY_FILTER; - public EventContext filter(BooleanSupplier filter) { - this.filter = (filter != null ? filter : EMPTY_FILTER); - return this; - } + public EventContext filter(BooleanSupplier filter) { + this.filter = (filter != null ? filter : EMPTY_FILTER); + return this; + } - public EventContext onEvent(Class eventType, EventPriority eventPriority, Consumer consumer) { - if (consumer == null) { - eventMap.remove(eventType); - } else { - eventMap.put(eventType, consumer); - bukkitRegisterEvent(eventType, eventPriority); - } - return this; - } + public EventContext onEvent(Class eventType, EventPriority eventPriority, Consumer consumer) { + if (consumer == null) { + eventMap.remove(eventType); + } else { + eventMap.put(eventType, consumer); + bukkitRegisterEvent(eventType, eventPriority); + } + return this; + } - public EventContext onEvent(Class eventType, Consumer consumer) { - return onEvent(eventType, EventPriority.NORMAL, consumer); - } + public EventContext onEvent(Class eventType, Consumer consumer) { + return onEvent(eventType, EventPriority.NORMAL, consumer); + } - public EventContext cancelEvent(Class eventType, EventPriority eventPriority) { - eventMap.put(eventType, CANCEL_EVENT); - bukkitRegisterEvent(eventType, eventPriority); - return this; - } + public EventContext cancelEvent(Class eventType, EventPriority eventPriority) { + eventMap.put(eventType, CANCEL_EVENT); + bukkitRegisterEvent(eventType, eventPriority); + return this; + } - public EventContext cancelEvent(Class eventType) { - return cancelEvent(eventType, EventPriority.NORMAL); - } + public EventContext cancelEvent(Class eventType) { + return cancelEvent(eventType, EventPriority.NORMAL); + } - private void bukkitRegisterEvent(Class eventType, EventPriority eventPriority) { - Bukkit.getPluginManager().registerEvent(eventType, this, eventPriority, - this::eventExecute, GhastTools.getPlugin()); - } + private void bukkitRegisterEvent(Class eventType, EventPriority eventPriority) { + Bukkit.getPluginManager().registerEvent(eventType, this, eventPriority, + this::eventExecute, GhastTools.getPlugin()); + } - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void eventExecute(Listener listener, Event event) { - Consumer consumer = eventMap.get(event.getClass()); - if (consumer != null && filter.getAsBoolean()) { - consumer.accept(event); - } - } + @SuppressWarnings({ "unchecked", "rawtypes" }) + private void eventExecute(Listener listener, Event event) { + Consumer consumer = eventMap.get(event.getClass()); + if (consumer != null && filter.getAsBoolean()) { + consumer.accept(event); + } + } - public static EventContext create() { - return new EventContext(); - } + public static EventContext create() { + return new EventContext(); + } } diff --git a/src/main/java/ghast/GhastTools.java b/src/main/java/ghast/GhastTools.java index df67957..a561308 100644 --- a/src/main/java/ghast/GhastTools.java +++ b/src/main/java/ghast/GhastTools.java @@ -14,49 +14,49 @@ import java.lang.ref.WeakReference; @SuppressWarnings("unused") public class GhastTools { - private static WeakReference refPlugin; + private static WeakReference refPlugin; - @SuppressWarnings("java:S2696") - public void setPlugin(Plugin plugin) { - if (plugin == null) { - refPlugin = null; - } else { - refPlugin = new WeakReference<>(plugin); - } - } + @SuppressWarnings("java:S2696") + public void setPlugin(Plugin plugin) { + if (plugin == null) { + refPlugin = null; + } else { + refPlugin = new WeakReference<>(plugin); + } + } - @SuppressWarnings("java:S112") - public Plugin getPlugin() { - if (refPlugin == null) { - throw new RuntimeException("Plugin not set."); - } + @SuppressWarnings("java:S112") + public Plugin getPlugin() { + if (refPlugin == null) { + throw new RuntimeException("Plugin not set."); + } - Plugin plugin = refPlugin.get(); - if (plugin == null) { - throw new RuntimeException("Plugin not set."); - } + Plugin plugin = refPlugin.get(); + if (plugin == null) { + throw new RuntimeException("Plugin not set."); + } - return plugin; - } + return plugin; + } - @SuppressWarnings("java:S112") - public YamlConfiguration loadConfig(boolean saveDefault) { - if (saveDefault) { - getPlugin().saveDefaultConfig(); - } + @SuppressWarnings("java:S112") + public YamlConfiguration loadConfig(boolean saveDefault) { + if (saveDefault) { + getPlugin().saveDefaultConfig(); + } - try (Reader reader = AssetsManager.getAsReader("config.yml", saveDefault)) { - return YamlConfiguration.loadConfiguration(reader); - } catch (IOException e) { - throw new RuntimeException("Error load config: " + e.getMessage(), e); - } - } + try (Reader reader = AssetsManager.getAsReader("config.yml", saveDefault)) { + return YamlConfiguration.loadConfiguration(reader); + } catch (IOException e) { + throw new RuntimeException("Error load config: " + e.getMessage(), e); + } + } - public YamlConfiguration loadConfig() { - return loadConfig(true); - } + public YamlConfiguration loadConfig() { + return loadConfig(true); + } - public Location copyLocation(Location location) { - return new Location(location.getWorld(), location.getX(), location.getY(), location.getZ()); - } + public Location copyLocation(Location location) { + return new Location(location.getWorld(), location.getX(), location.getY(), location.getZ()); + } } diff --git a/src/main/java/ghast/I18n.java b/src/main/java/ghast/I18n.java index c56c826..e38db89 100644 --- a/src/main/java/ghast/I18n.java +++ b/src/main/java/ghast/I18n.java @@ -18,74 +18,74 @@ import java.util.Map; @SuppressWarnings("unused") public class I18n { - private final String DEFAULT_LANG = "en"; - private final Table messagesMap = HashBasedTable.create(); + private final String DEFAULT_LANG = "en"; + private final Table messagesMap = HashBasedTable.create(); - //region Load messages - @SuppressWarnings("java:S112") - public void loadMessages(String lang, Reader reader) { - Map map = messagesMap.row(lang.toLowerCase()); + //region Load messages + @SuppressWarnings("java:S112") + public void loadMessages(String lang, Reader reader) { + Map map = messagesMap.row(lang.toLowerCase()); - try { - BufferedReader bufferedReader = new BufferedReader(reader); - String line; - while ((line = bufferedReader.readLine()) != null) { - String[] split = line.split("=", 2); - map.put(split[0].trim().toLowerCase(), split[1].trim()); - } - } catch (IOException e) { - throw new RuntimeException("Error load messages: " + e.getMessage(), e); - } - } + try { + BufferedReader bufferedReader = new BufferedReader(reader); + String line; + while ((line = bufferedReader.readLine()) != null) { + String[] split = line.split("=", 2); + map.put(split[0].trim().toLowerCase(), split[1].trim()); + } + } catch (IOException e) { + throw new RuntimeException("Error load messages: " + e.getMessage(), e); + } + } - public void loadMessages(String lang, Map messages) { - Map map = messagesMap.row(lang.toLowerCase()); - messages.forEach((k, v) -> map.put(k.toLowerCase(), v)); - } + public void loadMessages(String lang, Map messages) { + Map map = messagesMap.row(lang.toLowerCase()); + messages.forEach((k, v) -> map.put(k.toLowerCase(), v)); + } - public void loadMessages(Reader reader) { - loadMessages(DEFAULT_LANG, reader); - } + public void loadMessages(Reader reader) { + loadMessages(DEFAULT_LANG, reader); + } - public void loadMessages(Map messages) { - loadMessages(DEFAULT_LANG, messages); - } - //endregion + public void loadMessages(Map messages) { + loadMessages(DEFAULT_LANG, messages); + } + //endregion - //region Get message - public String get(String lang, String key) { - return messagesMap.row(lang.toLowerCase()).getOrDefault(key.toLowerCase(), StringUtils.EMPTY); - } + //region Get message + public String get(String lang, String key) { + return messagesMap.row(lang.toLowerCase()).getOrDefault(key.toLowerCase(), StringUtils.EMPTY); + } - public String get(String lang, String key, Map params) { - return StringSubstitutor.replace(get(lang, key.toLowerCase()), params, "{", "}"); - } + public String get(String lang, String key, Map params) { + return StringSubstitutor.replace(get(lang, key.toLowerCase()), params, "{", "}"); + } - public String get(String key) { - return get(DEFAULT_LANG, key); - } + public String get(String key) { + return get(DEFAULT_LANG, key); + } - public String get(String key, Map params) { - return get(DEFAULT_LANG, key, params); - } - //endregion + public String get(String key, Map params) { + return get(DEFAULT_LANG, key, params); + } + //endregion - public ParamBuilder paramBuilder() { - return new ParamBuilder(); - } + public ParamBuilder paramBuilder() { + return new ParamBuilder(); + } - @NoArgsConstructor(access = AccessLevel.PRIVATE) - public static class ParamBuilder { + @NoArgsConstructor(access = AccessLevel.PRIVATE) + public static class ParamBuilder { - private final Map params = new HashMap<>(); + private final Map params = new HashMap<>(); - public ParamBuilder add(String key, Object value) { - params.put(key, value); - return this; - } + public ParamBuilder add(String key, Object value) { + params.put(key, value); + return this; + } - public Map build() { - return params; - } - } + public Map build() { + return params; + } + } } diff --git a/src/main/java/ghast/XLog.java b/src/main/java/ghast/XLog.java index b480aad..b0f83fb 100644 --- a/src/main/java/ghast/XLog.java +++ b/src/main/java/ghast/XLog.java @@ -10,68 +10,68 @@ import static java.text.MessageFormat.format; @SuppressWarnings("unused") public class XLog { - //region Debug - public void debug(String pattern, Object... objects) { - if (objects.length > 1 && objects[objects.length - 1] instanceof Throwable) { - Throwable throwable = (Throwable) objects[objects.length - 1]; - Object[] values = new Object[objects.length - 1]; - System.arraycopy(objects, 0, values, 0, values.length); + //region Debug + public void debug(String pattern, Object... objects) { + if (objects.length > 1 && objects[objects.length - 1] instanceof Throwable) { + Throwable throwable = (Throwable) objects[objects.length - 1]; + Object[] values = new Object[objects.length - 1]; + System.arraycopy(objects, 0, values, 0, values.length); - debug(format(pattern, values), throwable); - } else { - debug(format(pattern, objects)); - } - } + debug(format(pattern, values), throwable); + } else { + debug(format(pattern, objects)); + } + } - public void debug(String message, Throwable throwable) { - GhastTools.getPlugin().getLogger().log(Level.FINE, message, throwable); - } + public void debug(String message, Throwable throwable) { + GhastTools.getPlugin().getLogger().log(Level.FINE, message, throwable); + } - public void debug(String message) { - GhastTools.getPlugin().getLogger().fine(message); - } - //endregion + public void debug(String message) { + GhastTools.getPlugin().getLogger().fine(message); + } + //endregion - //region Info - public void info(String pattern, Object... objects) { - info(format(pattern, objects)); - } + //region Info + public void info(String pattern, Object... objects) { + info(format(pattern, objects)); + } - public void info(String message) { - GhastTools.getPlugin().getLogger().info(message); - } - //endregion + public void info(String message) { + GhastTools.getPlugin().getLogger().info(message); + } + //endregion - //region Warning - public void warn(String pattern, Object... objects) { - warn(format(pattern, objects)); - } + //region Warning + public void warn(String pattern, Object... objects) { + warn(format(pattern, objects)); + } - public void warn(String message) { - GhastTools.getPlugin().getLogger().warning(message); - } - //endregion + public void warn(String message) { + GhastTools.getPlugin().getLogger().warning(message); + } + //endregion - //region Error - public void error(String pattern, Object... objects) { - if (objects.length > 1 && objects[objects.length - 1] instanceof Throwable) { - Throwable throwable = (Throwable) objects[objects.length - 1]; - Object[] values = new Object[objects.length - 1]; - System.arraycopy(objects, 0, values, 0, values.length); + //region Error + public void error(String pattern, Object... objects) { + if (objects.length > 1 && objects[objects.length - 1] instanceof Throwable) { + Throwable throwable = (Throwable) objects[objects.length - 1]; + Object[] values = new Object[objects.length - 1]; + System.arraycopy(objects, 0, values, 0, values.length); - error(format(pattern, values), throwable); - } else { - error(format(pattern, objects)); - } - } + error(format(pattern, values), throwable); + } else { + error(format(pattern, objects)); + } + } - public void error(String message) { - GhastTools.getPlugin().getLogger().severe(message); - } + public void error(String message) { + GhastTools.getPlugin().getLogger().severe(message); + } - public void error(String message, Throwable throwable) { - GhastTools.getPlugin().getLogger().log(Level.SEVERE, message, throwable); - } - //endregion + public void error(String message, Throwable throwable) { + GhastTools.getPlugin().getLogger().log(Level.SEVERE, message, throwable); + } + //endregion } diff --git a/src/main/java/ghast/assets/AssetsException.java b/src/main/java/ghast/assets/AssetsException.java index ba31e5b..dc0b3f1 100644 --- a/src/main/java/ghast/assets/AssetsException.java +++ b/src/main/java/ghast/assets/AssetsException.java @@ -2,12 +2,12 @@ package ghast.assets; public class AssetsException extends RuntimeException { - public AssetsException(String message) { - super(message); - } + public AssetsException(String message) { + super(message); + } - public AssetsException(String message, Throwable cause) { - super(message, cause); - } + public AssetsException(String message, Throwable cause) { + super(message, cause); + } } diff --git a/src/main/java/ghast/assets/AssetsManager.java b/src/main/java/ghast/assets/AssetsManager.java index b8774cb..3f3dd66 100644 --- a/src/main/java/ghast/assets/AssetsManager.java +++ b/src/main/java/ghast/assets/AssetsManager.java @@ -18,146 +18,146 @@ import static java.text.MessageFormat.format; @SuppressWarnings("unused") public class AssetsManager { - private static final String ERROR_NOT_FOUND = "Asset \"{0}\" not found"; - private static final String ERROR_OPEN = "Error open asset \"{0}\": {1}"; + private static final String ERROR_NOT_FOUND = "Asset \"{0}\" not found"; + private static final String ERROR_OPEN = "Error open asset \"{0}\": {1}"; - //region getAsInputStream methods - public InputStream getAsInputStream(String resourceName, String defaultResourceName, boolean saveDefault) { - Plugin plugin = GhastTools.getPlugin(); - InputStream inputStream; + //region getAsInputStream methods + public InputStream getAsInputStream(String resourceName, String defaultResourceName, boolean saveDefault) { + Plugin plugin = GhastTools.getPlugin(); + InputStream inputStream; - Path pathToResource = plugin.getDataFolder().toPath().resolve(resourceName); - if (Files.exists(pathToResource)) { - inputStream = openResource(pathToResource); - } else if (defaultResourceName != null) { - URL resourceUrl = getResourceUrl(defaultResourceName); + Path pathToResource = plugin.getDataFolder().toPath().resolve(resourceName); + if (Files.exists(pathToResource)) { + inputStream = openResource(pathToResource); + } else if (defaultResourceName != null) { + URL resourceUrl = getResourceUrl(defaultResourceName); - if (saveDefault) { - doSaveTo(resourceUrl, pathToResource); - inputStream = openResource(pathToResource); - } else { - inputStream = openResource(resourceUrl); - } - } else { - throw new AssetsException(format(ERROR_NOT_FOUND, resourceName)); - } + if (saveDefault) { + doSaveTo(resourceUrl, pathToResource); + inputStream = openResource(pathToResource); + } else { + inputStream = openResource(resourceUrl); + } + } else { + throw new AssetsException(format(ERROR_NOT_FOUND, resourceName)); + } - return inputStream; - } + return inputStream; + } - public InputStream getAsInputStream(String resourceName, String defaultResourceName) { - return getAsInputStream(resourceName, defaultResourceName, true); - } + public InputStream getAsInputStream(String resourceName, String defaultResourceName) { + return getAsInputStream(resourceName, defaultResourceName, true); + } - public InputStream getAsInputStream(String resourceName, boolean saveDefault) { - return getAsInputStream(resourceName, resourceName, saveDefault); - } + public InputStream getAsInputStream(String resourceName, boolean saveDefault) { + return getAsInputStream(resourceName, resourceName, saveDefault); + } - public InputStream getAsInputStream(String resourceName) { - return getAsInputStream(resourceName, resourceName, true); - } - //endregion + public InputStream getAsInputStream(String resourceName) { + return getAsInputStream(resourceName, resourceName, true); + } + //endregion - //region getAsReader methods - public Reader getAsReader(String resourceName, String defaultResourceName, boolean saveDefault) { - return new InputStreamReader(getAsInputStream(resourceName, defaultResourceName, saveDefault)); - } + //region getAsReader methods + public Reader getAsReader(String resourceName, String defaultResourceName, boolean saveDefault) { + return new InputStreamReader(getAsInputStream(resourceName, defaultResourceName, saveDefault)); + } - public Reader getAsReader(String resourceName, String defaultResourceName) { - return new InputStreamReader(getAsInputStream(resourceName, defaultResourceName, true)); - } + public Reader getAsReader(String resourceName, String defaultResourceName) { + return new InputStreamReader(getAsInputStream(resourceName, defaultResourceName, true)); + } - public Reader getAsReader(String resourceName, boolean saveDefault) { - return new InputStreamReader(getAsInputStream(resourceName, resourceName, saveDefault)); - } + public Reader getAsReader(String resourceName, boolean saveDefault) { + return new InputStreamReader(getAsInputStream(resourceName, resourceName, saveDefault)); + } - public Reader getAsReader(String resourceName) { - return new InputStreamReader(getAsInputStream(resourceName, resourceName, true)); - } - //endregion + public Reader getAsReader(String resourceName) { + return new InputStreamReader(getAsInputStream(resourceName, resourceName, true)); + } + //endregion - //region getAsString methods - public String getAsString(String resourceName, String defaultResourceName, Charset charset, boolean saveDefault) { - try (InputStream inputStream = getAsInputStream(resourceName, defaultResourceName, saveDefault); - Scanner scanner = new Scanner(inputStream, charset.name()).useDelimiter("\\A")) { + //region getAsString methods + public String getAsString(String resourceName, String defaultResourceName, Charset charset, boolean saveDefault) { + try (InputStream inputStream = getAsInputStream(resourceName, defaultResourceName, saveDefault); + Scanner scanner = new Scanner(inputStream, charset.name()).useDelimiter("\\A")) { - return scanner.next(); - } catch (IOException e) { - throw new AssetsException(format(ERROR_OPEN, resourceName, e.getMessage()), e); - } - } + return scanner.next(); + } catch (IOException e) { + throw new AssetsException(format(ERROR_OPEN, resourceName, e.getMessage()), e); + } + } - public String getAsString(String resourceName, String defaultResourceName, Charset charset) { - return getAsString(resourceName, defaultResourceName, charset, true); - } + public String getAsString(String resourceName, String defaultResourceName, Charset charset) { + return getAsString(resourceName, defaultResourceName, charset, true); + } - public String getAsString(String resourceName, String defaultResourceName, boolean saveDefault) { - return getAsString(resourceName, defaultResourceName, StandardCharsets.UTF_8, saveDefault); - } + public String getAsString(String resourceName, String defaultResourceName, boolean saveDefault) { + return getAsString(resourceName, defaultResourceName, StandardCharsets.UTF_8, saveDefault); + } - public String getAsString(String resourceName, String defaultResourceName) { - return getAsString(resourceName, defaultResourceName, StandardCharsets.UTF_8, true); - } + public String getAsString(String resourceName, String defaultResourceName) { + return getAsString(resourceName, defaultResourceName, StandardCharsets.UTF_8, true); + } - public String getAsString(String resourceName, Charset charset, boolean saveDefault) { - return getAsString(resourceName, resourceName, charset, saveDefault); - } + public String getAsString(String resourceName, Charset charset, boolean saveDefault) { + return getAsString(resourceName, resourceName, charset, saveDefault); + } - public String getAsString(String resourceName, Charset charset) { - return getAsString(resourceName, resourceName, charset, true); - } + public String getAsString(String resourceName, Charset charset) { + return getAsString(resourceName, resourceName, charset, true); + } - public String getAsString(String resourceName, boolean saveDefault) { - return getAsString(resourceName, resourceName, StandardCharsets.UTF_8, saveDefault); - } + public String getAsString(String resourceName, boolean saveDefault) { + return getAsString(resourceName, resourceName, StandardCharsets.UTF_8, saveDefault); + } - public String getAsString(String resourceName) { - return getAsString(resourceName, resourceName, StandardCharsets.UTF_8, true); - } - //endregion - - private URL getResourceUrl(String resourceName) { - URL resourceUrl = AssetsManager.class.getClassLoader().getResource(resourceName); - if (resourceUrl == null) { - throw new AssetsException(format(ERROR_NOT_FOUND, resourceName)); - } + public String getAsString(String resourceName) { + return getAsString(resourceName, resourceName, StandardCharsets.UTF_8, true); + } + //endregion - return resourceUrl; - } + private URL getResourceUrl(String resourceName) { + URL resourceUrl = AssetsManager.class.getClassLoader().getResource(resourceName); + if (resourceUrl == null) { + throw new AssetsException(format(ERROR_NOT_FOUND, resourceName)); + } - private void doSaveTo(URL resourceUrl, Path saveToPath) { - try { - Files.createDirectories(saveToPath.getParent()); + return resourceUrl; + } - try (InputStream inputStream = resourceUrl.openStream(); - OutputStream outputStream = Files.newOutputStream(saveToPath)) { + private void doSaveTo(URL resourceUrl, Path saveToPath) { + try { + Files.createDirectories(saveToPath.getParent()); - byte[] buffer = new byte[8192]; - int count; - while ((count = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, count); - } - outputStream.flush(); - } - } catch (IOException e) { - throw new AssetsException(format("Error save asset \"{0}\" to \"{1}\": {2}", - resourceUrl, saveToPath, e.getMessage()), e); - } - } + try (InputStream inputStream = resourceUrl.openStream(); + OutputStream outputStream = Files.newOutputStream(saveToPath)) { - private InputStream openResource(Path pathToResource) { - try { - return Files.newInputStream(pathToResource); - } catch (IOException e) { - throw new AssetsException(format(ERROR_OPEN, pathToResource, e.getMessage()), e); - } - } + byte[] buffer = new byte[8192]; + int count; + while ((count = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, count); + } + outputStream.flush(); + } + } catch (IOException e) { + throw new AssetsException(format("Error save asset \"{0}\" to \"{1}\": {2}", + resourceUrl, saveToPath, e.getMessage()), e); + } + } - private InputStream openResource(URL resourceUrl) { - try { - return resourceUrl.openStream(); - } catch (IOException e) { - throw new AssetsException(format(ERROR_OPEN, resourceUrl, e.getMessage()), e); - } - } + private InputStream openResource(Path pathToResource) { + try { + return Files.newInputStream(pathToResource); + } catch (IOException e) { + throw new AssetsException(format(ERROR_OPEN, pathToResource, e.getMessage()), e); + } + } + + private InputStream openResource(URL resourceUrl) { + try { + return resourceUrl.openStream(); + } catch (IOException e) { + throw new AssetsException(format(ERROR_OPEN, resourceUrl, e.getMessage()), e); + } + } } diff --git a/src/main/java/ghast/command/CommandExecuter.java b/src/main/java/ghast/command/CommandExecuter.java index e30b807..cc4313d 100644 --- a/src/main/java/ghast/command/CommandExecuter.java +++ b/src/main/java/ghast/command/CommandExecuter.java @@ -4,5 +4,5 @@ import org.bukkit.command.CommandSender; public interface CommandExecuter { - void execute(CommandSender sender, String[] args); + void execute(CommandSender sender, String[] args); } diff --git a/src/main/java/ghast/command/CommandManager.java b/src/main/java/ghast/command/CommandManager.java index b4a27f7..b4c1c3a 100644 --- a/src/main/java/ghast/command/CommandManager.java +++ b/src/main/java/ghast/command/CommandManager.java @@ -11,61 +11,61 @@ import ru.dmitriymx.reflection.ReflectionObject; @SuppressWarnings("unused") public class CommandManager { - public Builder create(String name) { - return new Builder(name); - } + public Builder create(String name) { + return new Builder(name); + } - public void register(String name, CommandExecuter executer) { - create(name).executer(executer).register(); - } + public void register(String name, CommandExecuter executer) { + create(name).executer(executer).register(); + } - @RequiredArgsConstructor(access = AccessLevel.PRIVATE) - public static class Builder { + @RequiredArgsConstructor(access = AccessLevel.PRIVATE) + public static class Builder { - private final String name; - private CommandExecuter executer; - private ErrorConsumer errorConsumer; - private Boolean onlyPlayer; - private String deniedMessage; + private final String name; + private CommandExecuter executer; + private ErrorConsumer errorConsumer; + private Boolean onlyPlayer; + private String deniedMessage; - public Builder executer(CommandExecuter executer) { - this.executer = executer; - return this; - } + public Builder executer(CommandExecuter executer) { + this.executer = executer; + return this; + } - public Builder onError(ErrorConsumer errorConsumer) { - this.errorConsumer = errorConsumer; - return this; - } + public Builder onError(ErrorConsumer errorConsumer) { + this.errorConsumer = errorConsumer; + return this; + } - public Builder useOnlyPlayer(String deniedMessage) { - this.onlyPlayer = true; - this.deniedMessage = deniedMessage; - return this; - } + public Builder useOnlyPlayer(String deniedMessage) { + this.onlyPlayer = true; + this.deniedMessage = deniedMessage; + return this; + } - public Builder useOnlyPlayer() { - return useOnlyPlayer(null); - } + public Builder useOnlyPlayer() { + return useOnlyPlayer(null); + } - public Builder useOnlyConsole(String deniedMessage) { - this.onlyPlayer = false; - this.deniedMessage = deniedMessage; - return this; - } + public Builder useOnlyConsole(String deniedMessage) { + this.onlyPlayer = false; + this.deniedMessage = deniedMessage; + return this; + } - public Builder useOnlyConsole() { - return useOnlyConsole(null); - } + public Builder useOnlyConsole() { + return useOnlyConsole(null); + } - public void register() { - //TODO для Paper такие "извращения" не требуются. Нужно продумать. - new ReflectionObject(Bukkit.getServer()) - .method("getCommandMap").invoke() - .method("register", String.class, Command.class).invoke( - name, new CommandWrapper(name, this.onlyPlayer, this.deniedMessage, - this.executer, this.errorConsumer) - ); - } - } + public void register() { + //TODO для Paper такие "извращения" не требуются. Нужно продумать. + new ReflectionObject(Bukkit.getServer()) + .method("getCommandMap").invoke() + .method("register", String.class, Command.class).invoke( + name, new CommandWrapper(name, this.onlyPlayer, this.deniedMessage, + this.executer, this.errorConsumer) + ); + } + } } diff --git a/src/main/java/ghast/command/CommandWrapper.java b/src/main/java/ghast/command/CommandWrapper.java index dc2871f..36c0a0e 100644 --- a/src/main/java/ghast/command/CommandWrapper.java +++ b/src/main/java/ghast/command/CommandWrapper.java @@ -8,64 +8,64 @@ import org.bukkit.entity.Player; class CommandWrapper extends BukkitCommand { - private static final String DEFAULT_DENIED_MESSAGE_PLAYERS = ChatColor.RED + "This command use only players"; - private static final String DEFAULT_DENIED_MESSAGE_CONSOLE = ChatColor.RED + "This command use only in console"; + private static final String DEFAULT_DENIED_MESSAGE_PLAYERS = ChatColor.RED + "This command use only players"; + private static final String DEFAULT_DENIED_MESSAGE_CONSOLE = ChatColor.RED + "This command use only in console"; - private static final ErrorConsumer DEFAULT_ERROR_CONSUMER = - (sender, commandName, args, exception) -> { - sender.sendMessage(String.format("%sError execute command '%s'!", ChatColor.RED, commandName)); - XLog.error("Error execute command ''{0}'' with args ''{1}''", - commandName, String.join(" ", args), exception); - }; + private static final ErrorConsumer DEFAULT_ERROR_CONSUMER = + (sender, commandName, args, exception) -> { + sender.sendMessage(String.format("%sError execute command '%s'!", ChatColor.RED, commandName)); + XLog.error("Error execute command ''{0}'' with args ''{1}''", + commandName, String.join(" ", args), exception); + }; - private final CommandExecuter executer; - private final ErrorConsumer errorConsumer; - private final Boolean onlyPlayer; - private String deniedMessage; + private final CommandExecuter executer; + private final ErrorConsumer errorConsumer; + private final Boolean onlyPlayer; + private String deniedMessage; - protected CommandWrapper(String name, Boolean onlyPlayer, String deniedMessage, - CommandExecuter executer, ErrorConsumer errorConsumer) { - super(name); - this.onlyPlayer = onlyPlayer; - this.executer = executer; + protected CommandWrapper(String name, Boolean onlyPlayer, String deniedMessage, + CommandExecuter executer, ErrorConsumer errorConsumer) { + super(name); + this.onlyPlayer = onlyPlayer; + this.executer = executer; - if (onlyPlayer != null) { - if (deniedMessage == null) { - this.deniedMessage = Boolean.TRUE.equals(onlyPlayer) ? DEFAULT_DENIED_MESSAGE_PLAYERS - : DEFAULT_DENIED_MESSAGE_CONSOLE; - } else { - this.deniedMessage = deniedMessage; - } - } + if (onlyPlayer != null) { + if (deniedMessage == null) { + this.deniedMessage = Boolean.TRUE.equals(onlyPlayer) ? DEFAULT_DENIED_MESSAGE_PLAYERS + : DEFAULT_DENIED_MESSAGE_CONSOLE; + } else { + this.deniedMessage = deniedMessage; + } + } - if(errorConsumer == null) { - this.errorConsumer = DEFAULT_ERROR_CONSUMER; - } else { - this.errorConsumer = errorConsumer; - } - } + if(errorConsumer == null) { + this.errorConsumer = DEFAULT_ERROR_CONSUMER; + } else { + this.errorConsumer = errorConsumer; + } + } - @Override - @SuppressWarnings("java:S1066") - public boolean execute(CommandSender commandSender, String commandName, String[] args) { - if (Boolean.TRUE.equals(onlyPlayer)) { - if (!(commandSender instanceof Player)) { - commandSender.sendMessage(deniedMessage); - return true; - } - } else if (Boolean.FALSE.equals(onlyPlayer)) { // use console only - if (commandSender instanceof Player) { - commandSender.sendMessage(deniedMessage); - return true; - } - } + @Override + @SuppressWarnings("java:S1066") + public boolean execute(CommandSender commandSender, String commandName, String[] args) { + if (Boolean.TRUE.equals(onlyPlayer)) { + if (!(commandSender instanceof Player)) { + commandSender.sendMessage(deniedMessage); + return true; + } + } else if (Boolean.FALSE.equals(onlyPlayer)) { // use console only + if (commandSender instanceof Player) { + commandSender.sendMessage(deniedMessage); + return true; + } + } - try { - executer.execute(commandSender, args); - return true; - } catch (Exception e) { - errorConsumer.accept(commandSender, commandName, args, e); - return false; - } - } + try { + executer.execute(commandSender, args); + return true; + } catch (Exception e) { + errorConsumer.accept(commandSender, commandName, args, e); + return false; + } + } } diff --git a/src/main/java/ghast/command/ErrorConsumer.java b/src/main/java/ghast/command/ErrorConsumer.java index 57b3711..d67f951 100644 --- a/src/main/java/ghast/command/ErrorConsumer.java +++ b/src/main/java/ghast/command/ErrorConsumer.java @@ -4,5 +4,5 @@ import org.bukkit.command.CommandSender; public interface ErrorConsumer { - void accept(CommandSender sender, String commandName, String[] args, Exception exception); + void accept(CommandSender sender, String commandName, String[] args, Exception exception); } diff --git a/src/main/java/ghast/database/CannotGetJdbcConnectionException.java b/src/main/java/ghast/database/CannotGetJdbcConnectionException.java index 1d02152..5e493de 100644 --- a/src/main/java/ghast/database/CannotGetJdbcConnectionException.java +++ b/src/main/java/ghast/database/CannotGetJdbcConnectionException.java @@ -4,7 +4,7 @@ import java.sql.SQLException; public class CannotGetJdbcConnectionException extends DataAccessException { - public CannotGetJdbcConnectionException(String msg, SQLException ex) { - super(msg, ex); - } + public CannotGetJdbcConnectionException(String msg, SQLException ex) { + super(msg, ex); + } } diff --git a/src/main/java/ghast/database/DataAccessException.java b/src/main/java/ghast/database/DataAccessException.java index 445a104..d221a31 100644 --- a/src/main/java/ghast/database/DataAccessException.java +++ b/src/main/java/ghast/database/DataAccessException.java @@ -6,14 +6,14 @@ import lombok.Getter; @Getter public class DataAccessException extends RuntimeException { - private String sql; + private String sql; - public DataAccessException(String msg, Throwable cause) { - super(msg, cause); - } + public DataAccessException(String msg, Throwable cause) { + super(msg, cause); + } - public DataAccessException(String msg, String sql, Throwable cause) { - this(msg, cause); - this.sql = sql; - } + public DataAccessException(String msg, String sql, Throwable cause) { + this(msg, cause); + this.sql = sql; + } } diff --git a/src/main/java/ghast/database/JdbcOperations.java b/src/main/java/ghast/database/JdbcOperations.java index 6a4aa50..4071adc 100644 --- a/src/main/java/ghast/database/JdbcOperations.java +++ b/src/main/java/ghast/database/JdbcOperations.java @@ -6,17 +6,17 @@ import java.util.Optional; public interface JdbcOperations { - void execute(String sql) throws DataAccessException; + void execute(String sql) throws DataAccessException; - T query(String sql, ResultSetExtractor rse) throws DataAccessException; + T query(String sql, ResultSetExtractor rse) throws DataAccessException; - Optional queryOne(String sql, ResultSetExtractor rse) throws DataAccessException; + Optional queryOne(String sql, ResultSetExtractor rse) throws DataAccessException; - List queryList(String sql, RowMapper rowMapper) throws DataAccessException; + List queryList(String sql, RowMapper rowMapper) throws DataAccessException; - Map queryForMap(String sql) throws DataAccessException; + Map queryForMap(String sql) throws DataAccessException; - List> queryForMapList(String sql) throws DataAccessException; + List> queryForMapList(String sql) throws DataAccessException; - int update(String sql) throws DataAccessException; + int update(String sql) throws DataAccessException; } diff --git a/src/main/java/ghast/database/JdbcTemplate.java b/src/main/java/ghast/database/JdbcTemplate.java index 3b91032..6b66b2e 100644 --- a/src/main/java/ghast/database/JdbcTemplate.java +++ b/src/main/java/ghast/database/JdbcTemplate.java @@ -15,230 +15,230 @@ import java.util.*; @Setter public class JdbcTemplate implements JdbcOperations { - private static final String DBG_SQL_INFO = "Execute SQL: {0}"; - private DataSource dataSource; + private static final String DBG_SQL_INFO = "Execute SQL: {0}"; + private DataSource dataSource; - public JdbcTemplate(DataSource dataSource) { - setDataSource(dataSource); - } + public JdbcTemplate(DataSource dataSource) { + setDataSource(dataSource); + } - @Override - public void execute(String sql) throws DataAccessException { - XLog.debug(DBG_SQL_INFO, sql); + @Override + public void execute(String sql) throws DataAccessException { + XLog.debug(DBG_SQL_INFO, sql); - Connection connection = openConnection(); - Statement statement = null; - try { - statement = connection.createStatement(); - statement.execute(sql); - } catch (SQLException e) { - throw new DataAccessException("Error execute SQL", sql, e); - } finally { - closeStatement(statement); - closeConnection(connection); - } - } + Connection connection = openConnection(); + Statement statement = null; + try { + statement = connection.createStatement(); + statement.execute(sql); + } catch (SQLException e) { + throw new DataAccessException("Error execute SQL", sql, e); + } finally { + closeStatement(statement); + closeConnection(connection); + } + } - @Override - public T query(String sql, ResultSetExtractor rse) throws DataAccessException { - XLog.debug(DBG_SQL_INFO, sql); + @Override + public T query(String sql, ResultSetExtractor rse) throws DataAccessException { + XLog.debug(DBG_SQL_INFO, sql); - Connection connection = openConnection(); - Statement statement = null; - ResultSet resultSet = null; - try { - statement = connection.createStatement(); - resultSet = statement.executeQuery(sql); - return rse.extractData(resultSet); - } catch (SQLException e) { - throw new DataAccessException("Error execute SQL", sql, e); - } finally { - closeResultSet(resultSet); - closeStatement(statement); - closeConnection(connection); - } - } + Connection connection = openConnection(); + Statement statement = null; + ResultSet resultSet = null; + try { + statement = connection.createStatement(); + resultSet = statement.executeQuery(sql); + return rse.extractData(resultSet); + } catch (SQLException e) { + throw new DataAccessException("Error execute SQL", sql, e); + } finally { + closeResultSet(resultSet); + closeStatement(statement); + closeConnection(connection); + } + } - @Override - public Optional queryOne(String sql, ResultSetExtractor rse) throws DataAccessException { - return query(sql, rs -> { - if (rs.next()) { - return Optional.ofNullable(rse.extractData(rs)); - } else { - return Optional.empty(); - } - }); - } + @Override + public Optional queryOne(String sql, ResultSetExtractor rse) throws DataAccessException { + return query(sql, rs -> { + if (rs.next()) { + return Optional.ofNullable(rse.extractData(rs)); + } else { + return Optional.empty(); + } + }); + } - @Override - public List queryList(String sql, final RowMapper rowMapper) throws DataAccessException { - return query(sql, rs -> { - List resultList; - int rowNum = 0; - if (rs.next()) { - resultList = new ArrayList<>(); + @Override + public List queryList(String sql, final RowMapper rowMapper) throws DataAccessException { + return query(sql, rs -> { + List resultList; + int rowNum = 0; + if (rs.next()) { + resultList = new ArrayList<>(); - do { - resultList.add(rowMapper.mapRow(rs, rowNum++)); - } while (rs.next()); - } else { - resultList = Collections.emptyList(); - } + do { + resultList.add(rowMapper.mapRow(rs, rowNum++)); + } while (rs.next()); + } else { + resultList = Collections.emptyList(); + } - return resultList; - }); - } + return resultList; + }); + } - @Override - public Map queryForMap(String sql) throws DataAccessException { - return query(sql, rs -> { - if (rs.next()) { - ResultSetMetaData metaData = rs.getMetaData(); - int columnCount = metaData.getColumnCount(); + @Override + public Map queryForMap(String sql) throws DataAccessException { + return query(sql, rs -> { + if (rs.next()) { + ResultSetMetaData metaData = rs.getMetaData(); + int columnCount = metaData.getColumnCount(); - return rowToMap(columnCount, metaData, rs); - } else { - return Collections.emptyMap(); - } - }); - } + return rowToMap(columnCount, metaData, rs); + } else { + return Collections.emptyMap(); + } + }); + } - @Override - public List> queryForMapList(String sql) throws DataAccessException { - return query(sql, rs -> { - List> resultList; + @Override + public List> queryForMapList(String sql) throws DataAccessException { + return query(sql, rs -> { + List> resultList; - if (rs.next()) { - resultList = new ArrayList<>(); + if (rs.next()) { + resultList = new ArrayList<>(); - ResultSetMetaData metaData = rs.getMetaData(); - int columnCount = metaData.getColumnCount(); + ResultSetMetaData metaData = rs.getMetaData(); + int columnCount = metaData.getColumnCount(); - do { - resultList.add(rowToMap(columnCount, metaData, rs)); - } while (rs.next()); - } else { - resultList = Collections.emptyList(); - } + do { + resultList.add(rowToMap(columnCount, metaData, rs)); + } while (rs.next()); + } else { + resultList = Collections.emptyList(); + } - return resultList; - }); - } + return resultList; + }); + } - @Override - public int update(String sql) throws DataAccessException { - XLog.debug(DBG_SQL_INFO, sql); + @Override + public int update(String sql) throws DataAccessException { + XLog.debug(DBG_SQL_INFO, sql); - Connection connection = openConnection(); - Statement statement = null; - try { - statement = connection.createStatement(); - int rows = statement.executeUpdate(sql); - XLog.debug("Affected {0} rows", rows); - return rows; - } catch (SQLException e) { - XLog.error("Error execute SQL: {0}", e.getMessage(), e); - return 0; - } finally { - closeStatement(statement); - closeConnection(connection); - } - } + Connection connection = openConnection(); + Statement statement = null; + try { + statement = connection.createStatement(); + int rows = statement.executeUpdate(sql); + XLog.debug("Affected {0} rows", rows); + return rows; + } catch (SQLException e) { + XLog.error("Error execute SQL: {0}", e.getMessage(), e); + return 0; + } finally { + closeStatement(statement); + closeConnection(connection); + } + } - private Connection openConnection() { - try { - return getDataSource().getConnection(); - } catch (SQLException ex) { - throw new CannotGetJdbcConnectionException("Could not get JDBC Connection", ex); - } - } + private Connection openConnection() { + try { + return getDataSource().getConnection(); + } catch (SQLException ex) { + throw new CannotGetJdbcConnectionException("Could not get JDBC Connection", ex); + } + } - private String lookupColumnName(ResultSetMetaData resultSetMetaData, int columnIndex) throws SQLException { - String name = resultSetMetaData.getColumnLabel(columnIndex); - if (name == null || name.isEmpty()) { - name = resultSetMetaData.getColumnName(columnIndex); - } - return name; - } + private String lookupColumnName(ResultSetMetaData resultSetMetaData, int columnIndex) throws SQLException { + String name = resultSetMetaData.getColumnLabel(columnIndex); + if (name == null || name.isEmpty()) { + name = resultSetMetaData.getColumnName(columnIndex); + } + return name; + } - private Map rowToMap(int columnCount, ResultSetMetaData metaData, ResultSet rs) throws SQLException { - Map rowMap = new LinkedHashMap<>(columnCount); + private Map rowToMap(int columnCount, ResultSetMetaData metaData, ResultSet rs) throws SQLException { + Map rowMap = new LinkedHashMap<>(columnCount); - for (int i = 1; i <= columnCount; i++) { - String key = lookupColumnName(metaData, i); - Object value = getResultSetRawValue(rs, i); - rowMap.put(key, value); - } + for (int i = 1; i <= columnCount; i++) { + String key = lookupColumnName(metaData, i); + Object value = getResultSetRawValue(rs, i); + rowMap.put(key, value); + } - return rowMap; - } + return rowMap; + } - private Object getResultSetRawValue(ResultSet resultSet, int index) throws SQLException { - Object obj = resultSet.getObject(index); - if (obj == null) { - return null; - } + private Object getResultSetRawValue(ResultSet resultSet, int index) throws SQLException { + Object obj = resultSet.getObject(index); + if (obj == null) { + return null; + } - String className = obj.getClass().getName(); + String className = obj.getClass().getName(); - if (obj instanceof Blob) { - Blob blob = (Blob) obj; - obj = blob.getBytes(1, (int) blob.length()); - } else if (obj instanceof Clob) { - Clob clob = (Clob) obj; - obj = clob.getSubString(1, (int) clob.length()); - } else if ("oracle.sql.TIMESTAMP".equals(className) || "oracle.sql.TIMESTAMPTZ".equals(className)) { - obj = resultSet.getTimestamp(index); - } else if (className.startsWith("oracle.sql.DATE")) { - String metaDataClassName = resultSet.getMetaData().getColumnClassName(index); - if ("java.sql.Timestamp".equals(metaDataClassName) || "oracle.sql.TIMESTAMP".equals(metaDataClassName)) { - obj = resultSet.getTimestamp(index); - } else { - obj = resultSet.getDate(index); - } - } else if (obj instanceof Date - && "java.sql.Timestamp".equals(resultSet.getMetaData().getColumnClassName(index))) { - obj = resultSet.getTimestamp(index); - } + if (obj instanceof Blob) { + Blob blob = (Blob) obj; + obj = blob.getBytes(1, (int) blob.length()); + } else if (obj instanceof Clob) { + Clob clob = (Clob) obj; + obj = clob.getSubString(1, (int) clob.length()); + } else if ("oracle.sql.TIMESTAMP".equals(className) || "oracle.sql.TIMESTAMPTZ".equals(className)) { + obj = resultSet.getTimestamp(index); + } else if (className.startsWith("oracle.sql.DATE")) { + String metaDataClassName = resultSet.getMetaData().getColumnClassName(index); + if ("java.sql.Timestamp".equals(metaDataClassName) || "oracle.sql.TIMESTAMP".equals(metaDataClassName)) { + obj = resultSet.getTimestamp(index); + } else { + obj = resultSet.getDate(index); + } + } else if (obj instanceof Date + && "java.sql.Timestamp".equals(resultSet.getMetaData().getColumnClassName(index))) { + obj = resultSet.getTimestamp(index); + } - return obj; - } + return obj; + } - private void closeResultSet(ResultSet resultSet) { - if (resultSet != null) { - try { - resultSet.close(); - } catch (SQLException e) { - XLog.debug("Could not close JDBC ResultSet", e); - } catch (Exception e) { - XLog.debug("Unexpected exception on closing JDBC ResultSet", e); - } - } - } + private void closeResultSet(ResultSet resultSet) { + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException e) { + XLog.debug("Could not close JDBC ResultSet", e); + } catch (Exception e) { + XLog.debug("Unexpected exception on closing JDBC ResultSet", e); + } + } + } - private void closeStatement(Statement statement) { - if (statement != null) { - try { - statement.close(); - } catch (SQLException e) { - XLog.debug("Could not close JDBC Statement", e); - } catch (Exception e) { - XLog.debug("Unexpected exception on closing JDBC Statement", e); - } - } - } + private void closeStatement(Statement statement) { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + XLog.debug("Could not close JDBC Statement", e); + } catch (Exception e) { + XLog.debug("Unexpected exception on closing JDBC Statement", e); + } + } + } - private void closeConnection(Connection con) { - if (con == null) { - return; - } + private void closeConnection(Connection con) { + if (con == null) { + return; + } - try { - con.close(); - } catch (SQLException e) { - XLog.debug("Could not close JDBC Connection", e); - } catch (Exception e) { - XLog.debug("Unexpected exception on closing JDBC Connection", e); - } - } + try { + con.close(); + } catch (SQLException e) { + XLog.debug("Could not close JDBC Connection", e); + } catch (Exception e) { + XLog.debug("Unexpected exception on closing JDBC Connection", e); + } + } } diff --git a/src/main/java/ghast/database/ResultSetExtractor.java b/src/main/java/ghast/database/ResultSetExtractor.java index d08e1a7..a1af855 100644 --- a/src/main/java/ghast/database/ResultSetExtractor.java +++ b/src/main/java/ghast/database/ResultSetExtractor.java @@ -5,5 +5,5 @@ import java.sql.SQLException; public interface ResultSetExtractor { - T extractData(ResultSet rs) throws SQLException, DataAccessException; + T extractData(ResultSet rs) throws SQLException, DataAccessException; } diff --git a/src/main/java/ghast/database/RowMapper.java b/src/main/java/ghast/database/RowMapper.java index d8cd575..9b212f2 100644 --- a/src/main/java/ghast/database/RowMapper.java +++ b/src/main/java/ghast/database/RowMapper.java @@ -5,5 +5,5 @@ import java.sql.SQLException; public interface RowMapper { - T mapRow(ResultSet rs, int rowNum) throws SQLException; + T mapRow(ResultSet rs, int rowNum) throws SQLException; } diff --git a/src/main/java/ghast/scheduler/BukkitScheduleTask.java b/src/main/java/ghast/scheduler/BukkitScheduleTask.java index de4a82b..1f75243 100644 --- a/src/main/java/ghast/scheduler/BukkitScheduleTask.java +++ b/src/main/java/ghast/scheduler/BukkitScheduleTask.java @@ -8,26 +8,26 @@ import java.util.function.Supplier; @RequiredArgsConstructor public class BukkitScheduleTask implements ScheduleTask { - private final Supplier generator; - private BukkitTask bukkitTask; + private final Supplier generator; + private BukkitTask bukkitTask; - @Override - public void start() { - if (isCanceled()) { - bukkitTask = generator.get(); - } - } + @Override + public void start() { + if (isCanceled()) { + bukkitTask = generator.get(); + } + } - @Override - public boolean isCanceled() { - return bukkitTask == null || bukkitTask.isCancelled(); - } + @Override + public boolean isCanceled() { + return bukkitTask == null || bukkitTask.isCancelled(); + } - @Override - public void cancel() { - if (bukkitTask != null) { - bukkitTask.cancel(); - bukkitTask = null; - } - } + @Override + public void cancel() { + if (bukkitTask != null) { + bukkitTask.cancel(); + bukkitTask = null; + } + } } diff --git a/src/main/java/ghast/scheduler/JavaScheduleTask.java b/src/main/java/ghast/scheduler/JavaScheduleTask.java index 994d21d..a11795b 100644 --- a/src/main/java/ghast/scheduler/JavaScheduleTask.java +++ b/src/main/java/ghast/scheduler/JavaScheduleTask.java @@ -8,26 +8,26 @@ import java.util.function.Supplier; @RequiredArgsConstructor public class JavaScheduleTask implements ScheduleTask { - private final Supplier> generator; - private Future future; + private final Supplier> generator; + private Future future; - @Override - public void start() { - if (future == null || future.isDone()) { - future = generator.get(); - } - } + @Override + public void start() { + if (future == null || future.isDone()) { + future = generator.get(); + } + } - @Override - public boolean isCanceled() { - return future == null || future.isCancelled(); - } + @Override + public boolean isCanceled() { + return future == null || future.isCancelled(); + } - @Override - public void cancel() { - if (future != null) { - future.cancel(true); - future = null; - } - } + @Override + public void cancel() { + if (future != null) { + future.cancel(true); + future = null; + } + } } diff --git a/src/main/java/ghast/scheduler/ScheduleManager.java b/src/main/java/ghast/scheduler/ScheduleManager.java index f927259..a3b11ae 100644 --- a/src/main/java/ghast/scheduler/ScheduleManager.java +++ b/src/main/java/ghast/scheduler/ScheduleManager.java @@ -14,100 +14,100 @@ import java.util.concurrent.*; @SuppressWarnings("unused") public class ScheduleManager { - private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder() - .setNameFormat("ScheduleManager-Thread-%d") - .setDaemon(true) - .build(); + private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder() + .setNameFormat("ScheduleManager-Thread-%d") + .setDaemon(true) + .build(); - public Builder createTask() { - return new Builder(); - } + public Builder createTask() { + return new Builder(); + } - @NoArgsConstructor(access = AccessLevel.PRIVATE) - public static class Builder { + @NoArgsConstructor(access = AccessLevel.PRIVATE) + public static class Builder { - private static final long MS_PER_ONE_TICK = 1000L/*one second by ms*/ / 20L/*tick per second*/; - private boolean useBukkitScheduler = false; - private Long afterMs; - private Long everyMs; + private static final long MS_PER_ONE_TICK = 1000L/*one second by ms*/ / 20L/*tick per second*/; + private boolean useBukkitScheduler = false; + private Long afterMs; + private Long everyMs; - public Builder useBukkitScheduler() { - this.useBukkitScheduler = true; - return this; - } + public Builder useBukkitScheduler() { + this.useBukkitScheduler = true; + return this; + } - public Builder after(long value, TimeUnit unit) { - this.afterMs = unit.toMillis(value); - return this; - } + public Builder after(long value, TimeUnit unit) { + this.afterMs = unit.toMillis(value); + return this; + } - public Builder every(long value, TimeUnit unit) { - this.everyMs = unit.toMillis(value); - return this; - } + public Builder every(long value, TimeUnit unit) { + this.everyMs = unit.toMillis(value); + return this; + } - public ScheduleTask create(Runnable runnable) { - if (useBukkitScheduler) { - return createBukkitSchedule(runnable); - } else { - return createSchedule(runnable); - } - } + public ScheduleTask create(Runnable runnable) { + if (useBukkitScheduler) { + return createBukkitSchedule(runnable); + } else { + return createSchedule(runnable); + } + } - public ScheduleTask execute(Runnable runnable) { - ScheduleTask scheduleTask = create(runnable); - scheduleTask.start(); - return scheduleTask; - } + public ScheduleTask execute(Runnable runnable) { + ScheduleTask scheduleTask = create(runnable); + scheduleTask.start(); + return scheduleTask; + } - private ScheduleTask createBukkitSchedule(Runnable runnable) { - BukkitScheduler bukkitScheduler = Bukkit.getScheduler(); - BukkitScheduleTask resultTask; + private ScheduleTask createBukkitSchedule(Runnable runnable) { + BukkitScheduler bukkitScheduler = Bukkit.getScheduler(); + BukkitScheduleTask resultTask; - if (this.afterMs == null && this.everyMs == null) { - resultTask = new BukkitScheduleTask(() -> bukkitScheduler.runTask(GhastTools.getPlugin(), runnable)); - } else if (this.everyMs != null) { - long everyTicks = this.everyMs / MS_PER_ONE_TICK; - long afterTicks = this.afterMs != null ? this.afterMs / MS_PER_ONE_TICK : 0; - resultTask = new BukkitScheduleTask(() -> - bukkitScheduler.runTaskTimer(GhastTools.getPlugin(), runnable, afterTicks, everyTicks)); - } else { - long ticks = this.afterMs / MS_PER_ONE_TICK; - resultTask = new BukkitScheduleTask(() -> - bukkitScheduler.runTaskLater(GhastTools.getPlugin(), runnable, ticks)); - } + if (this.afterMs == null && this.everyMs == null) { + resultTask = new BukkitScheduleTask(() -> bukkitScheduler.runTask(GhastTools.getPlugin(), runnable)); + } else if (this.everyMs != null) { + long everyTicks = this.everyMs / MS_PER_ONE_TICK; + long afterTicks = this.afterMs != null ? this.afterMs / MS_PER_ONE_TICK : 0; + resultTask = new BukkitScheduleTask(() -> + bukkitScheduler.runTaskTimer(GhastTools.getPlugin(), runnable, afterTicks, everyTicks)); + } else { + long ticks = this.afterMs / MS_PER_ONE_TICK; + resultTask = new BukkitScheduleTask(() -> + bukkitScheduler.runTaskLater(GhastTools.getPlugin(), runnable, ticks)); + } - return resultTask; - } + return resultTask; + } - private ScheduleTask createSchedule(Runnable runnable) { - ExecutorService executorService; - JavaScheduleTask resultTask; + private ScheduleTask createSchedule(Runnable runnable) { + ExecutorService executorService; + JavaScheduleTask resultTask; - if (this.afterMs == null && this.everyMs == null) { - executorService = Executors.newSingleThreadExecutor(THREAD_FACTORY); - resultTask = new JavaScheduleTask(() -> executorService.submit(runnable)); - } else if (this.everyMs != null) { - ScheduledExecutorService scheduledExecutorService - = Executors.newScheduledThreadPool(1, THREAD_FACTORY); + if (this.afterMs == null && this.everyMs == null) { + executorService = Executors.newSingleThreadExecutor(THREAD_FACTORY); + resultTask = new JavaScheduleTask(() -> executorService.submit(runnable)); + } else if (this.everyMs != null) { + ScheduledExecutorService scheduledExecutorService + = Executors.newScheduledThreadPool(1, THREAD_FACTORY); - resultTask = new JavaScheduleTask(() -> - scheduledExecutorService.scheduleAtFixedRate(runnable, - this.afterMs != null ? this.afterMs : 0, - everyMs, TimeUnit.MILLISECONDS)); + resultTask = new JavaScheduleTask(() -> + scheduledExecutorService.scheduleAtFixedRate(runnable, + this.afterMs != null ? this.afterMs : 0, + everyMs, TimeUnit.MILLISECONDS)); - executorService = scheduledExecutorService; - } else { - ScheduledExecutorService scheduledExecutorService - = Executors.newScheduledThreadPool(1, THREAD_FACTORY); + executorService = scheduledExecutorService; + } else { + ScheduledExecutorService scheduledExecutorService + = Executors.newScheduledThreadPool(1, THREAD_FACTORY); - resultTask = new JavaScheduleTask(() -> - scheduledExecutorService.schedule(runnable, afterMs, TimeUnit.MILLISECONDS)); - executorService = scheduledExecutorService; - } + resultTask = new JavaScheduleTask(() -> + scheduledExecutorService.schedule(runnable, afterMs, TimeUnit.MILLISECONDS)); + executorService = scheduledExecutorService; + } - executorService.shutdown(); - return resultTask; - } - } + executorService.shutdown(); + return resultTask; + } + } } diff --git a/src/main/java/ghast/scheduler/ScheduleTask.java b/src/main/java/ghast/scheduler/ScheduleTask.java index 6a45c28..f158d13 100644 --- a/src/main/java/ghast/scheduler/ScheduleTask.java +++ b/src/main/java/ghast/scheduler/ScheduleTask.java @@ -2,9 +2,9 @@ package ghast.scheduler; public interface ScheduleTask { - void start(); + void start(); - boolean isCanceled(); + boolean isCanceled(); - void cancel(); + void cancel(); } diff --git a/src/test/java/ghast/database/JdbcTemplateTest.java b/src/test/java/ghast/database/JdbcTemplateTest.java index 97a3f97..a3a82f6 100644 --- a/src/test/java/ghast/database/JdbcTemplateTest.java +++ b/src/test/java/ghast/database/JdbcTemplateTest.java @@ -29,261 +29,261 @@ import static org.mockito.Mockito.when; class JdbcTemplateTest { - static final String JDBC_USER = "sa"; - static final String JDBC_PASSWORD = ""; - static final String JDBC_DB_NAME = "in_mem_db"; - static final String JDBC_URL = "jdbc:h2:mem:" + JDBC_DB_NAME + ";DB_CLOSE_DELAY=-1"; + static final String JDBC_USER = "sa"; + static final String JDBC_PASSWORD = ""; + static final String JDBC_DB_NAME = "in_mem_db"; + static final String JDBC_URL = "jdbc:h2:mem:" + JDBC_DB_NAME + ";DB_CLOSE_DELAY=-1"; - static final String TABLE_NAME = "TEST_TABLE"; - static final String COLUMN_ID = "ID"; - static final String COLUMN_NAME = "C_NAME"; - static final String COLUMN_VALUE = "C_VALUE"; + static final String TABLE_NAME = "TEST_TABLE"; + static final String COLUMN_ID = "ID"; + static final String COLUMN_NAME = "C_NAME"; + static final String COLUMN_VALUE = "C_VALUE"; - static final Object[][] DATA = new Object[][]{ - { "Player 1", 100 }, { "Player 2", 250 }, - { "Player 3", 0 }, { "Player 4", 780 } - }; + static final Object[][] DATA = new Object[][]{ + { "Player 1", 100 }, { "Player 2", 250 }, + { "Player 3", 0 }, { "Player 4", 780 } + }; - static DataSource dataSource; - JdbcTemplate jdbcTemplate; + static DataSource dataSource; + JdbcTemplate jdbcTemplate; - @BeforeAll - static void beforeAll() { - Logger logger = Logger.getLogger(JdbcTemplateTest.class.getName()); + @BeforeAll + static void beforeAll() { + Logger logger = Logger.getLogger(JdbcTemplateTest.class.getName()); - Plugin mockPlugin = mock(Plugin.class); - when(mockPlugin.getLogger()).thenReturn(logger); + Plugin mockPlugin = mock(Plugin.class); + when(mockPlugin.getLogger()).thenReturn(logger); - GhastTools.setPlugin(mockPlugin); + GhastTools.setPlugin(mockPlugin); - JdbcDataSource jdbcDataSource = new JdbcDataSource(); - jdbcDataSource.setUser(JDBC_USER); - jdbcDataSource.setPassword(JDBC_PASSWORD); - jdbcDataSource.setURL(JDBC_URL); + JdbcDataSource jdbcDataSource = new JdbcDataSource(); + jdbcDataSource.setUser(JDBC_USER); + jdbcDataSource.setPassword(JDBC_PASSWORD); + jdbcDataSource.setURL(JDBC_URL); - dataSource = jdbcDataSource; - } + dataSource = jdbcDataSource; + } - @BeforeEach - void before() { - jdbcTemplate = new JdbcTemplate(dataSource); - createTable(); + @BeforeEach + void before() { + jdbcTemplate = new JdbcTemplate(dataSource); + createTable(); - String sql_head = MessageFormat.format("INSERT INTO {0} ({1}, {2}) VALUES ", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE); - StringJoiner sql_sj = new StringJoiner(", "); - for (Object[] datum : DATA) { - sql_sj.add(MessageFormat.format("( ''{0}'', {1} )", datum[0], datum[1])); - } + String sql_head = MessageFormat.format("INSERT INTO {0} ({1}, {2}) VALUES ", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE); + StringJoiner sql_sj = new StringJoiner(", "); + for (Object[] datum : DATA) { + sql_sj.add(MessageFormat.format("( ''{0}'', {1} )", datum[0], datum[1])); + } - jdbcTemplate.execute(sql_head + sql_sj.toString()); - } + jdbcTemplate.execute(sql_head + sql_sj.toString()); + } - @AfterEach - void after() { - dropTable(); - } + @AfterEach + void after() { + dropTable(); + } - @Test - void testQuery_Simple_Single() { - String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}''", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); + @Test + void testQuery_Simple_Single() { + String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}''", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); - Integer value = jdbcTemplate.query(sql, rs -> { - if (rs.next()) { - return rs.getInt(1); - } else { - return null; - } - }); + Integer value = jdbcTemplate.query(sql, rs -> { + if (rs.next()) { + return rs.getInt(1); + } else { + return null; + } + }); - assertEquals(DATA[0][1], value); - } + assertEquals(DATA[0][1], value); + } - @Test - void testQuery_Simple_Optional() { - String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}''", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); + @Test + void testQuery_Simple_Optional() { + String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}''", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); - Optional optValue = jdbcTemplate.queryOne(sql, rs -> rs.getInt(1)); + Optional optValue = jdbcTemplate.queryOne(sql, rs -> rs.getInt(1)); - assertTrue(optValue.isPresent()); - assertEquals(DATA[0][1], optValue.get()); - } + assertTrue(optValue.isPresent()); + assertEquals(DATA[0][1], optValue.get()); + } - @Test - void testQuery_Simple_List() { - String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}'' OR {1} LIKE ''{4}''", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0], DATA[1][0]); + @Test + void testQuery_Simple_List() { + String sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}'' OR {1} LIKE ''{4}''", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0], DATA[1][0]); - List listValues = jdbcTemplate.queryList(sql, (rs, rowNum) -> rs.getInt(1)); + List listValues = jdbcTemplate.queryList(sql, (rs, rowNum) -> rs.getInt(1)); - assertIterableEquals(Lists.newArrayList(DATA[0][1], DATA[1][1]), listValues); - } + assertIterableEquals(Lists.newArrayList(DATA[0][1], DATA[1][1]), listValues); + } - @Test - void testQuery_Object_Single() { - String sql = MessageFormat.format("SELECT {1}, {2} FROM {0} WHERE {1} LIKE ''{3}''", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); + @Test + void testQuery_Object_Single() { + String sql = MessageFormat.format("SELECT {1}, {2} FROM {0} WHERE {1} LIKE ''{3}''", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); - Player actualPlayer = jdbcTemplate.query(sql, rs -> { - if (rs.next()) { - Player player0 = new Player(); - player0.name = rs.getString(COLUMN_NAME); - player0.value = rs.getInt(COLUMN_VALUE); + Player actualPlayer = jdbcTemplate.query(sql, rs -> { + if (rs.next()) { + Player player0 = new Player(); + player0.name = rs.getString(COLUMN_NAME); + player0.value = rs.getInt(COLUMN_VALUE); - return player0; - } else { - return null; - } - }); + return player0; + } else { + return null; + } + }); - Player expectedPlayer = new Player(); - expectedPlayer.name = (String) DATA[0][0]; - expectedPlayer.value = (int) DATA[0][1]; + Player expectedPlayer = new Player(); + expectedPlayer.name = (String) DATA[0][0]; + expectedPlayer.value = (int) DATA[0][1]; - assertEquals(expectedPlayer, actualPlayer); - } + assertEquals(expectedPlayer, actualPlayer); + } - @Test - void testQuery_Object_List() { - String sql = MessageFormat.format("SELECT {1}, {2} FROM {0}", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE); + @Test + void testQuery_Object_List() { + String sql = MessageFormat.format("SELECT {1}, {2} FROM {0}", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE); - List actualPlayers = jdbcTemplate.queryList(sql, (rs, num) -> { - Player player0 = new Player(); - player0.name = rs.getString(COLUMN_NAME); - player0.value = rs.getInt(COLUMN_VALUE); + List actualPlayers = jdbcTemplate.queryList(sql, (rs, num) -> { + Player player0 = new Player(); + player0.name = rs.getString(COLUMN_NAME); + player0.value = rs.getInt(COLUMN_VALUE); - return player0; - }); + return player0; + }); - List expectedPlayers = Stream.of(DATA) - .map(datum -> { - Player player1 = new Player(); - player1.name = (String) datum[0]; - player1.value = (int) datum[1]; + List expectedPlayers = Stream.of(DATA) + .map(datum -> { + Player player1 = new Player(); + player1.name = (String) datum[0]; + player1.value = (int) datum[1]; - return player1; - }) - .collect(Collectors.toList()); + return player1; + }) + .collect(Collectors.toList()); - assertIterableEquals(expectedPlayers, actualPlayers); - } + assertIterableEquals(expectedPlayers, actualPlayers); + } - @Test - void testQueryForMap() { - String sql = MessageFormat.format("SELECT {1}, {2} FROM {0} WHERE {1} LIKE ''{3}''", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); + @Test + void testQueryForMap() { + String sql = MessageFormat.format("SELECT {1}, {2} FROM {0} WHERE {1} LIKE ''{3}''", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, DATA[0][0]); - Map actualMap = jdbcTemplate.queryForMap(sql); + Map actualMap = jdbcTemplate.queryForMap(sql); - Map expectedMap = ImmutableMap.of( - COLUMN_NAME, DATA[0][0], - COLUMN_VALUE, DATA[0][1]); + Map expectedMap = ImmutableMap.of( + COLUMN_NAME, DATA[0][0], + COLUMN_VALUE, DATA[0][1]); - assertIterableEquals(expectedMap.entrySet(), actualMap.entrySet()); - } + assertIterableEquals(expectedMap.entrySet(), actualMap.entrySet()); + } - @Test - void testQueryForMapList() { - String sql = MessageFormat.format("SELECT {1}, {2} FROM {0}", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE); + @Test + void testQueryForMapList() { + String sql = MessageFormat.format("SELECT {1}, {2} FROM {0}", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE); - List> actualMapList = jdbcTemplate.queryForMapList(sql); + List> actualMapList = jdbcTemplate.queryForMapList(sql); - List> expectedMapList = Stream.of(DATA) - .map(datum -> ImmutableMap.of(COLUMN_NAME, datum[0], COLUMN_VALUE, datum[1])) - .collect(Collectors.toList()); + List> expectedMapList = Stream.of(DATA) + .map(datum -> ImmutableMap.of(COLUMN_NAME, datum[0], COLUMN_VALUE, datum[1])) + .collect(Collectors.toList()); - assertIterableEquals(expectedMapList, actualMapList); + assertIterableEquals(expectedMapList, actualMapList); - } + } - @Test - void testUpdate() { - String newName = "Player X"; - String sql = MessageFormat.format("UPDATE {0} SET {1} = ''{3}'' WHERE {1} LIKE ''{2}''", - TABLE_NAME, COLUMN_NAME, DATA[0][0], newName); + @Test + void testUpdate() { + String newName = "Player X"; + String sql = MessageFormat.format("UPDATE {0} SET {1} = ''{3}'' WHERE {1} LIKE ''{2}''", + TABLE_NAME, COLUMN_NAME, DATA[0][0], newName); - int rows = jdbcTemplate.update(sql); + int rows = jdbcTemplate.update(sql); - assertEquals(1, rows); + assertEquals(1, rows); - sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}''", - TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, newName); + sql = MessageFormat.format("SELECT {2} FROM {0} WHERE {1} LIKE ''{3}''", + TABLE_NAME, COLUMN_NAME, COLUMN_VALUE, newName); - Integer value = jdbcTemplate.query(sql, rs -> { - if (rs.next()) { - return rs.getInt(1); - } else { - return null; - } - }); + Integer value = jdbcTemplate.query(sql, rs -> { + if (rs.next()) { + return rs.getInt(1); + } else { + return null; + } + }); - assertEquals(DATA[0][1], value); - } + assertEquals(DATA[0][1], value); + } - private void createTable() { - jdbcTemplate.execute("CREATE TABLE " + TABLE_NAME + " (" + - COLUMN_ID + " bigint auto_increment," + - COLUMN_NAME + " varchar(16)," + - COLUMN_VALUE + " integer)"); - } + private void createTable() { + jdbcTemplate.execute("CREATE TABLE " + TABLE_NAME + " (" + + COLUMN_ID + " bigint auto_increment," + + COLUMN_NAME + " varchar(16)," + + COLUMN_VALUE + " integer)"); + } - private void dropTable() { - jdbcTemplate.execute("DROP TABLE IF EXISTS " + TABLE_NAME); - } + private void dropTable() { + jdbcTemplate.execute("DROP TABLE IF EXISTS " + TABLE_NAME); + } - class Player { - String name; - int value; + class Player { + String name; + int value; - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Player)) return false; - Player player = (Player) o; - return new EqualsBuilder().append(value, player.value).append(name, player.name).isEquals(); - } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Player)) return false; + Player player = (Player) o; + return new EqualsBuilder().append(value, player.value).append(name, player.name).isEquals(); + } - @Override - public int hashCode() { - return new HashCodeBuilder(17, 37).append(name).append(value).toHashCode(); - } - } + @Override + public int hashCode() { + return new HashCodeBuilder(17, 37).append(name).append(value).toHashCode(); + } + } - @Nested - class JdbcTemplateTest_ExecuteTestCase { + @Nested + class JdbcTemplateTest_ExecuteTestCase { - @BeforeEach - void before() { - jdbcTemplate = new JdbcTemplate(dataSource); - dropTable(); - } + @BeforeEach + void before() { + jdbcTemplate = new JdbcTemplate(dataSource); + dropTable(); + } - @AfterEach - void after() { - dropTable(); - } + @AfterEach + void after() { + dropTable(); + } - @Test - void test() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException { - createTable(); + @Test + void test() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException { + createTable(); - //region Check result - Class.forName("org.h2.Driver").newInstance(); - Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD); - ResultSet resultSet = connection.getMetaData().getTables(JDBC_DB_NAME.toUpperCase(), "PUBLIC", - TABLE_NAME.toUpperCase(), new String[]{"TABLE"}); + //region Check result + Class.forName("org.h2.Driver").newInstance(); + Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD); + ResultSet resultSet = connection.getMetaData().getTables(JDBC_DB_NAME.toUpperCase(), "PUBLIC", + TABLE_NAME.toUpperCase(), new String[]{"TABLE"}); - assertTrue(resultSet.next()); + assertTrue(resultSet.next()); - resultSet.close(); - connection.close(); - //endregion - } - } + resultSet.close(); + connection.close(); + //endregion + } + } } \ No newline at end of file