From 429f82e4feddef14fbbd67f9a9d31061023375d3 Mon Sep 17 00:00:00 2001 From: P0nk Date: Mon, 5 Apr 2021 00:09:51 +0200 Subject: [PATCH] refactor: use try-with-resources for nx coupon db operations --- .../channel/handlers/CouponCodeHandler.java | 131 +++++++++--------- 1 file changed, 63 insertions(+), 68 deletions(-) diff --git a/src/main/java/net/server/channel/handlers/CouponCodeHandler.java b/src/main/java/net/server/channel/handlers/CouponCodeHandler.java index 2dfb6f86e4..0baa0106e4 100644 --- a/src/main/java/net/server/channel/handlers/CouponCodeHandler.java +++ b/src/main/java/net/server/channel/handlers/CouponCodeHandler.java @@ -23,20 +23,10 @@ */ package net.server.channel.handlers; -import client.MapleClient; import client.MapleCharacter; +import client.MapleClient; import client.inventory.Item; import client.inventory.manipulator.MapleInventoryManipulator; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Arrays; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import net.AbstractMaplePacketHandler; import net.server.Server; import server.CashShop; @@ -47,6 +37,13 @@ import tools.MaplePacketCreator; import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; +import java.util.Map.Entry; + /** * * @author Penguins (Acrylic) @@ -58,34 +55,33 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { Map couponItems = new HashMap<>(); Map couponPoints = new HashMap<>(5); - PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode_items WHERE codeid = ?"); - ps.setInt(1, codeid); + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode_items WHERE codeid = ?")) { + ps.setInt(1, codeid); - ResultSet rs = ps.executeQuery(); - while (rs.next()) { - int type = rs.getInt("type"), quantity = rs.getInt("quantity"); - if (type < 5) { - Integer i = couponPoints.get(type); - if (i != null) { - couponPoints.put(type, i + quantity); - } else { - couponPoints.put(type, quantity); - } - } else { - int item = rs.getInt("item"); - - Integer i = couponItems.get(item); - if (i != null) { - couponItems.put(item, i + quantity); - } else { - couponItems.put(item, quantity); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + int type = rs.getInt("type"), quantity = rs.getInt("quantity"); + if (type < 5) { + Integer i = couponPoints.get(type); + if (i != null) { + couponPoints.put(type, i + quantity); + } else { + couponPoints.put(type, quantity); + } + } else { + int item = rs.getInt("item"); + + Integer i = couponItems.get(item); + if (i != null) { + couponItems.put(item, i + quantity); + } else { + couponItems.put(item, quantity); + } + } } } } - rs.close(); - ps.close(); - List>> ret = new LinkedList<>(); if (!couponItems.isEmpty()) { for (Entry e : couponItems.entrySet()) { @@ -122,44 +118,43 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler { if (!c.attemptCsCoupon()) { return new Pair<>(-5, null); } - - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode WHERE code = ?"); - ps.setString(1, code); - - ResultSet rs = ps.executeQuery(); - if (!rs.next()) { - return new Pair<>(-1, null); + + try (Connection con = DatabaseConnection.getConnection()) { + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode WHERE code = ?")) { + ps.setString(1, code); + + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + return new Pair<>(-1, null); + } + + if (rs.getString("retriever") != null) { + return new Pair<>(-2, null); + } + + if (rs.getLong("expiration") < Server.getInstance().getCurrentTime()) { + return new Pair<>(-3, null); + } + + final int codeid = rs.getInt("id"); + + ret = getNXCodeItems(chr, con, codeid); + if (ret == null) { + return new Pair<>(-4, null); + } + } + } + + try (PreparedStatement ps = con.prepareStatement("UPDATE nxcode SET retriever = ? WHERE code = ?")) { + ps.setString(1, chr.getName()); + ps.setString(2, code); + ps.executeUpdate(); + } } - - if (rs.getString("retriever") != null) { - return new Pair<>(-2, null); - } - - if (rs.getLong("expiration") < Server.getInstance().getCurrentTime()) { - return new Pair<>(-3, null); - } - - int codeid = rs.getInt("id"); - rs.close(); - ps.close(); - - ret = getNXCodeItems(chr, con, codeid); - if (ret == null) { - return new Pair<>(-4, null); - } - - ps = con.prepareStatement("UPDATE nxcode SET retriever = ? WHERE code = ?"); - ps.setString(1, chr.getName()); - ps.setString(2, code); - ps.executeUpdate(); - - ps.close(); - con.close(); } catch (SQLException ex) { ex.printStackTrace(); } - + c.resetCsCoupon(); return new Pair<>(0, ret); }