refactor: use try-with-resources for db operations in various handlers

This commit is contained in:
P0nk
2021-04-05 00:11:42 +02:00
parent 429f82e4fe
commit e13c313839
5 changed files with 222 additions and 229 deletions

View File

@@ -21,19 +21,12 @@
*/
package net.server.channel.handlers;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import config.YamlConfig;
import client.MapleCharacter;
import client.MapleClient;
import client.inventory.Equip;
import client.inventory.Item;
import client.processor.action.BuybackProcessor;
import config.YamlConfig;
import net.AbstractMaplePacketHandler;
import net.server.Server;
import server.MTSItemInfo;
@@ -43,6 +36,13 @@ import tools.DatabaseConnection;
import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public final class EnterMTSHandler extends AbstractMaplePacketHandler {
@Override
@@ -120,10 +120,9 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
c.announce(MaplePacketCreator.showMTSCash(c.getPlayer()));
List<MTSItemInfo> items = new ArrayList<>();
int pages = 0;
try {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = 1 AND transfer = 0 ORDER BY id DESC LIMIT 16, 16");
ResultSet rs = ps.executeQuery();
try (Connection con = DatabaseConnection.getConnection();) {
try (PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = 1 AND transfer = 0 ORDER BY id DESC LIMIT 16, 16");
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
if (rs.getInt("type") != 1) {
Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity"));
@@ -161,17 +160,14 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
items.add(new MTSItemInfo((Item) equip, rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends")));
}
}
rs.close();
ps.close();
}
ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items");
rs = ps.executeQuery();
try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items");
ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
pages = (int) Math.ceil(rs.getInt(1) / 16);
}
rs.close();
ps.close();
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
@@ -183,10 +179,10 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
private List<MTSItemInfo> getNotYetSold(int cid) {
List<MTSItemInfo> items = new ArrayList<>();
try {
Connection con = DatabaseConnection.getConnection();
try (PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 0 ORDER BY id DESC")) {
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 0 ORDER BY id DESC")) {
ps.setInt(1, cid);
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
if (rs.getInt("type") != 1) {
@@ -225,8 +221,6 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
}
}
}
}
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
@@ -235,10 +229,10 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
private List<MTSItemInfo> getTransfer(int cid) {
List<MTSItemInfo> items = new ArrayList<>();
try {
Connection con = DatabaseConnection.getConnection();
try (PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE transfer = 1 AND seller = ? ORDER BY id DESC")) {
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE transfer = 1 AND seller = ? ORDER BY id DESC")) {
ps.setInt(1, cid);
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
if (rs.getInt("type") != 1) {
@@ -277,8 +271,6 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
}
}
}
}
con.close();
} catch (SQLException e) {
e.printStackTrace();
}

View File

@@ -21,16 +21,16 @@
*/
package net.server.channel.handlers;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import tools.DatabaseConnection;
import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import client.MapleClient;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public final class NoteActionHandler extends AbstractMaplePacketHandler {
@Override
@@ -40,8 +40,9 @@ public final class NoteActionHandler extends AbstractMaplePacketHandler {
String charname = slea.readMapleAsciiString();
String message = slea.readMapleAsciiString();
try {
if (c.getPlayer().getCashShop().isOpened())
if (c.getPlayer().getCashShop().isOpened()) {
c.announce(MaplePacketCreator.showCashInventory(c));
}
c.getPlayer().sendNote(charname, message, (byte) 1);
c.getPlayer().getCashShop().decreaseNotes();
@@ -56,21 +57,22 @@ public final class NoteActionHandler extends AbstractMaplePacketHandler {
for (int i = 0; i < num; i++) {
int id = slea.readInt();
slea.readByte(); //Fame, but we read it from the database :)
PreparedStatement ps;
try {
Connection con = DatabaseConnection.getConnection();
ps = con.prepareStatement("SELECT `fame` FROM notes WHERE id=? AND deleted=0");
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next())
fame += rs.getInt("fame");
rs.close();
ps = con.prepareStatement("UPDATE notes SET `deleted` = 1 WHERE id = ?");
try (Connection con = DatabaseConnection.getConnection()) {
try (PreparedStatement ps = con.prepareStatement("SELECT `fame` FROM notes WHERE id=? AND deleted=0")) {
ps.setInt(1, id);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
fame += rs.getInt("fame");
}
}
}
try (PreparedStatement ps = con.prepareStatement("UPDATE notes SET `deleted` = 1 WHERE id = ?")) {
ps.setInt(1, id);
ps.executeUpdate();
ps.close();
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}

View File

@@ -21,19 +21,19 @@
*/
package net.server.channel.handlers;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Calendar;
import client.MapleCharacter;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.server.Server;
import tools.DatabaseConnection;
import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import client.MapleCharacter;
import client.MapleClient;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Calendar;
/*
*
@@ -84,10 +84,8 @@ public final class ReportHandler extends AbstractMaplePacketHandler {
public void addReport(int reporterid, int victimid, int reason, String description, String chatlog) {
Calendar calendar = Calendar.getInstance();
Timestamp currentTimestamp = new java.sql.Timestamp(calendar.getTime().getTime());
Connection con;
try {
con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO reports (`reporttime`, `reporterid`, `victimid`, `reason`, `chatlog`, `description`) VALUES (?, ?, ?, ?, ?, ?)");
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO reports (`reporttime`, `reporterid`, `victimid`, `reason`, `chatlog`, `description`) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, currentTimestamp.toGMTString().toString());
ps.setInt(2, reporterid);
ps.setInt(3, victimid);
@@ -96,8 +94,6 @@ public final class ReportHandler extends AbstractMaplePacketHandler {
ps.setString(6, description);
ps.addBatch();
ps.executeBatch();
ps.close();
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}

View File

@@ -21,10 +21,9 @@
*/
package net.server.channel.handlers;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import client.MapleCharacter;
import client.MapleClient;
import client.autoban.AutobanFactory;
import config.YamlConfig;
import net.AbstractMaplePacketHandler;
import net.server.world.World;
@@ -33,10 +32,11 @@ import tools.FilePrinter;
import tools.LogHelper;
import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import client.MapleCharacter;
import client.MapleClient;
import client.autoban.AutobanFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
@@ -101,20 +101,18 @@ public final class WhisperHandler extends AbstractMaplePacketHandler {
c.announce(MaplePacketCreator.getFindReply(victim.getName(), victim.getMap().getId(), 1));
}
} else if (c.getPlayer().isGM()) { // not found
try {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT gm FROM characters WHERE name = ?");
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT gm FROM characters WHERE name = ?")) {
ps.setString(1, recipient);
ResultSet rs = ps.executeQuery();
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
if (rs.getInt("gm") >= c.getPlayer().gmLevel()) {
c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 0));
return;
}
}
rs.close();
ps.close();
con.close();
}
byte channel = (byte) (c.getWorldServer().find(recipient) - 1);
if (channel > -1) {
c.announce(MaplePacketCreator.getFindReply(recipient, channel, 3));

View File

@@ -21,11 +21,6 @@
*/
package net.server.handlers.login;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import client.MapleClient;
import client.MapleFamily;
import net.AbstractMaplePacketHandler;
@@ -35,6 +30,11 @@ import tools.FilePrinter;
import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public final class DeleteCharHandler extends AbstractMaplePacketHandler {
@Override
@@ -47,36 +47,41 @@ public final class DeleteCharHandler extends AbstractMaplePacketHandler {
PreparedStatement ps = con.prepareStatement("SELECT `world`, `guildid`, `guildrank`, `familyId` FROM characters WHERE id = ?");
PreparedStatement ps2 = con.prepareStatement("SELECT COUNT(*) as rowcount FROM worldtransfers WHERE `characterid` = ? AND completionTime IS NULL")) {
ps.setInt(1, cid);
ResultSet rs = ps.executeQuery();
if(!rs.next()) throw new SQLException("Character record does not exist.");
try (ResultSet rs = ps.executeQuery()) {
if (!rs.next()) {
throw new SQLException("Character record does not exist.");
}
int world = rs.getInt("world");
int guildId = rs.getInt("guildid");
int guildRank = rs.getInt("guildrank");
int familyId = rs.getInt("familyId");
if(guildId != 0 && guildRank <= 1) {
if (guildId != 0 && guildRank <= 1) {
c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x16));
return;
} else if(familyId != -1) {
} else if (familyId != -1) {
MapleFamily family = Server.getInstance().getWorld(world).getFamily(familyId);
if(family != null && family.getTotalMembers() > 1) {
if (family != null && family.getTotalMembers() > 1) {
c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x1D));
return;
}
}
rs.close();
}
ps2.setInt(1, cid);
rs = ps2.executeQuery();
try (ResultSet rs = ps2.executeQuery()) {
rs.next();
if(rs.getInt("rowcount") > 0) {
if (rs.getInt("rowcount") > 0) {
c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x1A));
return;
}
} catch(SQLException e) {
}
} catch (SQLException e) {
e.printStackTrace();
c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x09));
return;
}
if(c.deleteCharacter(cid, c.getAccID())) {
if (c.deleteCharacter(cid, c.getAccID())) {
FilePrinter.print(FilePrinter.DELETED_CHAR + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid);
c.announce(MaplePacketCreator.deleteCharResponse(cid, 0));
} else {