From 69635f5e6c63699864c8d20c4fa786171b54ada4 Mon Sep 17 00:00:00 2001 From: P0nk Date: Mon, 5 Apr 2021 00:19:59 +0200 Subject: [PATCH] refactor: use try-with-resources for db operations in various places --- .../command/commands/gm1/WhoDropsCommand.java | 30 ++++--- .../session/MapleSessionCoordinator.java | 42 +++------- .../java/net/server/guild/MapleGuild.java | 20 ++--- .../portal/PortalPlayerInteraction.java | 49 ++++------- .../reactor/ReactorScriptManager.java | 21 ++--- src/main/java/server/MapleMarriage.java | 21 ++--- .../MapleSkillbookInformationProvider.java | 47 ++++------- src/main/java/server/MapleStorage.java | 66 +++++++-------- .../expeditions/MapleExpeditionBossLog.java | 58 +++++-------- .../java/server/maps/MapleMapFactory.java | 84 ++++++++----------- 10 files changed, 171 insertions(+), 267 deletions(-) diff --git a/src/main/java/client/command/commands/gm1/WhoDropsCommand.java b/src/main/java/client/command/commands/gm1/WhoDropsCommand.java index 449f20e731..ee4ed99760 100644 --- a/src/main/java/client/command/commands/gm1/WhoDropsCommand.java +++ b/src/main/java/client/command/commands/gm1/WhoDropsCommand.java @@ -24,8 +24,8 @@ package client.command.commands.gm1; import client.MapleCharacter; -import client.command.Command; import client.MapleClient; +import client.command.Command; import server.MapleItemInformationProvider; import server.life.MapleMonsterInformationProvider; import tools.DatabaseConnection; @@ -48,31 +48,29 @@ public class WhoDropsCommand extends Command { player.dropMessage(5, "Please do @whodrops "); return; } - + if (c.tryacquireClient()) { try { String searchString = player.getLastCommandMessage(); String output = ""; Iterator> listIterator = MapleItemInformationProvider.getInstance().getItemDataByName(searchString).iterator(); - if(listIterator.hasNext()) { + if (listIterator.hasNext()) { int count = 1; - while(listIterator.hasNext() && count <= 3) { + while (listIterator.hasNext() && count <= 3) { Pair data = listIterator.next(); output += "#b" + data.getRight() + "#k is dropped by:\r\n"; - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT dropperid FROM drop_data WHERE itemid = ? LIMIT 50"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT dropperid FROM drop_data WHERE itemid = ? LIMIT 50")) { ps.setInt(1, data.getLeft()); - ResultSet rs = ps.executeQuery(); - while(rs.next()) { - String resultName = MapleMonsterInformationProvider.getInstance().getMobNameFromId(rs.getInt("dropperid")); - if (resultName != null) { - output += resultName + ", "; + + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + String resultName = MapleMonsterInformationProvider.getInstance().getMobNameFromId(rs.getInt("dropperid")); + if (resultName != null) { + output += resultName + ", "; + } } } - rs.close(); - ps.close(); - con.close(); } catch (Exception e) { player.dropMessage(6, "There was a problem retrieving the required data. Please try again."); e.printStackTrace(); @@ -85,7 +83,7 @@ public class WhoDropsCommand extends Command { player.dropMessage(5, "The item you searched for doesn't exist."); return; } - + c.getAbstractPlayerInteraction().npcTalk(9010000, output); } finally { c.releaseClient(); diff --git a/src/main/java/net/server/coordinator/session/MapleSessionCoordinator.java b/src/main/java/net/server/coordinator/session/MapleSessionCoordinator.java index 9f2f171552..2cb7d3880c 100644 --- a/src/main/java/net/server/coordinator/session/MapleSessionCoordinator.java +++ b/src/main/java/net/server/coordinator/session/MapleSessionCoordinator.java @@ -19,14 +19,13 @@ */ package net.server.coordinator.session; -import net.server.coordinator.login.LoginStorage; import client.MapleCharacter; import client.MapleClient; import config.YamlConfig; - import net.server.Server; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import net.server.coordinator.login.LoginStorage; import org.apache.mina.core.session.IoSession; import tools.DatabaseConnection; @@ -34,16 +33,8 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.LinkedList; -import java.util.List; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -148,10 +139,9 @@ public class MapleSessionCoordinator { } private static boolean associateHwidAccountIfAbsent(String remoteHwid, int accountId) { - try { - Connection con = DatabaseConnection.getConnection(); + try (Connection con = DatabaseConnection.getConnection()) { int hwidCount = 0; - + try (PreparedStatement ps = con.prepareStatement("SELECT SQL_CACHE hwid FROM hwidaccounts WHERE accountid = ?")) { ps.setInt(1, accountId); try (ResultSet rs = ps.executeQuery()) { @@ -160,7 +150,7 @@ public class MapleSessionCoordinator { if (rsHwid.contentEquals(remoteHwid)) { return false; } - + hwidCount++; } } @@ -169,8 +159,6 @@ public class MapleSessionCoordinator { registerAccessAccount(con, remoteHwid, accountId); return true; } - } finally { - con.close(); } } catch (SQLException ex) { ex.printStackTrace(); @@ -180,12 +168,12 @@ public class MapleSessionCoordinator { } private static boolean attemptAccessAccount(String nibbleHwid, int accountId, boolean routineCheck) { - try { - Connection con = DatabaseConnection.getConnection(); + try (Connection con = DatabaseConnection.getConnection()) { int hwidCount = 0; try (PreparedStatement ps = con.prepareStatement("SELECT SQL_CACHE * FROM hwidaccounts WHERE accountid = ?")) { ps.setInt(1, accountId); + try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { String rsHwid = rs.getString("hwid"); @@ -207,8 +195,6 @@ public class MapleSessionCoordinator { if (hwidCount < YamlConfig.config.server.MAX_ALLOWED_ACCOUNT_HWID) { return true; } - } finally { - con.close(); } } catch (SQLException ex) { ex.printStackTrace(); @@ -563,17 +549,13 @@ public class MapleSessionCoordinator { } public void runUpdateHwidHistory() { - try { - Connection con = DatabaseConnection.getConnection(); - try (PreparedStatement ps = con.prepareStatement("DELETE FROM hwidaccounts WHERE expiresat < CURRENT_TIMESTAMP")) { - ps.execute(); - } finally { - con.close(); - } + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("DELETE FROM hwidaccounts WHERE expiresat < CURRENT_TIMESTAMP")) { + ps.executeUpdate(); } catch (SQLException ex) { ex.printStackTrace(); } - + long timeNow = Server.getInstance().getCurrentTime(); List toRemove = new LinkedList<>(); for (Entry cht : cachedHostTimeout.entrySet()) { @@ -581,7 +563,7 @@ public class MapleSessionCoordinator { toRemove.add(cht.getKey()); } } - + if (!toRemove.isEmpty()) { for (String s : toRemove) { cachedHostHwids.remove(s); diff --git a/src/main/java/net/server/guild/MapleGuild.java b/src/main/java/net/server/guild/MapleGuild.java index 3c84ec956b..398c808e46 100644 --- a/src/main/java/net/server/guild/MapleGuild.java +++ b/src/main/java/net/server/guild/MapleGuild.java @@ -68,8 +68,6 @@ public class MapleGuild { ResultSet rs = ps.executeQuery()) { if (!rs.next()) { id = -1; - ps.close(); - rs.close(); return; } id = guildid; @@ -514,17 +512,13 @@ public class MapleGuild { if (mgc.isOnline()) { Server.getInstance().getWorld(mgc.getWorld()).setGuildAndRank(cid, 0, 5); } else { - try { - Connection con = DatabaseConnection.getConnection(); - try (PreparedStatement ps = con.prepareStatement("INSERT INTO notes (`to`, `from`, `message`, `timestamp`) VALUES (?, ?, ?, ?)")) { - ps.setString(1, mgc.getName()); - ps.setString(2, initiator.getName()); - ps.setString(3, "You have been expelled from the guild."); - ps.setLong(4, System.currentTimeMillis()); - ps.executeUpdate(); - } - - con.close(); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("INSERT INTO notes (`to`, `from`, `message`, `timestamp`) VALUES (?, ?, ?, ?)")) { + ps.setString(1, mgc.getName()); + ps.setString(2, initiator.getName()); + ps.setString(3, "You have been expelled from the guild."); + ps.setLong(4, System.currentTimeMillis()); + ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); System.out.println("expelMember - MapleGuild " + e); diff --git a/src/main/java/scripting/portal/PortalPlayerInteraction.java b/src/main/java/scripting/portal/PortalPlayerInteraction.java index ad23c6703b..59589d6c47 100644 --- a/src/main/java/scripting/portal/PortalPlayerInteraction.java +++ b/src/main/java/scripting/portal/PortalPlayerInteraction.java @@ -22,16 +22,17 @@ package scripting.portal; import client.MapleClient; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; import scripting.AbstractPlayerInteraction; import scripting.map.MapScriptManager; import server.maps.MaplePortal; import tools.DatabaseConnection; import tools.MaplePacketCreator; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + public class PortalPlayerInteraction extends AbstractPlayerInteraction { private MaplePortal portal; @@ -44,49 +45,31 @@ public class PortalPlayerInteraction extends AbstractPlayerInteraction { public MaplePortal getPortal() { return portal; } - + public void runMapScript() { MapScriptManager msm = MapScriptManager.getInstance(); msm.runMapScript(c, "onUserEnter/" + portal.getScriptName(), false); } public boolean hasLevel30Character() { - PreparedStatement ps = null; - ResultSet rs = null; - Connection con = null; - try { - con = DatabaseConnection.getConnection(); - ps = con.prepareStatement("SELECT `level` FROM `characters` WHERE accountid = ?"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT `level` FROM `characters` WHERE accountid = ?")) { ps.setInt(1, getPlayer().getAccountID()); - rs = ps.executeQuery(); - while (rs.next()) { - if (rs.getInt("level") >= 30) { - ps.close(); - rs.close(); - return true; + + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + if (rs.getInt("level") >= 30) { + return true; + } } } } catch (SQLException sqle) { sqle.printStackTrace(); - } finally { - try { - if (ps != null && !ps.isClosed()) { - ps.close(); - } - if (rs != null && !rs.isClosed()) { - rs.close(); - } - if (con != null && !con.isClosed()) { - con.close(); - } - } catch (SQLException ex) { - ex.printStackTrace(); - } } - + return getPlayer().getLevel() >= 30; } - + public void blockPortal() { c.getPlayer().blockPortal(getPortal().getScriptName()); } diff --git a/src/main/java/scripting/reactor/ReactorScriptManager.java b/src/main/java/scripting/reactor/ReactorScriptManager.java index 7fcb1acacc..737bb21235 100644 --- a/src/main/java/scripting/reactor/ReactorScriptManager.java +++ b/src/main/java/scripting/reactor/ReactorScriptManager.java @@ -22,6 +22,14 @@ along with this program. If not, see . package scripting.reactor; import client.MapleClient; +import jdk.nashorn.api.scripting.NashornScriptEngine; +import scripting.AbstractScriptManager; +import server.maps.MapleReactor; +import server.maps.ReactorDropEntry; +import tools.DatabaseConnection; +import tools.FilePrinter; + +import javax.script.ScriptException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -29,14 +37,6 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import javax.script.ScriptException; - -import jdk.nashorn.api.scripting.NashornScriptEngine; -import scripting.AbstractScriptManager; -import server.maps.MapleReactor; -import server.maps.ReactorDropEntry; -import tools.DatabaseConnection; -import tools.FilePrinter; /** * @author Lerk @@ -83,8 +83,7 @@ public class ReactorScriptManager extends AbstractScriptManager { List ret = drops.get(rid); if (ret == null) { ret = new LinkedList<>(); - try { - Connection con = DatabaseConnection.getConnection(); + try (Connection con = DatabaseConnection.getConnection()) { try (PreparedStatement ps = con.prepareStatement("SELECT itemid, chance, questid FROM reactordrops WHERE reactorid = ? AND chance >= 0")) { ps.setInt(1, rid); try (ResultSet rs = ps.executeQuery()) { @@ -93,8 +92,6 @@ public class ReactorScriptManager extends AbstractScriptManager { } } } - - con.close(); } catch (Throwable e) { FilePrinter.printError(FilePrinter.REACTOR + rid + ".txt", e); } diff --git a/src/main/java/server/MapleMarriage.java b/src/main/java/server/MapleMarriage.java index 1fcae81703..3f9110b846 100644 --- a/src/main/java/server/MapleMarriage.java +++ b/src/main/java/server/MapleMarriage.java @@ -19,23 +19,24 @@ */ package server; -import client.MapleClient; import client.MapleCharacter; +import client.MapleClient; import client.inventory.Item; import client.inventory.ItemFactory; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.manipulator.MapleInventoryManipulator; import scripting.event.EventInstanceManager; +import scripting.event.EventManager; +import tools.DatabaseConnection; +import tools.Pair; + import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import scripting.event.EventManager; -import tools.DatabaseConnection; -import tools.Pair; /** * @@ -118,10 +119,8 @@ public class MapleMarriage extends EventInstanceManager { public static boolean claimGiftItems(MapleClient c, MapleCharacter chr) { List gifts = loadGiftItemsFromDb(c, chr.getId()); if (MapleInventory.checkSpot(chr, gifts)) { - try { - Connection con = DatabaseConnection.getConnection(); - ItemFactory.MARRIAGE_GIFTS.saveItems(new LinkedList>(), chr.getId(), con); - con.close(); + try (Connection con = DatabaseConnection.getConnection()) { + ItemFactory.MARRIAGE_GIFTS.saveItems(new LinkedList<>(), chr.getId(), con); } catch (SQLException sqle) { sqle.printStackTrace(); } @@ -159,11 +158,9 @@ public class MapleMarriage extends EventInstanceManager { for (Item it : giftItems) { items.add(new Pair<>(it, it.getInventoryType())); } - - try { - Connection con = DatabaseConnection.getConnection(); + + try (Connection con = DatabaseConnection.getConnection()) { ItemFactory.MARRIAGE_GIFTS.saveItems(items, cid, con); - con.close(); } catch (SQLException sqle) { sqle.printStackTrace(); } diff --git a/src/main/java/server/MapleSkillbookInformationProvider.java b/src/main/java/server/MapleSkillbookInformationProvider.java index fdc2f4ab21..444f3563dc 100644 --- a/src/main/java/server/MapleSkillbookInformationProvider.java +++ b/src/main/java/server/MapleSkillbookInformationProvider.java @@ -19,22 +19,6 @@ */ package server; -import java.io.File; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Scanner; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import client.MapleCharacter; import provider.MapleData; import provider.MapleDataProvider; @@ -42,6 +26,16 @@ import provider.MapleDataProviderFactory; import provider.MapleDataTool; import tools.DatabaseConnection; +import java.io.File; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * * @author RonanLana @@ -165,25 +159,18 @@ public class MapleSkillbookInformationProvider { } private static void fetchSkillbooksFromReactors() { - Connection con = null; - try { - con = DatabaseConnection.getConnection(); - - PreparedStatement ps = con.prepareStatement("SELECT itemid FROM reactordrops WHERE itemid >= ? AND itemid < ?;"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT itemid FROM reactordrops WHERE itemid >= ? AND itemid < ?;")) { ps.setInt(1, skillbookMinItemid); ps.setInt(2, skillbookMaxItemid); - ResultSet rs = ps.executeQuery(); - if (rs.isBeforeFirst()) { - while(rs.next()) { - foundSkillbooks.put(rs.getInt("itemid"), SkillBookEntry.REACTOR); + try (ResultSet rs = ps.executeQuery()) { + if (rs.isBeforeFirst()) { + while (rs.next()) { + foundSkillbooks.put(rs.getInt("itemid"), SkillBookEntry.REACTOR); + } } } - - rs.close(); - ps.close(); - - con.close(); } catch (SQLException sqle) { sqle.printStackTrace(); } diff --git a/src/main/java/server/MapleStorage.java b/src/main/java/server/MapleStorage.java index f1dd374fb8..60ff667f5f 100644 --- a/src/main/java/server/MapleStorage.java +++ b/src/main/java/server/MapleStorage.java @@ -23,29 +23,24 @@ import client.inventory.Item; import client.inventory.ItemFactory; import client.inventory.MapleInventoryType; import constants.game.GameConstants; +import net.server.audit.locks.MonitoredLockType; +import net.server.audit.locks.factory.MonitoredReentrantLockFactory; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; + import java.io.File; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.locks.Lock; -import provider.MapleData; -import provider.MapleDataProvider; -import provider.MapleDataProviderFactory; -import provider.MapleDataTool; -import net.server.audit.locks.factory.MonitoredReentrantLockFactory; -import tools.DatabaseConnection; -import tools.MaplePacketCreator; -import tools.Pair; -import net.server.audit.locks.MonitoredLockType; -import tools.FilePrinter; /** * @@ -70,39 +65,34 @@ public class MapleStorage { } private static MapleStorage create(int id, int world) throws SQLException { - Connection con = DatabaseConnection.getConnection(); - try (PreparedStatement ps = con.prepareStatement("INSERT INTO storages (accountid, world, slots, meso) VALUES (?, ?, 4, 0)")) { + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("INSERT INTO storages (accountid, world, slots, meso) VALUES (?, ?, 4, 0)")) { ps.setInt(1, id); ps.setInt(2, world); ps.executeUpdate(); } - con.close(); - + return loadOrCreateFromDB(id, world); } public static MapleStorage loadOrCreateFromDB(int id, int world) { - try { - MapleStorage ret; - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT storageid, slots, meso FROM storages WHERE accountid = ? AND world = ?"); + MapleStorage ret; + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT storageid, slots, meso FROM storages WHERE accountid = ? AND world = ?")) { ps.setInt(1, id); ps.setInt(2, world); - - ResultSet rs = ps.executeQuery(); - if (rs.next()) { - ret = new MapleStorage(rs.getInt("storageid"), (byte) rs.getInt("slots"), rs.getInt("meso")); - for (Pair item : ItemFactory.STORAGE.loadItems(ret.id, false)) { - ret.items.add(item.getLeft()); + + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + ret = new MapleStorage(rs.getInt("storageid"), (byte) rs.getInt("slots"), rs.getInt("meso")); + for (Pair item : ItemFactory.STORAGE.loadItems(ret.id, false)) { + ret.items.add(item.getLeft()); + } + } else { + ret = create(id, world); } - } else { - ret = create(id, world); } - - rs.close(); - ps.close(); - con.close(); - + return ret; } catch (SQLException ex) { // exceptions leading to deploy null storages found thanks to Jefe FilePrinter.printError(FilePrinter.STORAGE, ex, "SQL error occurred when trying to load storage for accountid " + id + ", world " + GameConstants.WORLD_NAMES[world]); diff --git a/src/main/java/server/expeditions/MapleExpeditionBossLog.java b/src/main/java/server/expeditions/MapleExpeditionBossLog.java index 613aec1b0e..9907e65c0e 100644 --- a/src/main/java/server/expeditions/MapleExpeditionBossLog.java +++ b/src/main/java/server/expeditions/MapleExpeditionBossLog.java @@ -19,19 +19,15 @@ */ package server.expeditions; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Timestamp; -import java.util.Calendar; -import java.util.LinkedList; -import java.util.List; - import config.YamlConfig; import tools.DatabaseConnection; import tools.Pair; +import java.sql.*; +import java.util.Calendar; +import java.util.LinkedList; +import java.util.List; + /** * * @author Conrad @@ -123,18 +119,14 @@ public class MapleExpeditionBossLog { private static void resetBossLogTable(boolean week, Calendar c) { List> resetTimestamps = BossLogEntry.getBossLogResetTimestamps(c, week); - try { - Connection con = DatabaseConnection.getConnection(); - + try (Connection con = DatabaseConnection.getConnection()) { for (Pair p : resetTimestamps) { - PreparedStatement ps = con.prepareStatement("DELETE FROM " + getBossLogTable(week) + " WHERE attempttime <= ? AND bosstype LIKE ?"); - ps.setTimestamp(1, p.getLeft()); - ps.setString(2, p.getRight().name()); - ps.executeUpdate(); - ps.close(); + try (PreparedStatement ps = con.prepareStatement("DELETE FROM " + getBossLogTable(week) + " WHERE attempttime <= ? AND bosstype LIKE ?")) { + ps.setTimestamp(1, p.getLeft()); + ps.setString(2, p.getRight().name()); + ps.executeUpdate(); + } } - - con.close(); } catch (SQLException e) { e.printStackTrace(); } @@ -146,21 +138,18 @@ public class MapleExpeditionBossLog { private static int countPlayerEntries(int cid, BossLogEntry boss) { int ret_count = 0; - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps; - ps = con.prepareStatement("SELECT COUNT(*) FROM " + getBossLogTable(boss.week) + " WHERE characterid = ? AND bosstype LIKE ?"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM " + getBossLogTable(boss.week) + " WHERE characterid = ? AND bosstype LIKE ?")) { ps.setInt(1, cid); ps.setString(2, boss.name()); - ResultSet rs = ps.executeQuery(); - if (rs.next()) { - ret_count = rs.getInt(1); - } else { - ret_count = -1; + + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + ret_count = rs.getInt(1); + } else { + ret_count = -1; + } } - rs.close(); - ps.close(); - con.close(); return ret_count; } catch (SQLException e) { e.printStackTrace(); @@ -169,14 +158,11 @@ public class MapleExpeditionBossLog { } private static void insertPlayerEntry(int cid, BossLogEntry boss) { - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO " + getBossLogTable(boss.week) + " (characterid, bosstype) VALUES (?,?)"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("INSERT INTO " + getBossLogTable(boss.week) + " (characterid, bosstype) VALUES (?,?)")) { ps.setInt(1, cid); ps.setString(2, boss.name()); ps.executeUpdate(); - ps.close(); - con.close(); } catch (SQLException e) { e.printStackTrace(); } diff --git a/src/main/java/server/maps/MapleMapFactory.java b/src/main/java/server/maps/MapleMapFactory.java index 660a290115..3736c3b3b9 100644 --- a/src/main/java/server/maps/MapleMapFactory.java +++ b/src/main/java/server/maps/MapleMapFactory.java @@ -21,8 +21,17 @@ */ package server.maps; -import java.awt.Point; -import java.awt.Rectangle; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import scripting.event.EventInstanceManager; +import server.life.*; +import server.partyquest.GuardianSpawnPoint; +import tools.DatabaseConnection; +import tools.StringUtil; + +import java.awt.*; import java.io.File; import java.sql.Connection; import java.sql.PreparedStatement; @@ -31,19 +40,6 @@ import java.sql.SQLException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import provider.MapleData; -import provider.MapleDataProvider; -import provider.MapleDataProviderFactory; -import provider.MapleDataTool; -import server.life.AbstractLoadedMapleLife; -import server.life.MapleLifeFactory; -import server.life.MapleMonster; -import server.life.MaplePlayerNPC; -import server.life.MaplePlayerNPCFactory; -import scripting.event.EventInstanceManager; -import server.partyquest.GuardianSpawnPoint; -import tools.DatabaseConnection; -import tools.StringUtil; public class MapleMapFactory { @@ -84,33 +80,29 @@ public class MapleMapFactory { } private static void loadLifeFromDb(MapleMap map) { - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT * FROM plife WHERE map = ? and world = ?"); + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM plife WHERE map = ? and world = ?")) { ps.setInt(1, map.getId()); ps.setInt(2, map.getWorld()); - ResultSet rs = ps.executeQuery(); - while (rs.next()) { - int id = rs.getInt("life"); - String type = rs.getString("type"); - int cy = rs.getInt("cy"); - int f = rs.getInt("f"); - int fh = rs.getInt("fh"); - int rx0 = rs.getInt("rx0"); - int rx1 = rs.getInt("rx1"); - int x = rs.getInt("x"); - int y = rs.getInt("y"); - int hide = rs.getInt("hide"); - int mobTime = rs.getInt("mobtime"); - int team = rs.getInt("team"); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + int id = rs.getInt("life"); + String type = rs.getString("type"); + int cy = rs.getInt("cy"); + int f = rs.getInt("f"); + int fh = rs.getInt("fh"); + int rx0 = rs.getInt("rx0"); + int rx1 = rs.getInt("rx1"); + int x = rs.getInt("x"); + int y = rs.getInt("y"); + int hide = rs.getInt("hide"); + int mobTime = rs.getInt("mobtime"); + int team = rs.getInt("team"); - loadLifeRaw(map, id, type, cy, f, fh, rx0, rx1, x, y, hide, mobTime, team); + loadLifeRaw(map, id, type, cy, f, fh, rx0, rx1, x, y, hide, mobTime, team); + } } - - rs.close(); - ps.close(); - con.close(); } catch (SQLException sqle) { sqle.printStackTrace(); } @@ -243,18 +235,16 @@ public class MapleMapFactory { map.setSeats(seats); } if (event == null) { - try { - Connection con = DatabaseConnection.getConnection(); - try (PreparedStatement ps = con.prepareStatement("SELECT * FROM playernpcs WHERE map = ? AND world = ?")) { - ps.setInt(1, mapid); - ps.setInt(2, world); - try (ResultSet rs = ps.executeQuery()) { - while (rs.next()) { - map.addPlayerNPCMapObject(new MaplePlayerNPC(rs)); - } + try (Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM playernpcs WHERE map = ? AND world = ?")) { + ps.setInt(1, mapid); + ps.setInt(2, world); + + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + map.addPlayerNPCMapObject(new MaplePlayerNPC(rs)); } } - con.close(); } catch (SQLException e) { e.printStackTrace(); }