Pārlūkot izejas kodu

BETA: Extensively use of try-with-resource:
* Using Statement instead PreparedStatement for queries with no parameters!
* Fixed many warning related to resource leaks.
* Rework of NpcTable to avoid duplicated code for retail and custom NPC data tables.

Zoey76 13 gadi atpakaļ
vecāks
revīzija
3c877226ff
39 mainītis faili ar 1427 papildinājumiem un 1524 dzēšanām
  1. 6 5
      L2J_Server_BETA/java/com/l2jserver/Config.java
  2. 4 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/GameServer.java
  3. 10 10
      L2J_Server_BETA/java/com/l2jserver/gameserver/LoginServerThread.java
  4. 115 114
      L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSigns.java
  5. 94 100
      L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSignsFestival.java
  6. 73 77
      L2J_Server_BETA/java/com/l2jserver/gameserver/TradeController.java
  7. 6 5
      L2J_Server_BETA/java/com/l2jserver/gameserver/cache/CrestCache.java
  8. 49 50
      L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/BB/Forum.java
  9. 49 41
      L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/BB/Post.java
  10. 18 17
      L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/BB/Topic.java
  11. 9 9
      L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/Manager/ForumsBBSManager.java
  12. 48 40
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/CharNameTable.java
  13. 97 110
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/CharSummonTable.java
  14. 38 38
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ClanTable.java
  15. 6 7
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/HelperBuffTable.java
  16. 21 24
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/LevelUpData.java
  17. 287 381
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/NpcTable.java
  18. 14 14
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/PetNameTable.java
  19. 34 36
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/TeleportLocationTable.java
  20. 18 15
      L2J_Server_BETA/java/com/l2jserver/gameserver/idfactory/CompactionIDFactory.java
  21. 9 9
      L2J_Server_BETA/java/com/l2jserver/gameserver/idfactory/IdFactory.java
  22. 13 11
      L2J_Server_BETA/java/com/l2jserver/gameserver/idfactory/StackIDFactory.java
  23. 22 25
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/AirShipManager.java
  24. 41 39
      L2J_Server_BETA/java/com/l2jserver/gameserver/scripting/L2ScriptEngineManager.java
  25. 5 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/taskmanager/tasks/TaskDailyQuestClean.java
  26. 5 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/taskmanager/tasks/TaskDailySkillReuseClean.java
  27. 12 11
      L2J_Server_BETA/java/com/l2jserver/gameserver/taskmanager/tasks/TaskRecom.java
  28. 5 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/util/Evolve.java
  29. 16 14
      L2J_Server_BETA/java/com/l2jserver/loginserver/GameServerTable.java
  30. 15 12
      L2J_Server_BETA/java/com/l2jserver/loginserver/network/gameserverpackets/ChangePassword.java
  31. 8 7
      L2J_Server_BETA/java/com/l2jserver/loginserver/network/gameserverpackets/RequestTempBan.java
  32. 4 4
      L2J_Server_BETA/java/com/l2jserver/status/Status.java
  33. 45 50
      L2J_Server_BETA/java/com/l2jserver/tools/configurator/ConfigUserInterface.java
  34. 137 136
      L2J_Server_BETA/java/com/l2jserver/tools/dbinstaller/util/mysql/DBDumper.java
  35. 5 4
      L2J_Server_BETA/java/com/l2jserver/tools/dbinstaller/util/mysql/MySqlConnect.java
  36. 24 23
      L2J_Server_BETA/java/com/l2jserver/tools/dbinstaller/util/mysql/ScriptExecutor.java
  37. 16 12
      L2J_Server_BETA/java/com/l2jserver/tools/gsregistering/BaseGameServerRegister.java
  38. 2 8
      L2J_Server_BETA/java/com/l2jserver/util/L2Properties.java
  39. 47 51
      L2J_Server_BETA/java/com/l2jserver/util/lib/SqlUtils.java

+ 6 - 5
L2J_Server_BETA/java/com/l2jserver/Config.java

@@ -4104,11 +4104,12 @@ public final class Config
 			File file = new File(fileName);
 			// Create a new empty file only if it doesn't exist
 			file.createNewFile();
-			OutputStream out = new FileOutputStream(file);
-			hexSetting.setProperty("ServerID", String.valueOf(serverId));
-			hexSetting.setProperty("HexID", hexId);
-			hexSetting.store(out, "the hexID to auth into login");
-			out.close();
+			try (OutputStream out = new FileOutputStream(file))
+			{
+				hexSetting.setProperty("ServerID", String.valueOf(serverId));
+				hexSetting.setProperty("HexID", hexId);
+				hexSetting.store(out, "the hexID to auth into login");
+			}
 		}
 		catch (Exception e)
 		{

+ 4 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/GameServer.java

@@ -447,9 +447,10 @@ public class GameServer
 		logFolder.mkdir();
 		
 		// Create input stream for log file -- or store file data into memory
-		InputStream is = new FileInputStream(new File(LOG_NAME));
-		LogManager.getLogManager().readConfiguration(is);
-		is.close();
+		try (InputStream is = new FileInputStream(new File(LOG_NAME)))
+		{
+			LogManager.getLogManager().readConfiguration(is);
+		}
 		
 		// Initialize config
 		Config.load();

+ 10 - 10
L2J_Server_BETA/java/com/l2jserver/gameserver/LoginServerThread.java

@@ -634,20 +634,20 @@ public class LoginServerThread extends Thread
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT deletetime FROM characters WHERE account_name=?");
-			statement.setString(1, account);
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT deletetime FROM characters WHERE account_name=?"))
 			{
-				chars++;
-				long delTime = rset.getLong("deletetime");
-				if (delTime != 0)
+				ps.setString(1, account);
+				try (ResultSet rs = ps.executeQuery())
 				{
-					charToDel.add(delTime);
+					while (rs.next())
+					{
+						chars++;
+						long delTime = rs.getLong("deletetime");
+						if (delTime != 0)
+							charToDel.add(delTime);
+					}
 				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{

+ 115 - 114
L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSigns.java

@@ -20,6 +20,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
@@ -750,64 +751,60 @@ public class SevenSigns
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement(LOAD_DATA);
-			ResultSet rset = statement.executeQuery();
-			
-			StatsSet sevenDat = null;
-			int charObjId;
-			
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery(LOAD_DATA))
 			{
-				charObjId = rset.getInt("charId");
-				
-				sevenDat = new StatsSet();
-				sevenDat.set("charId", charObjId);
-				sevenDat.set("cabal", rset.getString("cabal"));
-				sevenDat.set("seal", rset.getInt("seal"));
-				sevenDat.set("red_stones", rset.getInt("red_stones"));
-				sevenDat.set("green_stones", rset.getInt("green_stones"));
-				sevenDat.set("blue_stones", rset.getInt("blue_stones"));
-				sevenDat.set("ancient_adena_amount", rset.getDouble("ancient_adena_amount"));
-				sevenDat.set("contribution_score", rset.getDouble("contribution_score"));
-				
-				if (Config.DEBUG)
-					_log.info("SevenSigns: Loaded data from DB for char ID " + charObjId + " (" + sevenDat.getString("cabal") + ")");
-				
-				_signsPlayerData.put(charObjId, sevenDat);
+				StatsSet sevenDat = null;
+				int charObjId;
+				while (rs.next())
+				{
+					charObjId = rs.getInt("charId");
+					
+					sevenDat = new StatsSet();
+					sevenDat.set("charId", charObjId);
+					sevenDat.set("cabal", rs.getString("cabal"));
+					sevenDat.set("seal", rs.getInt("seal"));
+					sevenDat.set("red_stones", rs.getInt("red_stones"));
+					sevenDat.set("green_stones", rs.getInt("green_stones"));
+					sevenDat.set("blue_stones", rs.getInt("blue_stones"));
+					sevenDat.set("ancient_adena_amount", rs.getDouble("ancient_adena_amount"));
+					sevenDat.set("contribution_score", rs.getDouble("contribution_score"));
+					
+					if (Config.DEBUG)
+						_log.info("SevenSigns: Loaded data from DB for char ID " + charObjId + " (" + sevenDat.getString("cabal") + ")");
+					
+					_signsPlayerData.put(charObjId, sevenDat);
+				}
 			}
-			
-			rset.close();
-			statement.close();
-			
-			statement = con.prepareStatement(LOAD_STATUS);
-			rset = statement.executeQuery();
-			
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery(LOAD_STATUS))
 			{
-				_currentCycle = rset.getInt("current_cycle");
-				_activePeriod = rset.getInt("active_period");
-				_previousWinner = rset.getInt("previous_winner");
-				
-				_dawnStoneScore = rset.getDouble("dawn_stone_score");
-				_dawnFestivalScore = rset.getInt("dawn_festival_score");
-				_duskStoneScore = rset.getDouble("dusk_stone_score");
-				_duskFestivalScore = rset.getInt("dusk_festival_score");
-				
-				_signsSealOwners.put(SEAL_AVARICE, rset.getInt("avarice_owner"));
-				_signsSealOwners.put(SEAL_GNOSIS, rset.getInt("gnosis_owner"));
-				_signsSealOwners.put(SEAL_STRIFE, rset.getInt("strife_owner"));
 				
-				_signsDawnSealTotals.put(SEAL_AVARICE, rset.getInt("avarice_dawn_score"));
-				_signsDawnSealTotals.put(SEAL_GNOSIS, rset.getInt("gnosis_dawn_score"));
-				_signsDawnSealTotals.put(SEAL_STRIFE, rset.getInt("strife_dawn_score"));
-				_signsDuskSealTotals.put(SEAL_AVARICE, rset.getInt("avarice_dusk_score"));
-				_signsDuskSealTotals.put(SEAL_GNOSIS, rset.getInt("gnosis_dusk_score"));
-				_signsDuskSealTotals.put(SEAL_STRIFE, rset.getInt("strife_dusk_score"));
-				
-				_lastSave.setTimeInMillis(rset.getLong("date"));
+				while (rs.next())
+				{
+					_currentCycle = rs.getInt("current_cycle");
+					_activePeriod = rs.getInt("active_period");
+					_previousWinner = rs.getInt("previous_winner");
+					
+					_dawnStoneScore = rs.getDouble("dawn_stone_score");
+					_dawnFestivalScore = rs.getInt("dawn_festival_score");
+					_duskStoneScore = rs.getDouble("dusk_stone_score");
+					_duskFestivalScore = rs.getInt("dusk_festival_score");
+					
+					_signsSealOwners.put(SEAL_AVARICE, rs.getInt("avarice_owner"));
+					_signsSealOwners.put(SEAL_GNOSIS, rs.getInt("gnosis_owner"));
+					_signsSealOwners.put(SEAL_STRIFE, rs.getInt("strife_owner"));
+					
+					_signsDawnSealTotals.put(SEAL_AVARICE, rs.getInt("avarice_dawn_score"));
+					_signsDawnSealTotals.put(SEAL_GNOSIS, rs.getInt("gnosis_dawn_score"));
+					_signsDawnSealTotals.put(SEAL_STRIFE, rs.getInt("strife_dawn_score"));
+					_signsDuskSealTotals.put(SEAL_AVARICE, rs.getInt("avarice_dusk_score"));
+					_signsDuskSealTotals.put(SEAL_GNOSIS, rs.getInt("gnosis_dusk_score"));
+					_signsDuskSealTotals.put(SEAL_STRIFE, rs.getInt("strife_dusk_score"));
+					
+					_lastSave.setTimeInMillis(rs.getLong("date"));
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{
@@ -834,24 +831,26 @@ public class SevenSigns
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement(UPDATE_PLAYER);
-			
-			for (StatsSet sevenDat : _signsPlayerData.values())
+			try (PreparedStatement ps = con.prepareStatement(UPDATE_PLAYER))
 			{
-				statement.setString(1, sevenDat.getString("cabal"));
-				statement.setInt(2, sevenDat.getInteger("seal"));
-				statement.setInt(3, sevenDat.getInteger("red_stones"));
-				statement.setInt(4, sevenDat.getInteger("green_stones"));
-				statement.setInt(5, sevenDat.getInteger("blue_stones"));
-				statement.setDouble(6, sevenDat.getDouble("ancient_adena_amount"));
-				statement.setDouble(7, sevenDat.getDouble("contribution_score"));
-				statement.setInt(8, sevenDat.getInteger("charId"));
-				statement.execute();
-				statement.clearParameters();
-				if (Config.DEBUG)
-					_log.info("SevenSigns: Updated data in database for char ID " + sevenDat.getInteger("charId") + " (" + sevenDat.getString("cabal") + ")");
+				for (StatsSet sevenDat : _signsPlayerData.values())
+				{
+					ps.setString(1, sevenDat.getString("cabal"));
+					ps.setInt(2, sevenDat.getInteger("seal"));
+					ps.setInt(3, sevenDat.getInteger("red_stones"));
+					ps.setInt(4, sevenDat.getInteger("green_stones"));
+					ps.setInt(5, sevenDat.getInteger("blue_stones"));
+					ps.setDouble(6, sevenDat.getDouble("ancient_adena_amount"));
+					ps.setDouble(7, sevenDat.getDouble("contribution_score"));
+					ps.setInt(8, sevenDat.getInteger("charId"));
+					ps.execute();
+					ps.clearParameters();
+					if (Config.DEBUG)
+					{
+						_log.info("SevenSigns: Updated data in database for char ID " + sevenDat.getInteger("charId") + " (" + sevenDat.getString("cabal") + ")");
+					}
+				}
 			}
-			statement.close();
 		}
 		catch (SQLException e)
 		{
@@ -873,18 +872,18 @@ public class SevenSigns
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			
-			PreparedStatement statement = con.prepareStatement(UPDATE_PLAYER);
-			statement.setString(1, sevenDat.getString("cabal"));
-			statement.setInt(2, sevenDat.getInteger("seal"));
-			statement.setInt(3, sevenDat.getInteger("red_stones"));
-			statement.setInt(4, sevenDat.getInteger("green_stones"));
-			statement.setInt(5, sevenDat.getInteger("blue_stones"));
-			statement.setDouble(6, sevenDat.getDouble("ancient_adena_amount"));
-			statement.setDouble(7, sevenDat.getDouble("contribution_score"));
-			statement.setInt(8, sevenDat.getInteger("charId"));
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement(UPDATE_PLAYER))
+			{
+				ps.setString(1, sevenDat.getString("cabal"));
+				ps.setInt(2, sevenDat.getInteger("seal"));
+				ps.setInt(3, sevenDat.getInteger("red_stones"));
+				ps.setInt(4, sevenDat.getInteger("green_stones"));
+				ps.setInt(5, sevenDat.getInteger("blue_stones"));
+				ps.setDouble(6, sevenDat.getDouble("ancient_adena_amount"));
+				ps.setDouble(7, sevenDat.getDouble("contribution_score"));
+				ps.setInt(8, sevenDat.getInteger("charId"));
+				ps.execute();
+			}
 		}
 		catch (SQLException e)
 		{
@@ -902,33 +901,34 @@ public class SevenSigns
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			
-			PreparedStatement statement = con.prepareStatement(UPDATE_STATUS);
-			statement.setInt(1, _currentCycle);
-			statement.setInt(2, _activePeriod);
-			statement.setInt(3, _previousWinner);
-			statement.setDouble(4, _dawnStoneScore);
-			statement.setInt(5, _dawnFestivalScore);
-			statement.setDouble(6, _duskStoneScore);
-			statement.setInt(7, _duskFestivalScore);
-			statement.setInt(8, _signsSealOwners.get(SEAL_AVARICE));
-			statement.setInt(9, _signsSealOwners.get(SEAL_GNOSIS));
-			statement.setInt(10, _signsSealOwners.get(SEAL_STRIFE));
-			statement.setInt(11, _signsDawnSealTotals.get(SEAL_AVARICE));
-			statement.setInt(12, _signsDawnSealTotals.get(SEAL_GNOSIS));
-			statement.setInt(13, _signsDawnSealTotals.get(SEAL_STRIFE));
-			statement.setInt(14, _signsDuskSealTotals.get(SEAL_AVARICE));
-			statement.setInt(15, _signsDuskSealTotals.get(SEAL_GNOSIS));
-			statement.setInt(16, _signsDuskSealTotals.get(SEAL_STRIFE));
-			statement.setInt(17, SevenSignsFestival.getInstance().getCurrentFestivalCycle());
-			
-			for (int i = 0; i < SevenSignsFestival.FESTIVAL_COUNT; i++)
-				statement.setInt(18 + i, SevenSignsFestival.getInstance().getAccumulatedBonus(i));
-			
-			_lastSave = Calendar.getInstance();
-			statement.setLong(18 + SevenSignsFestival.FESTIVAL_COUNT, _lastSave.getTimeInMillis());
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement(UPDATE_STATUS))
+			{
+				ps.setInt(1, _currentCycle);
+				ps.setInt(2, _activePeriod);
+				ps.setInt(3, _previousWinner);
+				ps.setDouble(4, _dawnStoneScore);
+				ps.setInt(5, _dawnFestivalScore);
+				ps.setDouble(6, _duskStoneScore);
+				ps.setInt(7, _duskFestivalScore);
+				ps.setInt(8, _signsSealOwners.get(SEAL_AVARICE));
+				ps.setInt(9, _signsSealOwners.get(SEAL_GNOSIS));
+				ps.setInt(10, _signsSealOwners.get(SEAL_STRIFE));
+				ps.setInt(11, _signsDawnSealTotals.get(SEAL_AVARICE));
+				ps.setInt(12, _signsDawnSealTotals.get(SEAL_GNOSIS));
+				ps.setInt(13, _signsDawnSealTotals.get(SEAL_STRIFE));
+				ps.setInt(14, _signsDuskSealTotals.get(SEAL_AVARICE));
+				ps.setInt(15, _signsDuskSealTotals.get(SEAL_GNOSIS));
+				ps.setInt(16, _signsDuskSealTotals.get(SEAL_STRIFE));
+				ps.setInt(17, SevenSignsFestival.getInstance().getCurrentFestivalCycle());
+				
+				for (int i = 0; i < SevenSignsFestival.FESTIVAL_COUNT; i++)
+				{
+					ps.setInt(18 + i, SevenSignsFestival.getInstance().getAccumulatedBonus(i));
+				}
+				_lastSave = Calendar.getInstance();
+				ps.setLong(18 + SevenSignsFestival.FESTIVAL_COUNT, _lastSave.getTimeInMillis());
+				ps.execute();
+			}
 			if (Config.DEBUG)
 				_log.info("SevenSigns: Updated data in database.");
 		}
@@ -1007,12 +1007,13 @@ public class SevenSigns
 			try
 			{
 				con = L2DatabaseFactory.getInstance().getConnection();
-				PreparedStatement statement = con.prepareStatement(INSERT_PLAYER);
-				statement.setInt(1, objectId);
-				statement.setString(2, getCabalShortName(chosenCabal));
-				statement.setInt(3, chosenSeal);
-				statement.execute();
-				statement.close();
+				try (PreparedStatement ps = con.prepareStatement(INSERT_PLAYER))
+				{
+					ps.setInt(1, objectId);
+					ps.setString(2, getCabalShortName(chosenCabal));
+					ps.setInt(3, chosenSeal);
+					ps.execute();
+				}
 				
 				if (Config.DEBUG)
 					_log.info("SevenSigns: Inserted data in DB for char ID " + currPlayerData.getInteger("charId") + " ("

+ 94 - 100
L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSignsFestival.java

@@ -20,6 +20,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -932,52 +933,47 @@ public class SevenSignsFestival implements SpawnListener
 	 */
 	protected void restoreFestivalData()
 	{
-		Connection con = null;
-		PreparedStatement statement = null;
-		ResultSet rset = null;
-		
 		if (Config.DEBUG)
 			_log.info("SevenSignsFestival: Restoring festival data. Current SS Cycle: " + _signsCycle);
 		
+		Connection con = null;
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			statement = con.prepareStatement("SELECT festivalId, cabal, cycle, date, score, members " + "FROM seven_signs_festival");
-			rset = statement.executeQuery();
-			
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery("SELECT festivalId, cabal, cycle, date, score, members " + "FROM seven_signs_festival"))
 			{
-				int festivalCycle = rset.getInt("cycle");
-				int festivalId = rset.getInt("festivalId");
-				String cabal = rset.getString("cabal");
-				
-				StatsSet festivalDat = new StatsSet();
-				festivalDat.set("festivalId", festivalId);
-				festivalDat.set("cabal", cabal);
-				festivalDat.set("cycle", festivalCycle);
-				festivalDat.set("date", rset.getString("date"));
-				festivalDat.set("score", rset.getInt("score"));
-				festivalDat.set("members", rset.getString("members"));
-				
-				if (Config.DEBUG)
-					_log.info("SevenSignsFestival: Loaded data from DB for (Cycle = " + festivalCycle + ", Oracle = " + cabal
-							+ ", Festival = " + getFestivalName(festivalId));
-				
-				if (cabal.equals("dawn"))
-					festivalId += FESTIVAL_COUNT;
-				
-				Map<Integer, StatsSet> tempData = _festivalData.get(festivalCycle);
-				
-				if (tempData == null)
-					tempData = new FastMap<>();
-				
-				tempData.put(festivalId, festivalDat);
-				_festivalData.put(festivalCycle, tempData);
+				while (rs.next())
+				{
+					int festivalCycle = rs.getInt("cycle");
+					int festivalId = rs.getInt("festivalId");
+					String cabal = rs.getString("cabal");
+					
+					StatsSet festivalDat = new StatsSet();
+					festivalDat.set("festivalId", festivalId);
+					festivalDat.set("cabal", cabal);
+					festivalDat.set("cycle", festivalCycle);
+					festivalDat.set("date", rs.getString("date"));
+					festivalDat.set("score", rs.getInt("score"));
+					festivalDat.set("members", rs.getString("members"));
+					
+					if (Config.DEBUG)
+						_log.info("SevenSignsFestival: Loaded data from DB for (Cycle = " + festivalCycle + ", Oracle = " + cabal
+								+ ", Festival = " + getFestivalName(festivalId));
+					
+					if (cabal.equals("dawn"))
+						festivalId += FESTIVAL_COUNT;
+					
+					Map<Integer, StatsSet> tempData = _festivalData.get(festivalCycle);
+					
+					if (tempData == null)
+						tempData = new FastMap<>();
+					
+					tempData.put(festivalId, festivalDat);
+					_festivalData.put(festivalCycle, tempData);
+				}
 			}
 			
-			rset.close();
-			statement.close();
-			
 			StringBuilder query = new StringBuilder();
 			query.append("SELECT festival_cycle, ");
 			
@@ -993,20 +989,17 @@ public class SevenSignsFestival implements SpawnListener
 			query.append(' ');
 			query.append("FROM seven_signs_status WHERE id=0");
 			
-			statement = con.prepareStatement(query.toString());
-			rset = statement.executeQuery();
-			
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery(query.toString()))
 			{
-				_festivalCycle = rset.getInt("festival_cycle");
-				
-				for (int i = 0; i < FESTIVAL_COUNT; i++)
-					_accumulatedBonuses.add(i, rset.getInt("accumulated_bonus" + String.valueOf(i)));
+				while (rs.next())
+				{
+					_festivalCycle = rs.getInt("festival_cycle");
+					
+					for (int i = 0; i < FESTIVAL_COUNT; i++)
+						_accumulatedBonuses.add(i, rs.getInt("accumulated_bonus" + String.valueOf(i)));
+				}
 			}
-			
-			rset.close();
-			statement.close();
-			
 			if (Config.DEBUG)
 				_log.info("SevenSignsFestival: Loaded data from database.");
 		}
@@ -1038,48 +1031,48 @@ public class SevenSignsFestival implements SpawnListener
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statementUpdate = con.prepareStatement("UPDATE seven_signs_festival SET date=?, score=?, members=? WHERE cycle=? AND cabal=? AND festivalId=?");
-			PreparedStatement statementInsert = con.prepareStatement("INSERT INTO seven_signs_festival (festivalId, cabal, cycle, date, score, members) VALUES (?,?,?,?,?,?)");
-			for (Map<Integer, StatsSet> currCycleData : _festivalData.values())
+			try (PreparedStatement psUpdate = con.prepareStatement("UPDATE seven_signs_festival SET date=?, score=?, members=? WHERE cycle=? AND cabal=? AND festivalId=?");
+				PreparedStatement psInsert = con.prepareStatement("INSERT INTO seven_signs_festival (festivalId, cabal, cycle, date, score, members) VALUES (?,?,?,?,?,?)"))
 			{
-				for (StatsSet festivalDat : currCycleData.values())
+				for (Map<Integer, StatsSet> currCycleData : _festivalData.values())
 				{
-					int festivalCycle = festivalDat.getInteger("cycle");
-					int festivalId = festivalDat.getInteger("festivalId");
-					String cabal = festivalDat.getString("cabal");
-					
-					// Try to update an existing record.
-					statementUpdate.setLong(1, Long.valueOf(festivalDat.getString("date")));
-					statementUpdate.setInt(2, festivalDat.getInteger("score"));
-					statementUpdate.setString(3, festivalDat.getString("members"));
-					statementUpdate.setInt(4, festivalCycle);
-					statementUpdate.setString(5, cabal);
-					statementUpdate.setInt(6, festivalId);
-					
-					// If there was no record to update, assume it doesn't exist and add a new one,
-					// otherwise continue with the next record to store.
-					if (statementUpdate.executeUpdate() > 0)
+					for (StatsSet festivalDat : currCycleData.values())
 					{
+						int festivalCycle = festivalDat.getInteger("cycle");
+						int festivalId = festivalDat.getInteger("festivalId");
+						String cabal = festivalDat.getString("cabal");
+						
+						// Try to update an existing record.
+						psUpdate.setLong(1, Long.valueOf(festivalDat.getString("date")));
+						psUpdate.setInt(2, festivalDat.getInteger("score"));
+						psUpdate.setString(3, festivalDat.getString("members"));
+						psUpdate.setInt(4, festivalCycle);
+						psUpdate.setString(5, cabal);
+						psUpdate.setInt(6, festivalId);
+						
+						// If there was no record to update, assume it doesn't exist and add a new one,
+						// otherwise continue with the next record to store.
+						if (psUpdate.executeUpdate() > 0)
+						{
+							if (Config.DEBUG)
+								_log.info("SevenSignsFestival: Updated data in DB (Cycle = " + festivalCycle + ", Cabal = " + cabal + ", FestID = " + festivalId + ")");
+							continue;
+						}
+						
+						psInsert.setInt(1, festivalId);
+						psInsert.setString(2, cabal);
+						psInsert.setInt(3, festivalCycle);
+						psInsert.setLong(4, Long.valueOf(festivalDat.getString("date")));
+						psInsert.setInt(5, festivalDat.getInteger("score"));
+						psInsert.setString(6, festivalDat.getString("members"));
+						psInsert.execute();
+						psInsert.clearParameters();
+						
 						if (Config.DEBUG)
-							_log.info("SevenSignsFestival: Updated data in DB (Cycle = " + festivalCycle + ", Cabal = " + cabal + ", FestID = " + festivalId + ")");
-						continue;
+							_log.info("SevenSignsFestival: Inserted data in DB (Cycle = " + festivalCycle + ", Cabal = " + cabal + ", FestID = " + festivalId + ")");
 					}
-					
-					statementInsert.setInt(1, festivalId);
-					statementInsert.setString(2, cabal);
-					statementInsert.setInt(3, festivalCycle);
-					statementInsert.setLong(4, Long.valueOf(festivalDat.getString("date")));
-					statementInsert.setInt(5, festivalDat.getInteger("score"));
-					statementInsert.setString(6, festivalDat.getString("members"));
-					statementInsert.execute();
-					statementInsert.clearParameters();
-					
-					if (Config.DEBUG)
-						_log.info("SevenSignsFestival: Inserted data in DB (Cycle = " + festivalCycle + ", Cabal = " + cabal + ", FestID = " + festivalId + ")");
 				}
 			}
-			statementUpdate.close();
-			statementInsert.close();
 			
 			// Updates Seven Signs DB data also, so call only if really necessary.
 			if (updateSettings)
@@ -1163,28 +1156,29 @@ public class SevenSignsFestival implements SpawnListener
 			try
 			{
 				con = L2DatabaseFactory.getInstance().getConnection();
-				PreparedStatement statement = con.prepareStatement(GET_CLAN_NAME);
-				statement.setString(1, partyMemberName);
-				ResultSet rset = statement.executeQuery();
-				if (rset.next())
+				try (PreparedStatement ps = con.prepareStatement(GET_CLAN_NAME))
 				{
-					String clanName = rset.getString("clan_name");
-					if (clanName != null)
+					ps.setString(1, partyMemberName);
+					try (ResultSet rs = ps.executeQuery())
 					{
-						L2Clan clan = ClanTable.getInstance().getClanByName(clanName);
-						if (clan != null)
+						if (rs.next())
 						{
-							clan.addReputationScore(Config.FESTIVAL_WIN_POINTS, true);
-							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_MEMBER_C1_WAS_IN_HIGHEST_RANKED_PARTY_IN_FESTIVAL_OF_DARKNESS_AND_GAINED_S2_REPUTATION);
-							sm.addString(partyMemberName);
-							sm.addNumber(Config.FESTIVAL_WIN_POINTS);
-							clan.broadcastToOnlineMembers(sm);
+							String clanName = rs.getString("clan_name");
+							if (clanName != null)
+							{
+								L2Clan clan = ClanTable.getInstance().getClanByName(clanName);
+								if (clan != null)
+								{
+									clan.addReputationScore(Config.FESTIVAL_WIN_POINTS, true);
+									SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_MEMBER_C1_WAS_IN_HIGHEST_RANKED_PARTY_IN_FESTIVAL_OF_DARKNESS_AND_GAINED_S2_REPUTATION);
+									sm.addString(partyMemberName);
+									sm.addNumber(Config.FESTIVAL_WIN_POINTS);
+									clan.broadcastToOnlineMembers(sm);
+								}
+							}
 						}
 					}
 				}
-				
-				rset.close();
-				statement.close();
 			}
 			catch (Exception e)
 			{

+ 73 - 77
L2J_Server_BETA/java/com/l2jserver/gameserver/TradeController.java

@@ -17,6 +17,7 @@ package com.l2jserver.gameserver;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -74,91 +75,88 @@ public class TradeController
 		_lists.clear();
 		Connection con = null;
 		
-		/*
-		 * Initialize Shop buylist
-		 */
+		// Initialize Shop buy list
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement1 = con.prepareStatement("SELECT  shop_id, npc_id FROM merchant_shopids");
-			ResultSet rset1 = statement1.executeQuery();
-			
-			int itemId, price, maxCount, currentCount, time;
-			long saveTimer;
-			PreparedStatement statement = con.prepareStatement("SELECT item_id, price, shop_id, "
-					+ L2DatabaseFactory.getInstance().safetyString("order")
-					+ ", count, currentCount, time, savetimer FROM merchant_buylists WHERE shop_id=? ORDER BY "
-					+ L2DatabaseFactory.getInstance().safetyString("order") + " ASC");
-			while (rset1.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs1 = s.executeQuery("SELECT  shop_id, npc_id FROM merchant_shopids"))
 			{
-				statement.setString(1, String.valueOf(rset1.getInt("shop_id")));
-				ResultSet rset = statement.executeQuery();
-				statement.clearParameters();
-				
-				int shopId = rset1.getInt("shop_id");
-				L2TradeList buy1 = new L2TradeList(shopId);
-				
-				while (rset.next())
+				int itemId, price, maxCount, currentCount, time;
+				long saveTimer;
+				try (PreparedStatement ps = con.prepareStatement("SELECT item_id, price, shop_id, "
+						+ L2DatabaseFactory.getInstance().safetyString("order")
+						+ ", count, currentCount, time, savetimer FROM merchant_buylists WHERE shop_id=? ORDER BY "
+						+ L2DatabaseFactory.getInstance().safetyString("order") + " ASC"))
 				{
-					itemId = rset.getInt("item_id");
-					price = rset.getInt("price");
-					maxCount = rset.getInt("count");
-					currentCount = rset.getInt("currentCount");
-					time = rset.getInt("time");
-					saveTimer = rset.getLong("saveTimer");
-					
-					L2TradeItem item = new L2TradeItem(shopId, itemId);
-					if (ItemTable.getInstance().getTemplate(itemId) == null)
+					while (rs1.next())
 					{
-						_log.warning("Skipping itemId: " + itemId + " on buylistId: " + buy1.getListId() + ", missing data for that item.");
-						continue;
-					}
-					
-					if (price <= -1)
-					{
-						price = ItemTable.getInstance().getTemplate(itemId).getReferencePrice();
-					}
-					
-					if (Config.DEBUG)
-					{
-						// debug
-						double diff = ((double) (price)) / ItemTable.getInstance().getTemplate(itemId).getReferencePrice();
-						if (diff < 0.8 || diff > 1.2)
+						ps.setString(1, String.valueOf(rs1.getInt("shop_id")));
+						try (ResultSet rs2 = ps.executeQuery())
 						{
-							_log.severe("PRICING DEBUG: TradeListId: " + buy1.getListId() + " -  ItemId: " + itemId + " ("
-									+ ItemTable.getInstance().getTemplate(itemId).getName() + ") diff: " + diff + " - Price: " + price
-									+ " - Reference: " + ItemTable.getInstance().getTemplate(itemId).getReferencePrice());
+							ps.clearParameters();
+							
+							int shopId = rs1.getInt("shop_id");
+							L2TradeList buy1 = new L2TradeList(shopId);
+							
+							while (rs2.next())
+							{
+								itemId = rs2.getInt("item_id");
+								price = rs2.getInt("price");
+								maxCount = rs2.getInt("count");
+								currentCount = rs2.getInt("currentCount");
+								time = rs2.getInt("time");
+								saveTimer = rs2.getLong("saveTimer");
+								
+								L2TradeItem item = new L2TradeItem(shopId, itemId);
+								if (ItemTable.getInstance().getTemplate(itemId) == null)
+								{
+									_log.warning("Skipping itemId: " + itemId + " on buylistId: " + buy1.getListId() + ", missing data for that item.");
+									continue;
+								}
+								
+								if (price <= -1)
+								{
+									price = ItemTable.getInstance().getTemplate(itemId).getReferencePrice();
+								}
+								
+								if (Config.DEBUG)
+								{
+									// debug
+									double diff = ((double) (price)) / ItemTable.getInstance().getTemplate(itemId).getReferencePrice();
+									if (diff < 0.8 || diff > 1.2)
+									{
+										_log.severe("PRICING DEBUG: TradeListId: " + buy1.getListId() + " -  ItemId: " + itemId + " ("
+												+ ItemTable.getInstance().getTemplate(itemId).getName() + ") diff: " + diff + " - Price: " + price
+												+ " - Reference: " + ItemTable.getInstance().getTemplate(itemId).getReferencePrice());
+									}
+								}
+								
+								item.setPrice(price);
+								
+								item.setRestoreDelay(time);
+								item.setNextRestoreTime(saveTimer);
+								item.setMaxCount(maxCount);
+								
+								if (currentCount > -1)
+								{
+									item.setCurrentCount(currentCount);
+								}
+								else
+								{
+									item.setCurrentCount(maxCount);
+								}
+								
+								buy1.addItem(item);
+							}
+							
+							buy1.setNpcId(rs1.getString("npc_id"));
+							_lists.put(buy1.getListId(), buy1);
+							_nextListId = Math.max(_nextListId, buy1.getListId() + 1);
 						}
 					}
-					
-					item.setPrice(price);
-					
-					item.setRestoreDelay(time);
-					item.setNextRestoreTime(saveTimer);
-					item.setMaxCount(maxCount);
-					
-					if (currentCount > -1)
-					{
-						item.setCurrentCount(currentCount);
-					}
-					else
-					{
-						item.setCurrentCount(maxCount);
-					}
-					
-					buy1.addItem(item);
 				}
-				
-				buy1.setNpcId(rset1.getString("npc_id"));
-				_lists.put(buy1.getListId(), buy1);
-				_nextListId = Math.max(_nextListId, buy1.getListId() + 1);
-				
-				rset.close();
 			}
-			statement.close();
-			rset1.close();
-			statement1.close();
-			
 			_log.info("TradeController: Loaded " + _lists.size() + " Buylists.");
 		}
 		catch (Exception e)
@@ -171,9 +169,7 @@ public class TradeController
 			L2DatabaseFactory.close(con);
 		}
 		
-		/*
-		 * If enabled, initialize the custom buylist
-		 */
+		// If enabled, initialize the custom buy list
 		if (Config.CUSTOM_MERCHANT_TABLES)
 		{
 			try

+ 6 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/cache/CrestCache.java

@@ -223,11 +223,12 @@ public class CrestCache
 				try
 				{
 					con = L2DatabaseFactory.getInstance().getConnection();
-					PreparedStatement statement = con.prepareStatement("UPDATE clan_data SET crest_id = ? WHERE clan_id = ?");
-					statement.setInt(1, newId);
-					statement.setInt(2, clan.getClanId());
-					statement.executeUpdate();
-					statement.close();
+					try (PreparedStatement ps = con.prepareStatement("UPDATE clan_data SET crest_id = ? WHERE clan_id = ?"))
+					{
+						ps.setInt(1, newId);
+						ps.setInt(2, clan.getClanId());
+						ps.executeUpdate();
+					}
 				}
 				catch (SQLException e)
 				{

+ 49 - 50
L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/BB/Forum.java

@@ -108,21 +108,22 @@ public class Forum
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT * FROM forums WHERE forum_id=?");
-			statement.setInt(1, _forumId);
-			ResultSet result = statement.executeQuery();
-			
-			if (result.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT * FROM forums WHERE forum_id=?"))
 			{
-				_forumName = result.getString("forum_name");
-				//_ForumParent = result.getInt("forum_parent");
-				_forumPost = result.getInt("forum_post");
-				_forumType = result.getInt("forum_type");
-				_forumPerm = result.getInt("forum_perm");
-				_ownerID = result.getInt("forum_owner_id");
+				ps.setInt(1, _forumId);
+				try (ResultSet rs = ps.executeQuery())
+				{
+					if (rs.next())
+					{
+						_forumName = rs.getString("forum_name");
+						//_ForumParent = result.getInt("forum_parent");
+						_forumPost = rs.getInt("forum_post");
+						_forumType = rs.getInt("forum_type");
+						_forumPerm = rs.getInt("forum_perm");
+						_ownerID = rs.getInt("forum_owner_id");
+					}
+				}
 			}
-			result.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -132,24 +133,26 @@ public class Forum
 		{
 			L2DatabaseFactory.close(con);
 		}
+		
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT * FROM topic WHERE topic_forum_id=? ORDER BY topic_id DESC");
-			statement.setInt(1, _forumId);
-			ResultSet result = statement.executeQuery();
-			
-			while (result.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT * FROM topic WHERE topic_forum_id=? ORDER BY topic_id DESC"))
 			{
-				Topic t = new Topic(Topic.ConstructorType.RESTORE, result.getInt("topic_id"), result.getInt("topic_forum_id"), result.getString("topic_name"), result.getLong("topic_date"), result.getString("topic_ownername"), result.getInt("topic_ownerid"), result.getInt("topic_type"), result.getInt("topic_reply"));
-				_topic.put(t.getID(), t);
-				if (t.getID() > TopicBBSManager.getInstance().getMaxID(this))
+				ps.setInt(1, _forumId);
+				try (ResultSet rs = ps.executeQuery())
 				{
-					TopicBBSManager.getInstance().setMaxID(t.getID(), this);
+					while (rs.next())
+					{
+						Topic t = new Topic(Topic.ConstructorType.RESTORE, rs.getInt("topic_id"), rs.getInt("topic_forum_id"), rs.getString("topic_name"), rs.getLong("topic_date"), rs.getString("topic_ownername"), rs.getInt("topic_ownerid"), rs.getInt("topic_type"), rs.getInt("topic_reply"));
+						_topic.put(t.getID(), t);
+						if (t.getID() > TopicBBSManager.getInstance().getMaxID(this))
+						{
+							TopicBBSManager.getInstance().setMaxID(t.getID(), this);
+						}
+					}
 				}
 			}
-			result.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -161,27 +164,25 @@ public class Forum
 		}
 	}
 	
-	/**
-	 *
-	 */
 	private void getChildren()
 	{
 		Connection con = null;
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT forum_id FROM forums WHERE forum_parent=?");
-			statement.setInt(1, _forumId);
-			ResultSet result = statement.executeQuery();
-			
-			while (result.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT forum_id FROM forums WHERE forum_parent=?"))
 			{
-				Forum f = new Forum(result.getInt("forum_id"), this);
-				_children.add(f);
-				ForumsBBSManager.getInstance().addForum(f);
+				ps.setInt(1, _forumId);
+				try (ResultSet rs = ps.executeQuery())
+				{
+					while (rs.next())
+					{
+						Forum f = new Forum(rs.getInt("forum_id"), this);
+						_children.add(f);
+						ForumsBBSManager.getInstance().addForum(f);
+					}
+				}
 			}
-			result.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -257,25 +258,23 @@ public class Forum
 		
 	}
 	
-	/**
-	 *
-	 */
 	public void insertIntoDb()
 	{
 		Connection con = null;
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("INSERT INTO forums (forum_id,forum_name,forum_parent,forum_post,forum_type,forum_perm,forum_owner_id) VALUES (?,?,?,?,?,?,?)");
-			statement.setInt(1, _forumId);
-			statement.setString(2, _forumName);
-			statement.setInt(3, _fParent.getID());
-			statement.setInt(4, _forumPost);
-			statement.setInt(5, _forumType);
-			statement.setInt(6, _forumPerm);
-			statement.setInt(7, _ownerID);
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("INSERT INTO forums (forum_id,forum_name,forum_parent,forum_post,forum_type,forum_perm,forum_owner_id) VALUES (?,?,?,?,?,?,?)"))
+			{
+				ps.setInt(1, _forumId);
+				ps.setString(2, _forumName);
+				ps.setInt(3, _fParent.getID());
+				ps.setInt(4, _forumPost);
+				ps.setInt(5, _forumType);
+				ps.setInt(6, _forumPerm);
+				ps.setInt(7, _ownerID);
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{

+ 49 - 41
L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/BB/Post.java

@@ -14,7 +14,6 @@
  */
 package com.l2jserver.gameserver.communitybbs.BB;
 
-
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -29,11 +28,11 @@ import com.l2jserver.gameserver.communitybbs.Manager.PostBBSManager;
 
 /**
  * @author Maktakien
- *
  */
 public class Post
 {
 	private static Logger _log = Logger.getLogger(Post.class.getName());
+	
 	public static class CPost
 	{
 		public int postId;
@@ -71,22 +70,24 @@ public class Post
 		insertindb(cp);
 		
 	}
+	
 	public void insertindb(CPost cp)
 	{
 		Connection con = null;
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("INSERT INTO posts (post_id,post_owner_name,post_ownerid,post_date,post_topic_id,post_forum_id,post_txt) values (?,?,?,?,?,?,?)");
-			statement.setInt(1, cp.postId);
-			statement.setString(2, cp.postOwner);
-			statement.setInt(3, cp.postOwnerId);
-			statement.setLong(4, cp.postDate);
-			statement.setInt(5, cp.postTopicId);
-			statement.setInt(6, cp.postForumId);
-			statement.setString(7, cp.postTxt);
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("INSERT INTO posts (post_id,post_owner_name,post_ownerid,post_date,post_topic_id,post_forum_id,post_txt) values (?,?,?,?,?,?,?)"))
+			{
+				ps.setInt(1, cp.postId);
+				ps.setString(2, cp.postOwner);
+				ps.setInt(3, cp.postOwnerId);
+				ps.setLong(4, cp.postDate);
+				ps.setInt(5, cp.postTopicId);
+				ps.setInt(6, cp.postForumId);
+				ps.setString(7, cp.postTxt);
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{
@@ -116,6 +117,7 @@ public class Post
 		}
 		return null;
 	}
+	
 	public void deleteme(Topic t)
 	{
 		PostBBSManager.getInstance().delPostByTopic(t);
@@ -123,11 +125,12 @@ public class Post
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("DELETE FROM posts WHERE post_forum_id=? AND post_topic_id=?");
-			statement.setInt(1, t.getForumID());
-			statement.setInt(2, t.getID());
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("DELETE FROM posts WHERE post_forum_id=? AND post_topic_id=?"))
+			{
+				ps.setInt(1, t.getForumID());
+				ps.setInt(2, t.getID());
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{
@@ -138,6 +141,7 @@ public class Post
 			L2DatabaseFactory.close(con);
 		}
 	}
+	
 	/**
 	 * @param t
 	 */
@@ -147,24 +151,26 @@ public class Post
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT * FROM posts WHERE post_forum_id=? AND post_topic_id=? ORDER BY post_id ASC");
-			statement.setInt(1, t.getForumID());
-			statement.setInt(2, t.getID());
-			ResultSet result = statement.executeQuery();
-			while(result.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT * FROM posts WHERE post_forum_id=? AND post_topic_id=? ORDER BY post_id ASC"))
 			{
-				CPost cp = new CPost();
-				cp.postId = result.getInt("post_id");
-				cp.postOwner = result.getString("post_owner_name");
-				cp.postOwnerId = result.getInt("post_ownerid");
-				cp.postDate = result.getLong("post_date");
-				cp.postTopicId = result.getInt("post_topic_id");
-				cp.postForumId = result.getInt("post_forum_id");
-				cp.postTxt = result.getString("post_txt");
-				_post.add(cp);
+				ps.setInt(1, t.getForumID());
+				ps.setInt(2, t.getID());
+				try (ResultSet rs = ps.executeQuery())
+				{
+					while(rs.next())
+					{
+						CPost cp = new CPost();
+						cp.postId = rs.getInt("post_id");
+						cp.postOwner = rs.getString("post_owner_name");
+						cp.postOwnerId = rs.getInt("post_ownerid");
+						cp.postDate = rs.getLong("post_date");
+						cp.postTopicId = rs.getInt("post_topic_id");
+						cp.postForumId = rs.getInt("post_forum_id");
+						cp.postTxt = rs.getString("post_txt");
+						_post.add(cp);
+					}
+				}
 			}
-			result.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -175,6 +181,7 @@ public class Post
 			L2DatabaseFactory.close(con);
 		}
 	}
+	
 	/**
 	 * @param i
 	 */
@@ -183,15 +190,16 @@ public class Post
 		Connection con = null;
 		try
 		{
-			CPost cp = getCPost(i);
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("UPDATE posts SET post_txt=? WHERE post_id=? AND post_topic_id=? AND post_forum_id=?");
-			statement.setString(1, cp.postTxt);
-			statement.setInt(2, cp.postId);
-			statement.setInt(3, cp.postTopicId);
-			statement.setInt(4, cp.postForumId);
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("UPDATE posts SET post_txt=? WHERE post_id=? AND post_topic_id=? AND post_forum_id=?"))
+			{
+				CPost cp = getCPost(i);
+				ps.setString(1, cp.postTxt);
+				ps.setInt(2, cp.postId);
+				ps.setInt(3, cp.postTopicId);
+				ps.setInt(4, cp.postForumId);
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{

+ 18 - 17
L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/BB/Topic.java

@@ -78,18 +78,18 @@ public class Topic
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("INSERT INTO topic (topic_id,topic_forum_id,topic_name,topic_date,topic_ownername,topic_ownerid,topic_type,topic_reply) values (?,?,?,?,?,?,?,?)");
-			statement.setInt(1, _id);
-			statement.setInt(2, _forumId);
-			statement.setString(3, _topicName);
-			statement.setLong(4, _date);
-			statement.setString(5, _ownerName);
-			statement.setInt(6, _ownerId);
-			statement.setInt(7, _type);
-			statement.setInt(8, _cReply);
-			statement.execute();
-			statement.close();
-			
+			try (PreparedStatement ps = con.prepareStatement("INSERT INTO topic (topic_id,topic_forum_id,topic_name,topic_date,topic_ownername,topic_ownerid,topic_type,topic_reply) values (?,?,?,?,?,?,?,?)"))
+			{
+				ps.setInt(1, _id);
+				ps.setInt(2, _forumId);
+				ps.setString(3, _topicName);
+				ps.setLong(4, _date);
+				ps.setString(5, _ownerName);
+				ps.setInt(6, _ownerId);
+				ps.setInt(7, _type);
+				ps.setInt(8, _cReply);
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{
@@ -144,11 +144,12 @@ public class Topic
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("DELETE FROM topic WHERE topic_id=? AND topic_forum_id=?");
-			statement.setInt(1, getID());
-			statement.setInt(2, f.getID());
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("DELETE FROM topic WHERE topic_id=? AND topic_forum_id=?"))
+			{
+				ps.setInt(1, getID());
+				ps.setInt(2, f.getID());
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{

+ 9 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/communitybbs/Manager/ForumsBBSManager.java

@@ -15,8 +15,8 @@
 package com.l2jserver.gameserver.communitybbs.Manager;
 
 import java.sql.Connection;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -53,16 +53,16 @@ public class ForumsBBSManager extends BaseBBSManager
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT forum_id FROM forums WHERE forum_type=0");
-			ResultSet result = statement.executeQuery();
-			while (result.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery("SELECT forum_id FROM forums WHERE forum_type = 0"))
 			{
-				int forumId = result.getInt("forum_id");
-				Forum f = new Forum(forumId, null);
-				addForum(f);
+				while (rs.next())
+				{
+					int forumId = rs.getInt("forum_id");
+					Forum f = new Forum(forumId, null);
+					addForum(f);
+				}
 			}
-			result.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{

+ 48 - 40
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/CharNameTable.java

@@ -18,6 +18,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -104,16 +105,18 @@ public class CharNameTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT charId,accesslevel FROM characters WHERE char_name=?");
-			statement.setString(1, name);
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT charId,accesslevel FROM characters WHERE char_name=?"))
 			{
-				id = rset.getInt(1);
-				accessLevel = rset.getInt(2);
+				ps.setString(1, name);
+				try (ResultSet rs = ps.executeQuery())
+				{
+					while (rs.next())
+					{
+						id = rs.getInt(1);
+						accessLevel = rs.getInt(2);
+					}
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{
@@ -148,20 +151,21 @@ public class CharNameTable
 		
 		int accessLevel = 0;
 		Connection con = null;
-		PreparedStatement statement = null;
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			statement = con.prepareStatement("SELECT char_name,accesslevel FROM characters WHERE charId=?");
-			statement.setInt(1, id);
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT char_name,accesslevel FROM characters WHERE charId=?"))
 			{
-				name = rset.getString(1);
-				accessLevel = rset.getInt(2);
+				ps.setInt(1, id);
+				try (ResultSet rset = ps.executeQuery())
+				{
+					while (rset.next())
+					{
+						name = rset.getString(1);
+						accessLevel = rset.getInt(2);
+					}
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{
@@ -197,12 +201,14 @@ public class CharNameTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT account_name FROM characters WHERE char_name=?");
-			statement.setString(1, name);
-			ResultSet rset = statement.executeQuery();
-			result = rset.next();
-			rset.close();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("SELECT account_name FROM characters WHERE char_name=?"))
+			{
+				ps.setString(1, name);
+				try (ResultSet rs = ps.executeQuery())
+				{
+					result = rs.next();
+				}
+			}
 		}
 		catch (SQLException e)
 		{
@@ -223,15 +229,17 @@ public class CharNameTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT COUNT(char_name) FROM characters WHERE account_name=?");
-			statement.setString(1, account);
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(char_name) FROM characters WHERE account_name=?"))
 			{
-				number = rset.getInt(1);
+				ps.setString(1, account);
+				try (ResultSet rset = ps.executeQuery())
+				{
+					while (rset.next())
+					{
+						number = rset.getInt(1);
+					}
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{
@@ -253,18 +261,18 @@ public class CharNameTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT charId,char_name,accesslevel FROM characters");
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery("SELECT charId,char_name,accesslevel FROM characters"))
 			{
-				id = rset.getInt(1);
-				name = rset.getString(2);
-				accessLevel = rset.getInt(3);
-				_chars.put(id, name);
-				_accessLevels.put(id, accessLevel);
+				while (rs.next())
+				{
+					id = rs.getInt(1);
+					name = rs.getString(2);
+					accessLevel = rs.getInt(3);
+					_chars.put(id, name);
+					_accessLevels.put(id, accessLevel);
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{

+ 97 - 110
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/CharSummonTable.java

@@ -20,6 +20,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -61,29 +62,20 @@ public class CharSummonTable
 	
 	public void init()
 	{
-		int ownerId;
-		int refId;
-		
 		Connection con = null;
-		
 		if (Config.RESTORE_SERVITOR_ON_RECONNECT)
 		{
 			try
 			{
 				con = L2DatabaseFactory.getInstance().getConnection();
-				PreparedStatement statement = con.prepareStatement(INIT_SUMMONS);
-				ResultSet rset = statement.executeQuery();
-				
-				while (rset.next())
+				try (Statement s = con.createStatement();
+					ResultSet rs = s.executeQuery(INIT_SUMMONS))
 				{
-					ownerId = rset.getInt("ownerId");
-					refId = rset.getInt("summonSkillId");
-					
-					_servitors.put(ownerId, refId);
+					while (rs.next())
+					{
+						_servitors.put(rs.getInt("ownerId"), rs.getInt("summonSkillId"));
+					}
 				}
-				
-				rset.close();
-				statement.close();
 			}
 			catch (Exception e)
 			{
@@ -100,19 +92,14 @@ public class CharSummonTable
 			try
 			{
 				con = L2DatabaseFactory.getInstance().getConnection();
-				PreparedStatement statement = con.prepareStatement(INIT_PET);
-				ResultSet rset = statement.executeQuery();
-				
-				while (rset.next())
+				try (Statement s = con.createStatement();
+					ResultSet rs = s.executeQuery(INIT_PET))
 				{
-					ownerId = rset.getInt("ownerId");
-					refId = rset.getInt("item_obj_id");
-					
-					_pets.put(ownerId, refId);
+					while (rs.next())
+					{
+						_pets.put(rs.getInt("ownerId"), rs.getInt("item_obj_id"));
+					}
 				}
-				
-				rset.close();
-				statement.close();
 			}
 			catch (Exception e)
 			{
@@ -144,17 +131,15 @@ public class CharSummonTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement(SAVE_SUMMON);
-			
-			statement.setInt(1, summon.getOwner().getObjectId());
-			statement.setInt(2, summon.getReferenceSkill());
-			statement.setInt(3, (int) Math.round(summon.getCurrentHp()));
-			statement.setInt(4, (int) Math.round(summon.getCurrentMp()));
-			statement.setInt(5, summon.getTimeRemaining());
-			
-			statement.execute();
-			statement.close();
-			
+			try (PreparedStatement ps = con.prepareStatement(SAVE_SUMMON))
+			{
+				ps.setInt(1, summon.getOwner().getObjectId());
+				ps.setInt(2, summon.getReferenceSkill());
+				ps.setInt(3, (int) Math.round(summon.getCurrentHp()));
+				ps.setInt(4, (int) Math.round(summon.getCurrentMp()));
+				ps.setInt(5, summon.getTimeRemaining());
+				ps.execute();
+			}
 			_servitors.put(summon.getOwner().getObjectId(), summon.getReferenceSkill());
 		}
 		catch (Exception e)
@@ -175,80 +160,81 @@ public class CharSummonTable
 			int skillId = _servitors.get(activeChar.getObjectId());
 			
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement(LOAD_SUMMON);
-			statement.setInt(1, activeChar.getObjectId());
-			statement.setInt(2, skillId);
-			ResultSet rset = statement.executeQuery();
-			
-			L2NpcTemplate summonTemplate;
-			L2ServitorInstance summon;
-			L2SkillSummon skill;
-			
-			while (rset.next())
+			try (PreparedStatement ps = con.prepareStatement(LOAD_SUMMON))
 			{
-				int curHp = rset.getInt("curHp");
-				int curMp = rset.getInt("curMp");
-				int time = rset.getInt("time");
-				
-				skill = (L2SkillSummon) SkillTable.getInstance().getInfo(skillId, activeChar.getSkillLevel(skillId));
-				if (skill == null)
+				ps.setInt(1, activeChar.getObjectId());
+				ps.setInt(2, skillId);
+				try (ResultSet rs = ps.executeQuery())
 				{
-					removeServitor(activeChar);
-					return;
-				}
 				
-				summonTemplate = NpcTable.getInstance().getTemplate(skill.getNpcId());
-				if (summonTemplate == null)
-				{
-					_log.warning("[CharSummonTable] Summon attemp for nonexisting Skill ID:" + skillId);
-					return;
-				}
-				
-				final int id = IdFactory.getInstance().getNextId();
-				if (summonTemplate.isType("L2SiegeSummon"))
-				{
-					summon = new L2SiegeSummonInstance(id, summonTemplate, activeChar, skill);
-				}
-				else if (summonTemplate.isType("L2MerchantSummon"))
-				{
-					// TODO: Confirm L2Merchant summon = new L2MerchantSummonInstance(id, summonTemplate, activeChar, skill);
-					summon = new L2ServitorInstance(id, summonTemplate, activeChar, skill);
-				}
-				else
-				{
-					summon = new L2ServitorInstance(id, summonTemplate, activeChar, skill);
-				}
-				
-				summon.setName(summonTemplate.getName());
-				summon.setTitle(activeChar.getName());
-				summon.setExpPenalty(skill.getExpPenalty());
-				summon.setSharedElementals(skill.getInheritElementals());
-				summon.setSharedElementalsValue(skill.getElementalSharePercent());
-				
-				if (summon.getLevel() >= ExperienceTable.getInstance().getMaxPetLevel())
-				{
-					summon.getStat().setExp(ExperienceTable.getInstance().getExpForLevel(ExperienceTable.getInstance().getMaxPetLevel()-1));
-					_log.warning("Summon (" + summon.getName() + ") NpcID: " + summon.getNpcId() + " has a level above "+ExperienceTable.getInstance().getMaxPetLevel()+". Please rectify.");
-				}
-				else
-				{
-					summon.getStat().setExp(ExperienceTable.getInstance().getExpForLevel(summon.getLevel() % ExperienceTable.getInstance().getMaxPetLevel()));
+					L2NpcTemplate summonTemplate;
+					L2ServitorInstance summon;
+					L2SkillSummon skill;
+					
+					while (rs.next())
+					{
+						int curHp = rs.getInt("curHp");
+						int curMp = rs.getInt("curMp");
+						int time = rs.getInt("time");
+						
+						skill = (L2SkillSummon) SkillTable.getInstance().getInfo(skillId, activeChar.getSkillLevel(skillId));
+						if (skill == null)
+						{
+							removeServitor(activeChar);
+							return;
+						}
+						
+						summonTemplate = NpcTable.getInstance().getTemplate(skill.getNpcId());
+						if (summonTemplate == null)
+						{
+							_log.warning("[CharSummonTable] Summon attemp for nonexisting Skill ID:" + skillId);
+							return;
+						}
+						
+						final int id = IdFactory.getInstance().getNextId();
+						if (summonTemplate.isType("L2SiegeSummon"))
+						{
+							summon = new L2SiegeSummonInstance(id, summonTemplate, activeChar, skill);
+						}
+						else if (summonTemplate.isType("L2MerchantSummon"))
+						{
+							// TODO: Confirm L2Merchant summon = new L2MerchantSummonInstance(id, summonTemplate, activeChar, skill);
+							summon = new L2ServitorInstance(id, summonTemplate, activeChar, skill);
+						}
+						else
+						{
+							summon = new L2ServitorInstance(id, summonTemplate, activeChar, skill);
+						}
+						
+						summon.setName(summonTemplate.getName());
+						summon.setTitle(activeChar.getName());
+						summon.setExpPenalty(skill.getExpPenalty());
+						summon.setSharedElementals(skill.getInheritElementals());
+						summon.setSharedElementalsValue(skill.getElementalSharePercent());
+						
+						if (summon.getLevel() >= ExperienceTable.getInstance().getMaxPetLevel())
+						{
+							summon.getStat().setExp(ExperienceTable.getInstance().getExpForLevel(ExperienceTable.getInstance().getMaxPetLevel()-1));
+							_log.warning("Summon (" + summon.getName() + ") NpcID: " + summon.getNpcId() + " has a level above "+ExperienceTable.getInstance().getMaxPetLevel()+". Please rectify.");
+						}
+						else
+						{
+							summon.getStat().setExp(ExperienceTable.getInstance().getExpForLevel(summon.getLevel() % ExperienceTable.getInstance().getMaxPetLevel()));
+						}
+						summon.setCurrentHp(curHp);
+						summon.setCurrentMp(curMp);
+						summon.setHeading(activeChar.getHeading());
+						summon.setRunning();
+						if (!(summon instanceof L2MerchantSummonInstance))
+							activeChar.setPet(summon);
+						
+						summon.setTimeRemaining(time);
+						
+						//L2World.getInstance().storeObject(summon);
+						summon.spawnMe(activeChar.getX() + 20, activeChar.getY() + 20, activeChar.getZ());
+					}
 				}
-				summon.setCurrentHp(curHp);
-				summon.setCurrentMp(curMp);
-				summon.setHeading(activeChar.getHeading());
-				summon.setRunning();
-				if (!(summon instanceof L2MerchantSummonInstance))
-					activeChar.setPet(summon);
-				
-				summon.setTimeRemaining(time);
-				
-				//L2World.getInstance().storeObject(summon);
-				summon.spawnMe(activeChar.getX() + 20, activeChar.getY() + 20, activeChar.getZ());
 			}
-			
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{
@@ -266,10 +252,11 @@ public class CharSummonTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement(REMOVE_SUMMON);
-			statement.setInt(1, activeChar.getObjectId());
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement(REMOVE_SUMMON))
+			{
+				ps.setInt(1, activeChar.getObjectId());
+				ps.execute();
+			}
 			_servitors.remove(activeChar.getObjectId());
 		}
 		catch (SQLException e)

+ 38 - 38
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ClanTable.java

@@ -17,6 +17,7 @@ package com.l2jserver.gameserver.datatables;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -89,24 +90,21 @@ public class ClanTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT clan_id FROM clan_data");
-			ResultSet result = statement.executeQuery();
-			
 			// Count the clans
 			int clanCount = 0;
-			
-			while (result.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery("SELECT clan_id FROM clan_data"))
 			{
-				int clanId = result.getInt("clan_id");
-				_clans.put(clanId, new L2Clan(clanId));
-				clan = getClan(clanId);
-				if (clan.getDissolvingExpiryTime() != 0)
-					scheduleRemoveClan(clan.getClanId());
-				clanCount++;
+				while (rs.next())
+				{
+					int clanId = rs.getInt("clan_id");
+					_clans.put(clanId, new L2Clan(clanId));
+					clan = getClan(clanId);
+					if (clan.getDissolvingExpiryTime() != 0)
+						scheduleRemoveClan(clan.getClanId());
+					clanCount++;
+				}
 			}
-			result.close();
-			statement.close();
-			
 			_log.info("Restored " + clanCount + " clans from the database.");
 		}
 		catch (Exception e)
@@ -389,13 +387,14 @@ public class ClanTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("REPLACE INTO clan_wars (clan1, clan2, wantspeace1, wantspeace2) VALUES(?,?,?,?)");
-			statement.setInt(1, clanId1);
-			statement.setInt(2, clanId2);
-			statement.setInt(3, 0);
-			statement.setInt(4, 0);
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("REPLACE INTO clan_wars (clan1, clan2, wantspeace1, wantspeace2) VALUES(?,?,?,?)"))
+			{
+				ps.setInt(1, clanId1);
+				ps.setInt(2, clanId2);
+				ps.setInt(3, 0);
+				ps.setInt(4, 0);
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{
@@ -447,16 +446,16 @@ public class ClanTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("DELETE FROM clan_wars WHERE clan1=? AND clan2=?");
-			statement.setInt(1, clanId1);
-			statement.setInt(2, clanId2);
-			statement.execute();
+			try (PreparedStatement ps = con.prepareStatement("DELETE FROM clan_wars WHERE clan1=? AND clan2=?"))
+			{
+				ps.setInt(1, clanId1);
+				ps.setInt(2, clanId2);
+				ps.execute();
+			}
 			//statement = con.prepareStatement("DELETE FROM clan_wars WHERE clan1=? AND clan2=?");
 			//statement.setInt(1,clanId2);
 			//statement.setInt(2,clanId1);
 			//statement.execute();
-			
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -505,21 +504,22 @@ public class ClanTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT clan1, clan2 FROM clan_wars");
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (Statement statement = con.createStatement();
+				ResultSet rset = statement.executeQuery("SELECT clan1, clan2 FROM clan_wars"))
 			{
-				clan1 = getClan(rset.getInt("clan1"));
-				clan2 = getClan(rset.getInt("clan2"));
-				if (clan1 != null && clan2 != null)
+				while (rset.next())
 				{
-					clan1.setEnemyClan(rset.getInt("clan2"));
-					clan2.setAttackerClan(rset.getInt("clan1"));
+					clan1 = getClan(rset.getInt("clan1"));
+					clan2 = getClan(rset.getInt("clan2"));
+					if (clan1 != null && clan2 != null)
+					{
+						clan1.setEnemyClan(rset.getInt("clan2"));
+						clan2.setAttackerClan(rset.getInt("clan1"));
+					}
+					else
+						_log.log(Level.WARNING, "[ClanTable]: restorewars one of clans is null clan1:" + clan1 + " clan2:" + clan2);
 				}
-				else
-					_log.log(Level.WARNING, "[ClanTable]: restorewars one of clans is null clan1:" + clan1 + " clan2:" + clan2);
 			}
-			statement.close();
 		}
 		catch (Exception e)
 		{

+ 6 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/HelperBuffTable.java

@@ -15,8 +15,8 @@
 package com.l2jserver.gameserver.datatables;
 
 import java.sql.Connection;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -80,12 +80,11 @@ public class HelperBuffTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT * FROM helper_buff_list");
-			ResultSet helperbuffdata = statement.executeQuery();
-			
-			fillHelperBuffTable(helperbuffdata);
-			helperbuffdata.close();
-			statement.close();
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery("SELECT * FROM helper_buff_list"))
+			{
+				fillHelperBuffTable(rs);
+			}
 		}
 		catch (Exception e)
 		{

+ 21 - 24
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/LevelUpData.java

@@ -17,8 +17,8 @@ package com.l2jserver.gameserver.datatables;
 import gnu.trove.map.hash.TIntObjectHashMap;
 
 import java.sql.Connection;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -63,31 +63,28 @@ public class LevelUpData
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement(SELECT_ALL);
-			ResultSet rset = statement.executeQuery();
-			L2LvlupData lvlDat;
-			
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery(SELECT_ALL))
 			{
-				lvlDat = new L2LvlupData();
-				lvlDat.setClassid(rset.getInt(CLASS_ID));
-				lvlDat.setClassLvl(rset.getInt(CLASS_LVL));
-				lvlDat.setClassHpBase(rset.getFloat(HP_BASE));
-				lvlDat.setClassHpAdd(rset.getFloat(HP_ADD));
-				lvlDat.setClassHpModifier(rset.getFloat(HP_MOD));
-				lvlDat.setClassCpBase(rset.getFloat(CP_BASE));
-				lvlDat.setClassCpAdd(rset.getFloat(CP_ADD));
-				lvlDat.setClassCpModifier(rset.getFloat(CP_MOD));
-				lvlDat.setClassMpBase(rset.getFloat(MP_BASE));
-				lvlDat.setClassMpAdd(rset.getFloat(MP_ADD));
-				lvlDat.setClassMpModifier(rset.getFloat(MP_MOD));
-				
-				_lvlTable.put(lvlDat.getClassid(), lvlDat);
+				L2LvlupData lvlDat;
+				while (rs.next())
+				{
+					lvlDat = new L2LvlupData();
+					lvlDat.setClassid(rs.getInt(CLASS_ID));
+					lvlDat.setClassLvl(rs.getInt(CLASS_LVL));
+					lvlDat.setClassHpBase(rs.getFloat(HP_BASE));
+					lvlDat.setClassHpAdd(rs.getFloat(HP_ADD));
+					lvlDat.setClassHpModifier(rs.getFloat(HP_MOD));
+					lvlDat.setClassCpBase(rs.getFloat(CP_BASE));
+					lvlDat.setClassCpAdd(rs.getFloat(CP_ADD));
+					lvlDat.setClassCpModifier(rs.getFloat(CP_MOD));
+					lvlDat.setClassMpBase(rs.getFloat(MP_BASE));
+					lvlDat.setClassMpAdd(rs.getFloat(MP_ADD));
+					lvlDat.setClassMpModifier(rs.getFloat(MP_MOD));
+					
+					_lvlTable.put(lvlDat.getClassid(), lvlDat);
+				}
 			}
-			
-			rset.close();
-			statement.close();
-			
 			_log.info("LevelUpData: Loaded " + _lvlTable.size() + " Character Level Up Templates.");
 		}
 		catch (Exception e)

+ 287 - 381
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/NpcTable.java

@@ -45,14 +45,52 @@ public class NpcTable
 {
 	private static final Logger _log = Logger.getLogger(NpcTable.class.getName());
 	
-	private final TIntObjectHashMap<L2NpcTemplate> _npcs = new TIntObjectHashMap<>();
+	private static final TIntObjectHashMap<L2NpcTemplate> _npcs = new TIntObjectHashMap<>();
 	
+	// SQL Queries
+	private static final String SELECT_NPC_ALL = "SELECT * FROM npc ORDER BY id";
+	private static final String SELECT_NPC_BY_ID = "SELECT * FROM npc WHERE id = ?";
+	
+	private static final String SELECT_SKILLS_ALL = "SELECT * FROM npcskills ORDER BY npcid";
+	private static final String SELECT_SKILLS_BY_ID = "SELECT * FROM npcskills WHERE npcid = ?";
+	
+	private static final String SELECT_DROPLIST_ALL = "SELECT * FROM droplist ORDER BY mobId, chance DESC";
+	private static final String SELECT_DROPLIST_BY_ID = "SELECT * FROM droplist WHERE mobId = ? ORDER BY mobId, chance DESC";
+	
+	private static final String SELECT_NPC_AI_ALL = "SELECT * FROM npcaidata ORDER BY npcId";
+	private static final String SELECT_NPC_AI_BY_ID = "SELECT * FROM npcaidata WHERE npcId = ?";
+	
+	private static final String SELECT_NPC_ELEMENTALS_ALL = "SELECT * FROM npc_elementals ORDER BY npc_id";
+	private static final String SELECT_NPC_ELEMENTALS_BY_ID = "SELECT * FROM npc_elementals WHERE npc_id = ?";
+	
+	// Custom SQL queries
+	private static final String CUSTOM_SELECT_NPC_ALL = "SELECT * FROM custom_npc ORDER BY id";
+	private static final String CUSTOM_SELECT_NPC_BY_ID = "SELECT * FROM custom_npc WHERE id = ?";
+	
+	private static final String CUSTOM_SELECT_SKILLS_ALL = "SELECT * FROM custom_npc ORDER BY id";
+	private static final String CUSTOM_SELECT_SKILLS_BY_ID = "SELECT * FROM custom_npcskills WHERE npcid = ?";
+	
+	private static final String CUSTOM_SELECT_DROPLIST_ALL = "SELECT * FROM custom_droplist ORDER BY mobId, chance DESC";
+	private static final String CUSTOM_SELECT_DROPLIST_BY_ID = "SELECT * FROM custom_droplist WHERE mobId = ? ORDER BY mobId, chance DESC";
+	
+	private static final String CUSTOM_SELECT_NPC_AI_ALL = "SELECT * FROM custom_npcaidata ORDER BY npcId";
+	private static final String CUSTOM_SELECT_NPC_AI_BY_ID = "SELECT * FROM custom_npcaidata WHERE npcId = ?";
+	
+	private static final String CUSTOM_SELECT_NPC_ELEMENTALS_ALL = "SELECT * FROM custom_npc_elementals ORDER BY npc_id";
+	private static final String CUSTOM_SELECT_NPC_ELEMENTALS_BY_ID = "SELECT * FROM custom_npc_elementals WHERE npc_id = ?";
+	
+	/**
+	 * Instantiates a new npc table.
+	 */
 	protected NpcTable()
 	{
 		_npcs.clear();
 		restoreNpcData();
 	}
 	
+	/**
+	 * Restore npc data.
+	 */
 	private void restoreNpcData()
 	{
 		loadNpcs(0);
@@ -65,8 +103,9 @@ public class NpcTable
 	}
 	
 	/**
-	 * @param NpcData
-	 * @throws Exception
+	 * Fill npc table.
+	 * @param NpcData the npc data
+	 * @throws Exception the exception
 	 */
 	private void fillNpcTable(ResultSet NpcData) throws Exception
 	{
@@ -137,6 +176,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Reload npc.
 	 * @param id of the NPC to reload.
 	 */
 	public void reloadNpc(int id)
@@ -183,7 +223,8 @@ public class NpcTable
 	}
 	
 	/**
-	 * @param npc
+	 * Save npc.
+	 * @param npc the npc
 	 */
 	public void saveNpc(StatsSet npc)
 	{
@@ -250,6 +291,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Append entry.
 	 * @param sb the string builder to append the attribute and value.
 	 * @param attribute the attribute to append.
 	 * @param value the value to append.
@@ -268,6 +310,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Perform update.
 	 * @param sb the string builder with the parameters
 	 * @param table the table to update.
 	 * @param key the key of the table.
@@ -298,6 +341,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Gets the template.
 	 * @param id the template Id to get.
 	 * @return the template for the given id.
 	 */
@@ -307,6 +351,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Gets the template by name.
 	 * @param name of the template to get.
 	 * @return the template for the given name.
 	 */
@@ -323,6 +368,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Gets the all of level.
 	 * @param lvls of all the templates to get.
 	 * @return the template list for the given level.
 	 */
@@ -343,6 +389,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Gets the all monsters of level.
 	 * @param lvls of all the monster templates to get.
 	 * @return the template list for the given level.
 	 */
@@ -363,6 +410,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Gets the all npc starting with.
 	 * @param letters of all the NPC templates which its name start with.
 	 * @return the template list for the given letter.
 	 */
@@ -383,6 +431,7 @@ public class NpcTable
 	}
 	
 	/**
+	 * Gets the all npc of class type.
 	 * @param classTypes of all the templates to get.
 	 * @return the template list for the given class type.
 	 */
@@ -403,8 +452,8 @@ public class NpcTable
 	}
 	
 	/**
-	 * Id equals to zero or lesser means all.
-	 * @param id of the NPC to load.
+	 * Load npcs.
+	 * @param id the id
 	 */
 	public void loadNpcs(int id)
 	{
@@ -412,63 +461,59 @@ public class NpcTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement;
-			if (id > 0)
-			{
-				statement = con.prepareStatement("SELECT * FROM npc WHERE id = ?");
-				statement.setInt(1, id);
-			}
-			else
-			{
-				statement = con.prepareStatement("SELECT * FROM npc ORDER BY id");
-			}
-			ResultSet rset = statement.executeQuery();
-			
-			int cont = 0;
-			int cCont = 0;
-			
-			while (rset.next())
+			int count = loadNpcs(con, id, false);
+			int ccount = 0;
+			if (Config.CUSTOM_NPC_TABLE)
 			{
-				fillNpcTable(rset);
-				cont++;
+				ccount = loadNpcs(con, id, true);
 			}
-			
-			rset.close();
-			statement.close();
-			
-			if (Config.CUSTOM_NPC_TABLE)
+			_log.info(getClass().getSimpleName() + ": Loaded " + count + " (Custom: " + ccount + ") NPC template(s).");
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC AI Data: " + e.getMessage(), e);
+		}
+		finally
+		{
+			L2DatabaseFactory.close(con);
+		}
+	}
+	
+	/**
+	 * Id equals to zero or lesser means all.
+	 * @param con the database connection
+	 * @param id of the NPC to load.
+	 * @param isCustom the is custom
+	 * @return the loaded NPC count
+	 */
+	public int loadNpcs(Connection con, int id, boolean isCustom)
+	{
+		int count = 0;
+		try
+		{
+			final String query = isCustom ? (((id > 0) ? CUSTOM_SELECT_NPC_BY_ID : CUSTOM_SELECT_NPC_ALL)) : ((id > 0) ? SELECT_NPC_BY_ID : SELECT_NPC_ALL);
+			try (PreparedStatement ps = con.prepareStatement(query))
 			{
 				if (id > 0)
 				{
-					statement = con.prepareStatement("SELECT * FROM custom_npc WHERE id = ?");
-					statement.setInt(1, id);
-				}
-				else
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_npc ORDER BY id");
+					ps.setInt(1, id);
 				}
-				rset = statement.executeQuery();
 				
-				while (rset.next())
+				try (ResultSet rs = ps.executeQuery())
 				{
-					fillNpcTable(rset);
-					cCont++;
+					while (rs.next())
+					{
+						fillNpcTable(rs);
+						count++;
+					}
 				}
-				
-				rset.close();
-				statement.close();
 			}
-			
-			_log.info(getClass().getSimpleName() + ": Loaded " + cont + " (Custom: " + cCont + ") NPC template(s).");
 		}
 		catch (Exception e)
 		{
 			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error creating NPC table.", e);
 		}
-		finally
-		{
-			L2DatabaseFactory.close(con);
-		}
+		return count;
 	}
 	
 	/**
@@ -481,115 +526,82 @@ public class NpcTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement;
-			if (id > 0)
-			{
-				statement = con.prepareStatement("SELECT * FROM npcskills WHERE npcid = ?");
-				statement.setInt(1, id);
-			}
-			else
+			int count = loadNpcsSkills(con, id, false);
+			int ccount = 0;
+			if (Config.CUSTOM_NPC_SKILLS_TABLE)
 			{
-				statement = con.prepareStatement("SELECT * FROM npcskills ORDER BY npcid");
+				ccount = loadNpcsSkills(con, id, true);
 			}
-			
-			ResultSet rset = statement.executeQuery();
-			
-			int cont = 0;
-			int cCont = 0;
-			
-			L2NpcTemplate npcDat = null;
-			L2Skill npcSkill = null;
-			
-			while (rset.next())
+			_log.info(getClass().getSimpleName() + ": Loaded " + count + " (Custom: " + ccount + ") NPC skills.");
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC AI Data: " + e.getMessage(), e);
+		}
+		finally
+		{
+			L2DatabaseFactory.close(con);
+		}
+	}
+	
+	/**
+	 * Load npcs skills.
+	 * @param con the database connection
+	 * @param id the NPC Id
+	 * @param isCustom the is custom
+	 * @return the loaded NPC count
+	 */
+	private int loadNpcsSkills(Connection con, int id, boolean isCustom)
+	{
+		int count = 0;
+		final String query = isCustom ? (((id > 0) ? CUSTOM_SELECT_SKILLS_BY_ID : CUSTOM_SELECT_SKILLS_ALL)) : ((id > 0) ? SELECT_SKILLS_BY_ID : SELECT_SKILLS_ALL);
+		try (PreparedStatement ps = con.prepareStatement(query))
+		{
+			if (id > 0)
 			{
-				int mobId = rset.getInt("npcid");
-				npcDat = _npcs.get(mobId);
-				
-				if (npcDat == null)
-				{
-					_log.warning(getClass().getSimpleName() + ": Skill data for undefined NPC. npcId: " + mobId);
-					continue;
-				}
-				
-				int skillId = rset.getInt("skillid");
-				int level = rset.getInt("level");
-				
-				if (skillId == L2Skill.SKILL_NPC_RACE)
-				{
-					npcDat.setRace(level);
-					continue;
-				}
-				
-				npcSkill = SkillTable.getInstance().getInfo(skillId, level);
-				if (npcSkill == null)
-				{
-					continue;
-				}
-				cont++;
-				npcDat.addSkill(npcSkill);
+				ps.setInt(1, id);
 			}
 			
-			rset.close();
-			statement.close();
-			
-			if (Config.CUSTOM_NPC_SKILLS_TABLE)
+			try (ResultSet rs = ps.executeQuery())
 			{
-				if (id > 0)
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_npcskills WHERE npcid = ?");
-					statement.setInt(1, id);
-				}
-				else
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_npcskills ORDER BY npcid");
-				}
-				rset = statement.executeQuery();
+				L2NpcTemplate npcDat = null;
+				L2Skill npcSkill = null;
 				
-				while (rset.next())
+				while (rs.next())
 				{
-					int mobId = rset.getInt("npcid");
+					int mobId = rs.getInt("npcid");
 					npcDat = _npcs.get(mobId);
 					
 					if (npcDat == null)
 					{
-						_log.warning("Custom " + getClass().getSimpleName() + ": Skill data for undefined NPC. npcId: " + mobId);
+						_log.warning(getClass().getSimpleName() + ": Skill data for undefined NPC. npcId: " + mobId);
 						continue;
 					}
 					
-					int skillId = rset.getInt("skillid");
-					int level = rset.getInt("level");
+					int skillId = rs.getInt("skillid");
+					int level = rs.getInt("level");
 					
-					if ((npcDat.getRace() == null) && (skillId == L2Skill.SKILL_NPC_RACE))
+					if (skillId == L2Skill.SKILL_NPC_RACE)
 					{
 						npcDat.setRace(level);
 						continue;
 					}
 					
 					npcSkill = SkillTable.getInstance().getInfo(skillId, level);
-					
 					if (npcSkill == null)
 					{
 						continue;
 					}
-					
-					cCont++;
+					count++;
 					npcDat.addSkill(npcSkill);
 				}
-				
-				rset.close();
-				statement.close();
 			}
-			
-			_log.info(getClass().getSimpleName() + ": Loaded " + cont + " (Custom: " + cCont + ") npc skills.");
 		}
 		catch (Exception e)
 		{
 			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC skills table.", e);
 		}
-		finally
-		{
-			L2DatabaseFactory.close(con);
-		}
+		return count;
 	}
 	
 	/**
@@ -602,109 +614,78 @@ public class NpcTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = null;
-			
-			if (id > 0)
-			{
-				statement = con.prepareStatement("SELECT * FROM droplist WHERE mobId = ? ORDER BY mobId, chance DESC");
-				statement.setInt(1, id);
-			}
-			else
+			int count = loadNpcsDrop(con, id, false);
+			int ccount = 0;
+			if (Config.CUSTOM_DROPLIST_TABLE)
 			{
-				statement = con.prepareStatement("SELECT * FROM droplist ORDER BY mobId, chance DESC");
+				ccount = loadNpcsDrop(con, id, true);
 			}
-			
-			ResultSet rset = statement.executeQuery();
-			L2DropData dropDat = null;
-			L2NpcTemplate npcDat = null;
-			
-			int cont = 0;
-			int cCont = 0;
-			
-			while (rset.next())
+			_log.info(getClass().getSimpleName() + ": Loaded " + count + " (Custom: " + ccount + ") drops.");
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC AI Data: " + e.getMessage(), e);
+		}
+		finally
+		{
+			L2DatabaseFactory.close(con);
+		}
+	}
+	
+	/**
+	 * Load npcs drop.
+	 * @param con the con
+	 * @param id the id
+	 * @param isCustom the is custom
+	 * @return the int
+	 */
+	public int loadNpcsDrop(Connection con, int id, boolean isCustom)
+	{
+		int count = 0;
+		final String query = isCustom ? (((id > 0) ? CUSTOM_SELECT_DROPLIST_BY_ID : CUSTOM_SELECT_DROPLIST_ALL)) : ((id > 0) ? SELECT_DROPLIST_BY_ID : SELECT_DROPLIST_ALL);
+		try (PreparedStatement ps = con.prepareStatement(query))
+		{
+			if (id > 0)
 			{
-				int mobId = rset.getInt("mobId");
-				npcDat = _npcs.get(mobId);
-				if (npcDat == null)
-				{
-					_log.warning(getClass().getSimpleName() + ": Drop data for undefined NPC. npcId: " + mobId);
-					continue;
-				}
-				dropDat = new L2DropData();
-				
-				dropDat.setItemId(rset.getInt("itemId"));
-				dropDat.setMinDrop(rset.getInt("min"));
-				dropDat.setMaxDrop(rset.getInt("max"));
-				dropDat.setChance(rset.getInt("chance"));
-				
-				int category = rset.getInt("category");
-				
-				if (ItemTable.getInstance().getTemplate(dropDat.getItemId()) == null)
-				{
-					_log.warning(getClass().getSimpleName() + ": Drop data for undefined item template! NpcId: " + mobId + " itemId: " + dropDat.getItemId());
-					continue;
-				}
-				cont++;
-				npcDat.addDropData(dropDat, category);
+				ps.setInt(1, id);
 			}
 			
-			rset.close();
-			statement.close();
-			
-			if (Config.CUSTOM_DROPLIST_TABLE)
+			try (ResultSet rs = ps.executeQuery())
 			{
-				if (id > 0)
+				L2DropData dropDat = null;
+				L2NpcTemplate npcDat = null;
+				while (rs.next())
 				{
-					statement = con.prepareStatement("SELECT * FROM custom_droplist WHERE mobId = ? ORDER BY mobId, chance DESC");
-					statement.setInt(1, id);
-				}
-				else
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_droplist ORDER BY mobId, chance DESC");
-				}
-				
-				rset = statement.executeQuery();
-				int mobId;
-				int category;
-				while (rset.next())
-				{
-					mobId = rset.getInt("mobId");
+					int mobId = rs.getInt("mobId");
 					npcDat = _npcs.get(mobId);
 					if (npcDat == null)
 					{
-						_log.warning(getClass().getSimpleName() + ": CUSTOM DROPLIST: Drop data for undefined NPC. npcId: " + mobId);
+						_log.warning(getClass().getSimpleName() + ": Drop data for undefined NPC. npcId: " + mobId);
 						continue;
 					}
-					
 					dropDat = new L2DropData();
-					dropDat.setItemId(rset.getInt("itemId"));
-					dropDat.setMinDrop(rset.getInt("min"));
-					dropDat.setMaxDrop(rset.getInt("max"));
-					dropDat.setChance(rset.getInt("chance"));
-					category = rset.getInt("category");
 					
+					dropDat.setItemId(rs.getInt("itemId"));
+					dropDat.setMinDrop(rs.getInt("min"));
+					dropDat.setMaxDrop(rs.getInt("max"));
+					dropDat.setChance(rs.getInt("chance"));
+					
+					int category = rs.getInt("category");
 					if (ItemTable.getInstance().getTemplate(dropDat.getItemId()) == null)
 					{
-						_log.warning(getClass().getSimpleName() + ": Custom drop data for undefined item template! NpcId: " + mobId + " itemId: " + dropDat.getItemId());
+						_log.warning(getClass().getSimpleName() + ": Drop data for undefined item template! NpcId: " + mobId + " itemId: " + dropDat.getItemId());
 						continue;
 					}
-					
+					count++;
 					npcDat.addDropData(dropDat, category);
-					cCont++;
 				}
-				rset.close();
-				statement.close();
 			}
-			_log.info(getClass().getSimpleName() + ": Loaded " + cont + " (Custom: " + cCont + ") drops.");
 		}
 		catch (Exception e)
 		{
 			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC dropdata. ", e);
 		}
-		finally
-		{
-			L2DatabaseFactory.close(con);
-		}
+		return count;
 	}
 	
 	/**
@@ -834,132 +815,92 @@ public class NpcTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = null;
-			
-			if (id > 0)
-			{
-				statement = con.prepareStatement("SELECT * FROM npcaidata WHERE npcId = ?");
-				statement.setInt(1, id);
-			}
-			else
+			int count = loadNpcAi(con, id, false);
+			int ccount = 0;
+			if (Config.CUSTOM_NPC_TABLE)
 			{
-				statement = con.prepareStatement("SELECT * FROM npcaidata ORDER BY npcId");
+				ccount = loadNpcAi(con, id, true);
 			}
-			
-			ResultSet rset = statement.executeQuery();
-			
-			L2NpcAIData npcAIDat = null;
-			L2NpcTemplate npcDat = null;
-			
-			int cont = 0;
-			int cCont = 0;
-			int npcId;
-			while (rset.next())
+			_log.info(getClass().getSimpleName() + ": Loaded " + count + " (Custom: " + ccount + ") AI Data.");
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC AI Data: " + e.getMessage(), e);
+		}
+		finally
+		{
+			L2DatabaseFactory.close(con);
+		}
+	}
+	
+	/**
+	 * Method that give the parameters will load one or all NPC AI from normal or custom tables.
+	 * @param con the database connection
+	 * @param id the NPC Id
+	 * @param isCustom if {@code true} the data will be loaded from the custom table
+	 * @return the count of NPC loaded
+	 */
+	private int loadNpcAi(Connection con, int id, boolean isCustom)
+	{
+		int count = 0;
+		final String query = isCustom ? (((id > 0) ? CUSTOM_SELECT_NPC_AI_BY_ID : CUSTOM_SELECT_NPC_AI_ALL)) : ((id > 0) ? SELECT_NPC_AI_BY_ID : SELECT_NPC_AI_ALL);
+		try (PreparedStatement ps = con.prepareStatement(query))
+		{
+			if (id > 0)
 			{
-				npcId = rset.getInt("npcId");
-				npcDat = _npcs.get(npcId);
-				if (npcDat == null)
-				{
-					_log.severe(getClass().getSimpleName() + ": AI Data Error with id : " + npcId);
-					continue;
-				}
-				npcAIDat = new L2NpcAIData();
-				
-				npcAIDat.setPrimarySkillId(rset.getInt("primarySkillId"));
-				npcAIDat.setMinSkillChance(rset.getInt("minSkillChance"));
-				npcAIDat.setMaxSkillChance(rset.getInt("maxSkillChance"));
-				npcAIDat.setAggro(rset.getInt("aggro"));
-				npcAIDat.setCanMove(rset.getInt("canMove"));
-				npcAIDat.setShowName(rset.getBoolean("showName"));
-				npcAIDat.setTargetable(rset.getBoolean("targetable"));
-				npcAIDat.setSoulShot(rset.getInt("soulshot"));
-				npcAIDat.setSpiritShot(rset.getInt("spiritshot"));
-				npcAIDat.setSoulShotChance(rset.getInt("ssChance"));
-				npcAIDat.setSpiritShotChance(rset.getInt("spsChance"));
-				npcAIDat.setIsChaos(rset.getInt("isChaos"));
-				npcAIDat.setShortRangeSkill(rset.getInt("minRangeSkill"));
-				npcAIDat.setShortRangeChance(rset.getInt("minRangeChance"));
-				npcAIDat.setLongRangeSkill(rset.getInt("maxRangeSkill"));
-				npcAIDat.setLongRangeChance(rset.getInt("maxRangeChance"));
-				npcAIDat.setClan(rset.getString("clan"));
-				npcAIDat.setClanRange(rset.getInt("clanRange"));
-				npcAIDat.setEnemyClan(rset.getString("enemyClan"));
-				npcAIDat.setEnemyRange(rset.getInt("enemyRange"));
-				npcAIDat.setDodge(rset.getInt("dodge"));
-				npcAIDat.setAi(rset.getString("aiType"));
-				
-				npcDat.setAIData(npcAIDat);
-				cont++;
+				ps.setInt(1, id);
 			}
 			
-			rset.close();
-			statement.close();
-			
-			if (Config.CUSTOM_NPC_TABLE)
+			try (ResultSet rs = ps.executeQuery())
 			{
-				if (id > 0)
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_npcaidata WHERE npcId = ?");
-					statement.setInt(1, id);
-				}
-				else
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_npcaidata ORDER BY npcId");
-				}
+				L2NpcAIData npcAIDat = null;
+				L2NpcTemplate npcDat = null;
 				
-				rset = statement.executeQuery();
-				while (rset.next())
+				int npcId;
+				while (rs.next())
 				{
-					npcId = rset.getInt("npcId");
+					npcId = rs.getInt("npcId");
 					npcDat = _npcs.get(npcId);
 					if (npcDat == null)
 					{
-						_log.severe(getClass().getSimpleName() + ": Custom AI Data Error with id : " + npcId);
+						_log.severe(getClass().getSimpleName() + ": AI Data Error with id : " + npcId);
 						continue;
 					}
-					npcAIDat = new L2NpcAIData();
 					
-					npcAIDat.setPrimarySkillId(rset.getInt("primarySkillId"));
-					npcAIDat.setMinSkillChance(rset.getInt("minSkillChance"));
-					npcAIDat.setMaxSkillChance(rset.getInt("maxSkillChance"));
-					npcAIDat.setAggro(rset.getInt("aggro"));
-					npcAIDat.setCanMove(rset.getInt("canMove"));
-					npcAIDat.setShowName(rset.getBoolean("showName"));
-					npcAIDat.setTargetable(rset.getBoolean("targetable"));
-					npcAIDat.setSoulShot(rset.getInt("soulshot"));
-					npcAIDat.setSpiritShot(rset.getInt("spiritshot"));
-					npcAIDat.setSoulShotChance(rset.getInt("ssChance"));
-					npcAIDat.setSpiritShotChance(rset.getInt("spsChance"));
-					npcAIDat.setIsChaos(rset.getInt("isChaos"));
-					npcAIDat.setShortRangeSkill(rset.getInt("minRangeSkill"));
-					npcAIDat.setShortRangeChance(rset.getInt("minRangeChance"));
-					npcAIDat.setLongRangeSkill(rset.getInt("maxRangeSkill"));
-					npcAIDat.setLongRangeChance(rset.getInt("maxRangeChance"));
-					npcAIDat.setClan(rset.getString("clan"));
-					npcAIDat.setClanRange(rset.getInt("clanRange"));
-					npcAIDat.setEnemyClan(rset.getString("enemyClan"));
-					npcAIDat.setEnemyRange(rset.getInt("enemyRange"));
-					npcAIDat.setDodge(rset.getInt("dodge"));
-					npcAIDat.setAi(rset.getString("aiType"));
+					npcAIDat = new L2NpcAIData();
+					npcAIDat.setPrimarySkillId(rs.getInt("primarySkillId"));
+					npcAIDat.setMinSkillChance(rs.getInt("minSkillChance"));
+					npcAIDat.setMaxSkillChance(rs.getInt("maxSkillChance"));
+					npcAIDat.setAggro(rs.getInt("aggro"));
+					npcAIDat.setCanMove(rs.getInt("canMove"));
+					npcAIDat.setShowName(rs.getBoolean("showName"));
+					npcAIDat.setTargetable(rs.getBoolean("targetable"));
+					npcAIDat.setSoulShot(rs.getInt("soulshot"));
+					npcAIDat.setSpiritShot(rs.getInt("spiritshot"));
+					npcAIDat.setSoulShotChance(rs.getInt("ssChance"));
+					npcAIDat.setSpiritShotChance(rs.getInt("spsChance"));
+					npcAIDat.setIsChaos(rs.getInt("isChaos"));
+					npcAIDat.setShortRangeSkill(rs.getInt("minRangeSkill"));
+					npcAIDat.setShortRangeChance(rs.getInt("minRangeChance"));
+					npcAIDat.setLongRangeSkill(rs.getInt("maxRangeSkill"));
+					npcAIDat.setLongRangeChance(rs.getInt("maxRangeChance"));
+					npcAIDat.setClan(rs.getString("clan"));
+					npcAIDat.setClanRange(rs.getInt("clanRange"));
+					npcAIDat.setEnemyClan(rs.getString("enemyClan"));
+					npcAIDat.setEnemyRange(rs.getInt("enemyRange"));
+					npcAIDat.setDodge(rs.getInt("dodge"));
+					npcAIDat.setAi(rs.getString("aiType"));
 					
 					npcDat.setAIData(npcAIDat);
-					cCont++;
+					count++;
 				}
-				
-				rset.close();
-				statement.close();
 			}
-			
-			_log.info(getClass().getSimpleName() + ": Loaded " + cont + " (Custom: " + cCont + ") AI Data.");
 		}
-		catch (Exception e)
+		catch (SQLException e)
 		{
 			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC AI Data: " + e.getMessage(), e);
 		}
-		finally
-		{
-			L2DatabaseFactory.close(con);
-		}
+		return count;
 	}
 	
 	/**
@@ -972,89 +913,53 @@ public class NpcTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = null;
-			if (id > 0)
-			{
-				statement = con.prepareStatement("SELECT * FROM npc_elementals WHERE npc_id = ?");
-				statement.setInt(1, id);
-			}
-			else
+			int count = loadNpcsElement(con, id, false);
+			int ccount = 0;
+			if (Config.CUSTOM_NPC_TABLE)
 			{
-				statement = con.prepareStatement("SELECT * FROM npc_elementals ORDER BY npc_id");
+				ccount = loadNpcsElement(con, id, true);
 			}
-			
-			ResultSet rset = statement.executeQuery();
-			L2NpcTemplate npcDat = null;
-			
-			int cont = 0;
-			int cCount = 0;
-			int npcId;
-			while (rset.next())
+			_log.info(getClass().getSimpleName() + ": Loaded " + count + " (Custom: " + ccount + ") Elementals Data.");
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.SEVERE, getClass().getSimpleName() + ": Error reading NPC AI Data: " + e.getMessage(), e);
+		}
+		finally
+		{
+			L2DatabaseFactory.close(con);
+		}
+	}
+	
+	/**
+	 * Load npcs element.
+	 * @param con the con
+	 * @param id the id
+	 * @param isCustom the is custom
+	 * @return the int
+	 */
+	private int loadNpcsElement(Connection con, int id, boolean isCustom)
+	{
+		int count = 0;
+		final String query = isCustom ? (((id > 0) ? CUSTOM_SELECT_NPC_ELEMENTALS_BY_ID : CUSTOM_SELECT_NPC_ELEMENTALS_ALL)) : ((id > 0) ? SELECT_NPC_ELEMENTALS_BY_ID : SELECT_NPC_ELEMENTALS_ALL);
+		try (PreparedStatement ps = con.prepareStatement(query))
+		{
+			if (id > 0)
 			{
-				npcId = rset.getInt("npc_id");
-				npcDat = _npcs.get(npcId);
-				if (npcDat == null)
-				{
-					_log.severe("NPCElementals: Elementals Error with id : " + npcId);
-					continue;
-				}
-				switch (rset.getByte("elemAtkType"))
-				{
-					case Elementals.FIRE:
-						npcDat.setBaseFire(rset.getInt("elemAtkValue"));
-						break;
-					case Elementals.WATER:
-						npcDat.setBaseWater(rset.getInt("elemAtkValue"));
-						break;
-					case Elementals.EARTH:
-						npcDat.setBaseEarth(rset.getInt("elemAtkValue"));
-						break;
-					case Elementals.WIND:
-						npcDat.setBaseWind(rset.getInt("elemAtkValue"));
-						break;
-					case Elementals.HOLY:
-						npcDat.setBaseHoly(rset.getInt("elemAtkValue"));
-						break;
-					case Elementals.DARK:
-						npcDat.setBaseDark(rset.getInt("elemAtkValue"));
-						break;
-					default:
-						_log.severe("NPCElementals: Elementals Error with id : " + npcId + "; unknown elementType: " + rset.getByte("elemAtkType"));
-						continue;
-				}
-				npcDat.setBaseFireRes(rset.getInt("fireDefValue"));
-				npcDat.setBaseWaterRes(rset.getInt("waterDefValue"));
-				npcDat.setBaseEarthRes(rset.getInt("earthDefValue"));
-				npcDat.setBaseWindRes(rset.getInt("windDefValue"));
-				npcDat.setBaseHolyRes(rset.getInt("holyDefValue"));
-				npcDat.setBaseDarkRes(rset.getInt("darkDefValue"));
-				cont++;
+				ps.setInt(1, id);
 			}
 			
-			rset.close();
-			statement.close();
-			
-			if (Config.CUSTOM_NPC_TABLE)
+			try (ResultSet rset = ps.executeQuery();)
 			{
-				if (id > 0)
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_npc_elementals WHERE npc_id = ?");
-					statement.setInt(1, id);
-				}
-				else
-				{
-					statement = con.prepareStatement("SELECT * FROM custom_npc_elementals ORDER BY npc_id");
-				}
-				
-				rset = statement.executeQuery();
-				
+				L2NpcTemplate npcDat = null;
+				int npcId;
 				while (rset.next())
 				{
 					npcId = rset.getInt("npc_id");
 					npcDat = _npcs.get(npcId);
 					if (npcDat == null)
 					{
-						_log.severe("NPCElementals: Custom Elementals Error with id : " + npcId);
+						_log.severe("NPCElementals: Elementals Error with id : " + npcId);
 						continue;
 					}
 					switch (rset.getByte("elemAtkType"))
@@ -1078,7 +983,7 @@ public class NpcTable
 							npcDat.setBaseDark(rset.getInt("elemAtkValue"));
 							break;
 						default:
-							_log.severe("NPCElementals: Custom Elementals Error with id : " + npcId + "; unknown elementType: " + rset.getByte("elemAtkType"));
+							_log.severe("NPCElementals: Elementals Error with id : " + npcId + "; unknown elementType: " + rset.getByte("elemAtkType"));
 							continue;
 					}
 					npcDat.setBaseFireRes(rset.getInt("fireDefValue"));
@@ -1087,13 +992,9 @@ public class NpcTable
 					npcDat.setBaseWindRes(rset.getInt("windDefValue"));
 					npcDat.setBaseHolyRes(rset.getInt("holyDefValue"));
 					npcDat.setBaseDarkRes(rset.getInt("darkDefValue"));
-					cont++;
+					count++;
 				}
-				rset.close();
-				statement.close();
 			}
-			
-			_log.info(getClass().getSimpleName() + ": Loaded " + cont + " (Custom: " + cCount + ") elementals Data.");
 		}
 		catch (Exception e)
 		{
@@ -1103,8 +1004,13 @@ public class NpcTable
 		{
 			L2DatabaseFactory.close(con);
 		}
+		return count;
 	}
 	
+	/**
+	 * Gets the single instance of NpcTable.
+	 * @return single instance of NpcTable
+	 */
 	public static NpcTable getInstance()
 	{
 		return SingletonHolder._instance;

+ 14 - 14
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/PetNameTable.java

@@ -27,7 +27,6 @@ import java.util.regex.PatternSyntaxException;
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 
-
 public class PetNameTable
 {
 	private static Logger _log = Logger.getLogger(PetNameTable.class.getName());
@@ -45,21 +44,22 @@ public class PetNameTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT name FROM pets p, items i WHERE p.item_obj_id = i.object_id AND name=? AND i.item_id IN (?)");
-			statement.setString(1, name);
-			
-			StringBuilder cond = new StringBuilder();
-			for (int it : PetDataTable.getPetItemsByNpc(petNpcId))
+			try (PreparedStatement ps = con.prepareStatement("SELECT name FROM pets p, items i WHERE p.item_obj_id = i.object_id AND name=? AND i.item_id IN (?)"))
 			{
-				if (!cond.toString().isEmpty())
-					cond.append(", ");
-				cond.append(it);
+				ps.setString(1, name);
+				StringBuilder cond = new StringBuilder();
+				for (int it : PetDataTable.getPetItemsByNpc(petNpcId))
+				{
+					if (!cond.toString().isEmpty())
+						cond.append(", ");
+					cond.append(it);
+				}
+				ps.setString(2, cond.toString());
+				try (ResultSet rs = ps.executeQuery())
+				{
+					result = rs.next();
+				}
 			}
-			statement.setString(2, cond.toString());
-			ResultSet rset = statement.executeQuery();
-			result = rset.next();
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{

+ 34 - 36
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/TeleportLocationTable.java

@@ -17,8 +17,8 @@ package com.l2jserver.gameserver.datatables;
 import gnu.trove.map.hash.TIntObjectHashMap;
 
 import java.sql.Connection;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -55,28 +55,25 @@ public class TeleportLocationTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT id, loc_x, loc_y, loc_z, price, fornoble, itemId FROM teleport");
-			ResultSet rset = statement.executeQuery();
-			L2TeleportLocation teleport;
-			
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery("SELECT id, loc_x, loc_y, loc_z, price, fornoble, itemId FROM teleport"))
 			{
-				teleport = new L2TeleportLocation();
-				
-				teleport.setTeleId(rset.getInt("id"));
-				teleport.setLocX(rset.getInt("loc_x"));
-				teleport.setLocY(rset.getInt("loc_y"));
-				teleport.setLocZ(rset.getInt("loc_z"));
-				teleport.setPrice(rset.getInt("price"));
-				teleport.setIsForNoble(rset.getInt("fornoble") == 1);
-				teleport.setItemId(rset.getInt("itemId"));
-				
-				_teleports.put(teleport.getTeleId(), teleport);
+				L2TeleportLocation teleport;
+				while (rs.next())
+				{
+					teleport = new L2TeleportLocation();
+					
+					teleport.setTeleId(rs.getInt("id"));
+					teleport.setLocX(rs.getInt("loc_x"));
+					teleport.setLocY(rs.getInt("loc_y"));
+					teleport.setLocZ(rs.getInt("loc_z"));
+					teleport.setPrice(rs.getInt("price"));
+					teleport.setIsForNoble(rs.getInt("fornoble") == 1);
+					teleport.setItemId(rs.getInt("itemId"));
+					
+					_teleports.put(teleport.getTeleId(), teleport);
+				}
 			}
-			
-			rset.close();
-			statement.close();
-			
 			_log.info("TeleportLocationTable: Loaded " + _teleports.size() + " Teleport Location Templates.");
 		}
 		catch (Exception e)
@@ -93,25 +90,26 @@ public class TeleportLocationTable
 			try
 			{
 				con = L2DatabaseFactory.getInstance().getConnection();
-				PreparedStatement statement = con.prepareStatement("SELECT id, loc_x, loc_y, loc_z, price, fornoble, itemId FROM custom_teleport");
-				ResultSet rset = statement.executeQuery();
-				L2TeleportLocation teleport;
 				int _cTeleCount = _teleports.size();
-				while (rset.next())
+				try (Statement s = con.createStatement();
+					ResultSet rs = s.executeQuery("SELECT id, loc_x, loc_y, loc_z, price, fornoble, itemId FROM custom_teleport"))
 				{
-					teleport = new L2TeleportLocation();
-					teleport.setTeleId(rset.getInt("id"));
-					teleport.setLocX(rset.getInt("loc_x"));
-					teleport.setLocY(rset.getInt("loc_y"));
-					teleport.setLocZ(rset.getInt("loc_z"));
-					teleport.setPrice(rset.getInt("price"));
-					teleport.setIsForNoble(rset.getInt("fornoble") == 1);
-					teleport.setItemId(rset.getInt("itemId"));
+					L2TeleportLocation teleport;
 					
-					_teleports.put(teleport.getTeleId(), teleport);
+					while (rs.next())
+					{
+						teleport = new L2TeleportLocation();
+						teleport.setTeleId(rs.getInt("id"));
+						teleport.setLocX(rs.getInt("loc_x"));
+						teleport.setLocY(rs.getInt("loc_y"));
+						teleport.setLocZ(rs.getInt("loc_z"));
+						teleport.setPrice(rs.getInt("price"));
+						teleport.setIsForNoble(rs.getInt("fornoble") == 1);
+						teleport.setItemId(rs.getInt("itemId"));
+						
+						_teleports.put(teleport.getTeleId(), teleport);
+					}
 				}
-				rset.close();
-				statement.close();
 				_cTeleCount = _teleports.size() - _cTeleCount;
 				if (_cTeleCount > 0)
 					_log.info("TeleportLocationTable: Loaded " + _cTeleCount + " Custom Teleport Location Templates.");

+ 18 - 15
L2J_Server_BETA/java/com/l2jserver/gameserver/idfactory/CompactionIDFactory.java

@@ -77,18 +77,20 @@ public class CompactionIDFactory extends IdFactory
 		{
 			for (String check : ID_CHECKS)
 			{
-				PreparedStatement ps = con.prepareStatement(check);
-				ps.setInt(1, _curOID);
-				ps.setInt(2, id);
-				ResultSet rs = ps.executeQuery();
-				while (rs.next())
+				try (PreparedStatement ps = con.prepareStatement(check))
 				{
-					int badId = rs.getInt(1);
-					_log.severe(getClass().getSimpleName() + ": Bad ID " + badId + " in DB found by: " + check);
-					throw new RuntimeException();
+					ps.setInt(1, _curOID);
+					ps.setInt(2, id);
+					try (ResultSet rs = ps.executeQuery())
+					{
+						while (rs.next())
+						{
+							int badId = rs.getInt(1);
+							_log.severe(getClass().getSimpleName() + ": Bad ID " + badId + " in DB found by: " + check);
+							throw new RuntimeException();
+						}
+					}
 				}
-				rs.close();
-				ps.close();
 			}
 		}
 		
@@ -103,11 +105,12 @@ public class CompactionIDFactory extends IdFactory
 			_log.info(getClass().getSimpleName() + ": Compacting DB object ID=" + id + " into " + (_curOID));
 			for (String update : ID_UPDATES)
 			{
-				PreparedStatement ps = con.prepareStatement(update);
-				ps.setInt(1, _curOID);
-				ps.setInt(2, id);
-				ps.execute();
-				ps.close();
+				try (PreparedStatement ps = con.prepareStatement(update))
+				{
+					ps.setInt(1, _curOID);
+					ps.setInt(2, id);
+					ps.execute();
+				}
 			}
 			_curOID++;
 		}

+ 9 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/idfactory/IdFactory.java

@@ -162,10 +162,10 @@ public abstract class IdFactory
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			Statement statement = con.createStatement();
-			statement.executeUpdate("UPDATE characters SET online = 0");
-			statement.close();
-			
+			try (Statement s = con.createStatement())
+			{
+				s.executeUpdate("UPDATE characters SET online = 0");
+			}
 			_log.info("Updated characters online status.");
 		}
 		catch (SQLException e)
@@ -307,11 +307,11 @@ public abstract class IdFactory
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			Statement statement = con.createStatement();
-			statement.executeUpdate("DELETE FROM mods_wedding WHERE player1Id NOT IN (SELECT charId FROM characters)");
-			statement.executeUpdate("DELETE FROM mods_wedding WHERE player2Id NOT IN (SELECT charId FROM characters)");
-			statement.close();
-			
+			try (Statement s = con.createStatement())
+			{
+				s.executeUpdate("DELETE FROM mods_wedding WHERE player1Id NOT IN (SELECT charId FROM characters)");
+				s.executeUpdate("DELETE FROM mods_wedding WHERE player2Id NOT IN (SELECT charId FROM characters)");
+			}
 			_log.info("Cleaned up invalid Weddings.");
 		}
 		catch (SQLException e)

+ 13 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/idfactory/StackIDFactory.java

@@ -86,19 +86,21 @@ public class StackIDFactory extends IdFactory
 		{
 			for (String check : ID_CHECKS)
 			{
-				PreparedStatement ps = con.prepareStatement(check);
-				ps.setInt(1, _tempOID);
-				// ps.setInt(1, _curOID);
-				ps.setInt(2, id);
-				ResultSet rs = ps.executeQuery();
-				while (rs.next())
+				try (PreparedStatement ps = con.prepareStatement(check))
 				{
-					int badId = rs.getInt(1);
-					_log.severe("Bad ID " + badId + " in DB found by: " + check);
-					throw new RuntimeException();
+					ps.setInt(1, _tempOID);
+					// ps.setInt(1, _curOID);
+					ps.setInt(2, id);
+					try (ResultSet rs = ps.executeQuery())
+					{
+						while (rs.next())
+						{
+							int badId = rs.getInt(1);
+							_log.severe("Bad ID " + badId + " in DB found by: " + check);
+							throw new RuntimeException();
+						}
+					}
 				}
-				rs.close();
-				ps.close();
 			}
 		}
 		

+ 22 - 25
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/AirShipManager.java

@@ -20,6 +20,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -33,7 +34,6 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.templates.L2CharTemplate;
 import com.l2jserver.gameserver.network.serverpackets.ExAirShipTeleportList;
 
-
 public class AirShipManager
 {
 	private static final Logger _log = Logger.getLogger(AirShipManager.class.getName());
@@ -173,11 +173,12 @@ public class AirShipManager
 			{
 				con = L2DatabaseFactory.getInstance().getConnection();
 				
-				PreparedStatement statement = con.prepareStatement(ADD_DB);
-				statement.setInt(1, ownerId);
-				statement.setInt(2, info.getInteger("fuel"));
-				statement.executeUpdate();
-				statement.close();
+				try (PreparedStatement ps = con.prepareStatement(ADD_DB))
+				{
+					ps.setInt(1, ownerId);
+					ps.setInt(2, info.getInteger("fuel"));
+					ps.executeUpdate();
+				}
 			}
 			catch (SQLException e)
 			{
@@ -258,21 +259,17 @@ public class AirShipManager
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			
-			PreparedStatement statement = con.prepareStatement(LOAD_DB);
-			ResultSet rset = statement.executeQuery();
-			
-			while (rset.next())
+			try (Statement s = con.createStatement();
+				ResultSet rs = s.executeQuery(LOAD_DB))
 			{
-				StatsSet info = new StatsSet();
-				info.set("fuel", rset.getInt("fuel"));
-				
-				_airShipsInfo.put(rset.getInt("owner_id"), info);
-				info = null;
+				StatsSet info;
+				while (rs.next())
+				{
+					info = new StatsSet();
+					info.set("fuel", rs.getInt("fuel"));
+					_airShipsInfo.put(rs.getInt("owner_id"), info);
+				}
 			}
-			
-			rset.close();
-			statement.close();
 		}
 		catch (SQLException e)
 		{
@@ -300,12 +297,12 @@ public class AirShipManager
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			
-			PreparedStatement statement = con.prepareStatement(UPDATE_DB);
-			statement.setInt(1, info.getInteger("fuel"));
-			statement.setInt(2, ownerId);
-			statement.executeUpdate();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement(UPDATE_DB))
+			{
+				ps.setInt(1, info.getInteger("fuel"));
+				ps.setInt(2, ownerId);
+				ps.executeUpdate();
+			}
 		}
 		catch (SQLException e)
 		{

+ 41 - 39
L2J_Server_BETA/java/com/l2jserver/gameserver/scripting/L2ScriptEngineManager.java

@@ -188,59 +188,61 @@ public final class L2ScriptEngineManager
 		
 		if (list.isFile())
 		{
-			LineNumberReader lnr = new LineNumberReader(new InputStreamReader(new FileInputStream(list)));
-			String line;
-			
-			while ((line = lnr.readLine()) != null)
+			try (FileInputStream fis = new FileInputStream(list);
+				InputStreamReader isr = new InputStreamReader(fis);
+				LineNumberReader lnr = new LineNumberReader(isr))
 			{
-				if (Config.ALT_DEV_NO_HANDLERS && line.contains("MasterHandler.java"))
-				{
-					continue;
-				}
-				
-				String[] parts = line.trim().split("#");
-				
-				if ((parts.length > 0) && !parts[0].startsWith("#") && (parts[0].length() > 0))
+				String line;
+				while ((line = lnr.readLine()) != null)
 				{
-					line = parts[0];
-					
-					if (line.endsWith("/**"))
-					{
-						line = line.substring(0, line.length() - 3);
-					}
-					else if (line.endsWith("/*"))
+					if (Config.ALT_DEV_NO_HANDLERS && line.contains("MasterHandler.java"))
 					{
-						line = line.substring(0, line.length() - 2);
+						continue;
 					}
 					
-					file = new File(SCRIPT_FOLDER, line);
+					String[] parts = line.trim().split("#");
 					
-					if (file.isDirectory() && parts[0].endsWith("/**"))
+					if ((parts.length > 0) && !parts[0].startsWith("#") && (parts[0].length() > 0))
 					{
-						executeAllScriptsInDirectory(file, true, 32);
-					}
-					else if (file.isDirectory() && parts[0].endsWith("/*"))
-					{
-						executeAllScriptsInDirectory(file);
-					}
-					else if (file.isFile())
-					{
-						try
+						line = parts[0];
+						
+						if (line.endsWith("/**"))
 						{
-							executeScript(file);
+							line = line.substring(0, line.length() - 3);
 						}
-						catch (ScriptException e)
+						else if (line.endsWith("/*"))
 						{
-							reportScriptFileError(file, e);
+							line = line.substring(0, line.length() - 2);
+						}
+						
+						file = new File(SCRIPT_FOLDER, line);
+						
+						if (file.isDirectory() && parts[0].endsWith("/**"))
+						{
+							executeAllScriptsInDirectory(file, true, 32);
+						}
+						else if (file.isDirectory() && parts[0].endsWith("/*"))
+						{
+							executeAllScriptsInDirectory(file);
+						}
+						else if (file.isFile())
+						{
+							try
+							{
+								executeScript(file);
+							}
+							catch (ScriptException e)
+							{
+								reportScriptFileError(file, e);
+							}
+						}
+						else
+						{
+							_log.warning("Failed loading: (" + file.getCanonicalPath() + ") @ " + list.getName() + ":" + lnr.getLineNumber() + " - Reason: doesnt exists or is not a file.");
 						}
-					}
-					else
-					{
-						_log.warning("Failed loading: (" + file.getCanonicalPath() + ") @ " + list.getName() + ":" + lnr.getLineNumber() + " - Reason: doesnt exists or is not a file.");
 					}
 				}
 			}
-			lnr.close();
 		}
 		else
 		{

+ 5 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/taskmanager/tasks/TaskDailyQuestClean.java

@@ -56,10 +56,11 @@ public class TaskDailyQuestClean extends Task
 			con = L2DatabaseFactory.getInstance().getConnection();
 			for (String name : _daily_names)
 			{
-				PreparedStatement statement = con.prepareStatement("DELETE FROM character_quests WHERE name=? AND var='<state>' AND value='Completed';");
-				statement.setString(1, name);
-				statement.execute();
-				statement.close();
+				try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_quests WHERE name=? AND var='<state>' AND value='Completed';"))
+				{
+					ps.setString(1, name);
+					ps.execute();
+				}
 			}
 		}
 		catch (Exception e)

+ 5 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/taskmanager/tasks/TaskDailySkillReuseClean.java

@@ -48,10 +48,11 @@ public class TaskDailySkillReuseClean extends Task
 			con = L2DatabaseFactory.getInstance().getConnection();
 			for (int skill_id : _daily_skills)
 			{
-				PreparedStatement statement = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;");
-				statement.setInt(1, skill_id);
-				statement.execute();
-				statement.close();
+				try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;"))
+				{
+					ps.setInt(1, skill_id);
+					ps.execute();
+				}
 			}
 		}
 		catch (Exception e)

+ 12 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/taskmanager/tasks/TaskRecom.java

@@ -43,18 +43,19 @@ public class TaskRecom extends Task
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
+			try (PreparedStatement ps = con.prepareStatement("UPDATE character_reco_bonus SET rec_left=?, time_left=?, rec_have=0 WHERE rec_have <=  20"))
+			{
+				ps.setInt(1, 0); // Rec left = 0
+				ps.setInt(2, 3600000); // Timer = 1 hour
+				ps.execute();
+			}
 			
-			PreparedStatement statement = con.prepareStatement("UPDATE character_reco_bonus SET rec_left=?, time_left=?, rec_have=0 WHERE rec_have <=  20");
-			statement.setInt(1, 0); // Rec left = 0
-			statement.setInt(2, 3600000); // Timer = 1 hour
-			statement.execute();
-			statement.close();
-			
-			statement = con.prepareStatement("UPDATE character_reco_bonus SET rec_left=?, time_left=?, rec_have=GREATEST(rec_have-20,0) WHERE rec_have > 20");
-			statement.setInt(1, 0); // Rec left = 0
-			statement.setInt(2, 3600000); // Timer = 1 hour
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("UPDATE character_reco_bonus SET rec_left=?, time_left=?, rec_have=GREATEST(rec_have-20,0) WHERE rec_have > 20"))
+			{
+				ps.setInt(1, 0); // Rec left = 0
+				ps.setInt(2, 3600000); // Timer = 1 hour
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{

+ 5 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/util/Evolve.java

@@ -260,10 +260,11 @@ public final class Evolve
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("DELETE FROM pets WHERE item_obj_id=?");
-			statement.setInt(1, removedItem.getObjectId());
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("DELETE FROM pets WHERE item_obj_id=?"))
+			{
+				ps.setInt(1, removedItem.getObjectId());
+				ps.execute();
+			}
 		}
 		catch (Exception e)
 		{

+ 16 - 14
L2J_Server_BETA/java/com/l2jserver/loginserver/GameServerTable.java

@@ -26,6 +26,7 @@ import java.security.spec.RSAKeyGenParameterSpec;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
@@ -133,16 +134,16 @@ public final class GameServerTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			final PreparedStatement statement = con.prepareStatement("SELECT * FROM gameservers");
-			final ResultSet rset = statement.executeQuery();
-			int id;
-			while (rset.next())
+			try (Statement ps = con.createStatement();
+				ResultSet rs = ps.executeQuery("SELECT * FROM gameservers"))
 			{
-				id = rset.getInt("server_id");
-				_gameServerTable.put(id, new GameServerInfo(id, stringToHex(rset.getString("hexid"))));
+				int id;
+				while (rs.next())
+				{
+					id = rs.getInt("server_id");
+					_gameServerTable.put(id, new GameServerInfo(id, stringToHex(rs.getString("hexid"))));
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -248,12 +249,13 @@ public final class GameServerTable
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			final PreparedStatement statement = con.prepareStatement("INSERT INTO gameservers (hexid,server_id,host) values (?,?,?)");
-			statement.setString(1, hexToString(hexId));
-			statement.setInt(2, id);
-			statement.setString(3, externalHost);
-			statement.executeUpdate();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("INSERT INTO gameservers (hexid,server_id,host) values (?,?,?)"))
+			{
+				ps.setString(1, hexToString(hexId));
+				ps.setInt(2, id);
+				ps.setString(3, externalHost);
+				ps.executeUpdate();
+			}
 			register(id, new GameServerInfo(id, hexId));
 		}
 		catch (Exception e)

+ 15 - 12
L2J_Server_BETA/java/com/l2jserver/loginserver/network/gameserverpackets/ChangePassword.java

@@ -80,15 +80,17 @@ public class ChangePassword extends BaseRecievePacket
 				
 				// SQL connection
 				con = L2DatabaseFactory.getInstance().getConnection();
-				PreparedStatement statement = con.prepareStatement("SELECT password FROM accounts WHERE login=?");
-				statement.setString(1, accountName);
-				ResultSet rset = statement.executeQuery();
-				if (rset.next())
+				try (PreparedStatement ps = con.prepareStatement("SELECT password FROM accounts WHERE login=?"))
 				{
-					pass = rset.getString("password");
+					ps.setString(1, accountName);
+					try (ResultSet rs = ps.executeQuery())
+					{
+						if (rs.next())
+						{
+							pass = rs.getString("password");
+						}
+					}
 				}
-				rset.close();
-				statement.close();
 				
 				if (curpassEnc.equals(pass))
 				{
@@ -96,11 +98,12 @@ public class ChangePassword extends BaseRecievePacket
 					password = md.digest(password);
 					
 					// SQL connection
-					PreparedStatement ps = con.prepareStatement("UPDATE accounts SET password=? WHERE login=?");
-					ps.setString(1, Base64.encodeBytes(password));
-					ps.setString(2, accountName);
-					passUpdated = ps.executeUpdate();
-					ps.close();
+					try (PreparedStatement ps = con.prepareStatement("UPDATE accounts SET password=? WHERE login=?"))
+					{
+						ps.setString(1, Base64.encodeBytes(password));
+						ps.setString(2, accountName);
+						passUpdated = ps.executeUpdate();
+					}
 					
 					_log.log(Level.INFO, "The password for account " + accountName + " has been changed from " + curpassEnc + " to " + Base64.encodeBytes(password));
 					if (passUpdated > 0)

+ 8 - 7
L2J_Server_BETA/java/com/l2jserver/loginserver/network/gameserverpackets/RequestTempBan.java

@@ -60,13 +60,14 @@ public class RequestTempBan extends BaseRecievePacket
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("INSERT INTO account_data VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE value=?");
-			statement.setString(1, _accountName);
-			statement.setString(2, "ban_temp");
-			statement.setString(3, Long.toString(_banTime));
-			statement.setString(4, Long.toString(_banTime));
-			statement.execute();
-			statement.close();
+			try (PreparedStatement ps = con.prepareStatement("INSERT INTO account_data VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE value=?"))
+			{
+				ps.setString(1, _accountName);
+				ps.setString(2, "ban_temp");
+				ps.setString(3, Long.toString(_banTime));
+				ps.setString(4, Long.toString(_banTime));
+				ps.execute();
+			}
 		}
 		catch (SQLException e)
 		{

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/status/Status.java

@@ -101,10 +101,10 @@ public class Status extends Thread
 		super("Status");
 		_mode = mode;
 		Properties telnetSettings = new Properties();
-		InputStream is = new FileInputStream(new File(Config.TELNET_FILE));
-		telnetSettings.load(is);
-		is.close();
-		
+		try (InputStream is = new FileInputStream(new File(Config.TELNET_FILE)))
+		{
+			telnetSettings.load(is);
+		}
 		_statusPort = Integer.parseInt(telnetSettings.getProperty("StatusPort", "12345"));
 		_statusPw = telnetSettings.getProperty("StatusPW");
 		

+ 45 - 50
L2J_Server_BETA/java/com/l2jserver/tools/configurator/ConfigUserInterface.java

@@ -249,59 +249,61 @@ public class ConfigUserInterface extends JFrame implements ActionListener
 	 */
 	private void parsePropertiesFile(File file) throws IOException
 	{
-		LineNumberReader lnr = new LineNumberReader(new InputStreamReader(new FileInputStream(file)));
-		
-		String line;
-		StringBuilder commentBuffer = new StringBuilder();
-		ConfigFile cf = new ConfigFile(file);
-		while ((line = lnr.readLine()) != null)
+		try (FileInputStream fis = new FileInputStream(file);
+			InputStreamReader isr = new InputStreamReader(fis);
+			LineNumberReader lnr = new LineNumberReader(isr))
 		{
-			line = line.trim();
-			
-			if (line.startsWith("#"))
-			{
-				if (commentBuffer.length() > 0)
-				{
-					commentBuffer.append("\r\n");
-				}
-				commentBuffer.append(line.substring(1));
-			}
-			else if (line.length() == 0)
+			String line;
+			StringBuilder commentBuffer = new StringBuilder();
+			ConfigFile cf = new ConfigFile(file);
+			while ((line = lnr.readLine()) != null)
 			{
-				// blank line, reset comments
-				if (commentBuffer.length() > 0)
+				line = line.trim();
+				
+				if (line.startsWith("#"))
 				{
-					cf.addConfigComment(commentBuffer.toString());
+					if (commentBuffer.length() > 0)
+					{
+						commentBuffer.append("\r\n");
+					}
+					commentBuffer.append(line.substring(1));
 				}
-				commentBuffer.setLength(0);
-			}
-			else if (line.indexOf('=') >= 0)
-			{
-				String[] kv = line.split("=");
-				String key = kv[0].trim();
-				StringBuilder value = new StringBuilder();
-				if (kv.length > 1)
+				else if (line.length() == 0)
 				{
-					value.append(kv[1].trim());
+					// blank line, reset comments
+					if (commentBuffer.length() > 0)
+					{
+						cf.addConfigComment(commentBuffer.toString());
+					}
+					commentBuffer.setLength(0);
 				}
-				
-				if (line.indexOf('\\') >= 0)
+				else if (line.indexOf('=') >= 0)
 				{
-					while (((line = lnr.readLine()) != null) && (line.indexOf('\\') >= 0))
+					String[] kv = line.split("=");
+					String key = kv[0].trim();
+					StringBuilder value = new StringBuilder();
+					if (kv.length > 1)
+					{
+						value.append(kv[1].trim());
+					}
+					
+					if (line.indexOf('\\') >= 0)
 					{
+						while (((line = lnr.readLine()) != null) && (line.indexOf('\\') >= 0))
+						{
+							value.append("\r\n" + line);
+						}
 						value.append("\r\n" + line);
 					}
-					value.append("\r\n" + line);
+					
+					String comments = commentBuffer.toString();
+					commentBuffer.setLength(0); // reset
+					
+					cf.addConfigProperty(key, parseValue(value.toString()), comments);
 				}
-				
-				String comments = commentBuffer.toString();
-				commentBuffer.setLength(0); // reset
-				
-				cf.addConfigProperty(key, parseValue(value.toString()), comments);
 			}
+			getConfigs().add(cf);
 		}
-		getConfigs().add(cf);
-		lnr.close();
 	}
 	
 	/**
@@ -413,22 +415,15 @@ public class ConfigUserInterface extends JFrame implements ActionListener
 		
 		public void save() throws IOException
 		{
-			BufferedWriter bufWriter = null;
-			try
+			try (FileOutputStream fos = new FileOutputStream(_file);
+				OutputStreamWriter osw = new OutputStreamWriter(fos);
+				BufferedWriter bufWriter = new BufferedWriter(osw))
 			{
-				bufWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(_file)));
 				for (ConfigComment cc : _configs)
 				{
 					cc.save(bufWriter);
 				}
 			}
-			finally
-			{
-				if (bufWriter != null)
-				{
-					bufWriter.close();
-				}
-			}
 		}
 		
 		class ConfigComment

+ 137 - 136
L2J_Server_BETA/java/com/l2jserver/tools/dbinstaller/util/mysql/DBDumper.java

@@ -16,8 +16,8 @@ package com.l2jserver.tools.dbinstaller.util.mysql;
 
 import java.io.File;
 import java.sql.Connection;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.Formatter;
 import java.util.GregorianCalendar;
@@ -48,157 +48,158 @@ public class DBDumper
 		try (Formatter form = new Formatter())
 		{
 			Connection con = _frame.getConnection();
-			PreparedStatement stmt = con.prepareStatement("SHOW TABLES");
-			ResultSet rset = stmt.executeQuery();
-			File dump = new File("dumps", form.format("%1$s_dump_%2$tY%2$tm%2$td-%2$tH%2$tM%2$tS.sql", _db, new GregorianCalendar().getTime()).toString());
-			new File("dumps").mkdir();
-			dump.createNewFile();
-			
-			_frame.appendToProgressArea("Writing dump " + dump.getName());
-			if (rset.last())
+			try (Statement s = con.createStatement();
+				ResultSet rset = s.executeQuery("SHOW TABLES"))
 			{
-				int rows = rset.getRow();
-				rset.beforeFirst();
-				if (rows > 0)
-				{
-					_frame.setProgressIndeterminate(false);
-					_frame.setProgressMaximum(rows);
-				}
-			}
-			
-			FileWriterStdout ps = new FileWriterStdout(dump);
-			while (rset.next())
-			{
-				_frame.setProgressValue(rset.getRow());
-				_frame.appendToProgressArea("Dumping Table " + rset.getString(1));
-				ps.println("CREATE TABLE `" + rset.getString(1) + "`");
-				ps.println("(");
-				PreparedStatement desc = con.prepareStatement("DESC " + rset.getString(1));
-				ResultSet dset = desc.executeQuery();
-				Map<String, List<String>> keys = new HashMap<>();
-				boolean isFirst = true;
-				while (dset.next())
-				{
-					if (!isFirst)
-					{
-						ps.println(",");
-					}
-					ps.print("\t`" + dset.getString(1) + "`");
-					ps.print(" " + dset.getString(2));
-					if (dset.getString(3).equals("NO"))
-					{
-						ps.print(" NOT NULL");
-					}
-					if (!dset.getString(4).isEmpty())
-					{
-						if (!keys.containsKey(dset.getString(4)))
-						{
-							keys.put(dset.getString(4), new ArrayList<String>());
-						}
-						keys.get(dset.getString(4)).add(dset.getString(1));
-					}
-					if (dset.getString(5) != null)
-					{
-						ps.print(" DEFAULT '" + dset.getString(5) + "'");
-					}
-					if (!dset.getString(6).isEmpty())
-					{
-						ps.print(" " + dset.getString(6));
-					}
-					isFirst = false;
-				}
-				if (keys.containsKey("PRI"))
-				{
-					ps.println(",");
-					ps.print("\tPRIMARY KEY (");
-					isFirst = true;
-					for (String key : keys.get("PRI"))
-					{
-						if (!isFirst)
-						{
-							ps.print(", ");
-						}
-						ps.print("`" + key + "`");
-						isFirst = false;
-					}
-					ps.print(")");
-				}
-				if (keys.containsKey("MUL"))
+				File dump = new File("dumps", form.format("%1$s_dump_%2$tY%2$tm%2$td-%2$tH%2$tM%2$tS.sql", _db, new GregorianCalendar().getTime()).toString());
+				new File("dumps").mkdir();
+				dump.createNewFile();
+				
+				_frame.appendToProgressArea("Writing dump " + dump.getName());
+				if (rset.last())
 				{
-					ps.println(",");
-					isFirst = true;
-					for (String key : keys.get("MUL"))
+					int rows = rset.getRow();
+					rset.beforeFirst();
+					if (rows > 0)
 					{
-						if (!isFirst)
-						{
-							ps.println(", ");
-						}
-						ps.print("\tKEY `key_" + key + "` (`" + key + "`)");
-						isFirst = false;
+						_frame.setProgressIndeterminate(false);
+						_frame.setProgressMaximum(rows);
 					}
 				}
-				ps.println();
-				ps.println(");");
-				ps.flush();
-				dset.close();
-				desc.close();
 				
-				desc = con.prepareStatement("SELECT * FROM " + rset.getString(1));
-				dset = desc.executeQuery();
-				isFirst = true;
-				int cnt = 0;
-				while (dset.next())
+				try (FileWriterStdout fws = new FileWriterStdout(dump))
 				{
-					if ((cnt % 100) == 0)
-					{
-						ps.println("INSERT INTO `" + rset.getString(1) + "` VALUES ");
-					}
-					else
-					{
-						ps.println(",");
-					}
-					
-					ps.print("\t(");
-					boolean isInFirst = true;
-					for (int i = 1; i <= dset.getMetaData().getColumnCount(); i++)
+					while (rset.next())
 					{
-						if (!isInFirst)
+						_frame.setProgressValue(rset.getRow());
+						_frame.appendToProgressArea("Dumping Table " + rset.getString(1));
+						fws.println("CREATE TABLE `" + rset.getString(1) + "`");
+						fws.println("(");
+						try (Statement desc = con.createStatement();
+							ResultSet dset = desc.executeQuery("DESC " + rset.getString(1)))
 						{
-							ps.print(", ");
+							Map<String, List<String>> keys = new HashMap<>();
+							boolean isFirst = true;
+							while (dset.next())
+							{
+								if (!isFirst)
+								{
+									fws.println(",");
+								}
+								fws.print("\t`" + dset.getString(1) + "`");
+								fws.print(" " + dset.getString(2));
+								if (dset.getString(3).equals("NO"))
+								{
+									fws.print(" NOT NULL");
+								}
+								if (!dset.getString(4).isEmpty())
+								{
+									if (!keys.containsKey(dset.getString(4)))
+									{
+										keys.put(dset.getString(4), new ArrayList<String>());
+									}
+									keys.get(dset.getString(4)).add(dset.getString(1));
+								}
+								if (dset.getString(5) != null)
+								{
+									fws.print(" DEFAULT '" + dset.getString(5) + "'");
+								}
+								if (!dset.getString(6).isEmpty())
+								{
+									fws.print(" " + dset.getString(6));
+								}
+								isFirst = false;
+							}
+							if (keys.containsKey("PRI"))
+							{
+								fws.println(",");
+								fws.print("\tPRIMARY KEY (");
+								isFirst = true;
+								for (String key : keys.get("PRI"))
+								{
+									if (!isFirst)
+									{
+										fws.print(", ");
+									}
+									fws.print("`" + key + "`");
+									isFirst = false;
+								}
+								fws.print(")");
+							}
+							if (keys.containsKey("MUL"))
+							{
+								fws.println(",");
+								isFirst = true;
+								for (String key : keys.get("MUL"))
+								{
+									if (!isFirst)
+									{
+										fws.println(", ");
+									}
+									fws.print("\tKEY `key_" + key + "` (`" + key + "`)");
+									isFirst = false;
+								}
+							}
+							fws.println();
+							fws.println(");");
+							fws.flush();
 						}
 						
-						if (dset.getString(i) == null)
-						{
-							ps.print("NULL");
-						}
-						else
+						try (Statement desc = con.createStatement();
+							ResultSet dset = desc.executeQuery("SELECT * FROM " + rset.getString(1)))
 						{
-							ps.print("'" + dset.getString(i).replace("\'", "\\\'") + "'");
+							boolean isFirst = true;
+							int cnt = 0;
+							while (dset.next())
+							{
+								if ((cnt % 100) == 0)
+								{
+									fws.println("INSERT INTO `" + rset.getString(1) + "` VALUES ");
+								}
+								else
+								{
+									fws.println(",");
+								}
+								
+								fws.print("\t(");
+								boolean isInFirst = true;
+								for (int i = 1; i <= dset.getMetaData().getColumnCount(); i++)
+								{
+									if (!isInFirst)
+									{
+										fws.print(", ");
+									}
+									
+									if (dset.getString(i) == null)
+									{
+										fws.print("NULL");
+									}
+									else
+									{
+										fws.print("'" + dset.getString(i).replace("\'", "\\\'") + "'");
+									}
+									isInFirst = false;
+								}
+								fws.print(")");
+								isFirst = false;
+								
+								if ((cnt % 100) == 99)
+								{
+									fws.println(";");
+								}
+								cnt++;
+							}
+							if (!isFirst && ((cnt % 100) != 0))
+							{
+								fws.println(";");
+							}
+							fws.println();
+							fws.flush();
 						}
-						isInFirst = false;
 					}
-					ps.print(")");
-					isFirst = false;
-					
-					if ((cnt % 100) == 99)
-					{
-						ps.println(";");
-					}
-					cnt++;
-				}
-				if (!isFirst && ((cnt % 100) != 0))
-				{
-					ps.println(";");
+					fws.flush();
 				}
-				ps.println();
-				ps.flush();
-				dset.close();
-				desc.close();
 			}
-			rset.close();
-			stmt.close();
-			ps.flush();
-			ps.close();
 		}
 		catch (Exception e)
 		{

+ 5 - 4
L2J_Server_BETA/java/com/l2jserver/tools/dbinstaller/util/mysql/MySqlConnect.java

@@ -37,10 +37,11 @@ public class MySqlConnect
 			final String formattedText = form.format("jdbc:mysql://%1$s:%2$s", host, port).toString();
 			con = DriverManager.getConnection(formattedText, user, password);
 			
-			Statement st = con.createStatement();
-			st.execute("CREATE DATABASE IF NOT EXISTS `" + db + "`");
-			st.execute("USE `" + db + "`");
-			st.close();
+			try (Statement s = con.createStatement())
+			{
+				s.execute("CREATE DATABASE IF NOT EXISTS `" + db + "`");
+				s.execute("USE `" + db + "`");
+			}
 		}
 		catch (SQLException e)
 		{

+ 24 - 23
L2J_Server_BETA/java/com/l2jserver/tools/dbinstaller/util/mysql/ScriptExecutor.java

@@ -68,33 +68,34 @@ public class ScriptExecutor
 			String line = "";
 			Connection con = _frame.getConnection();
 			Statement stmt = con.createStatement();
-			Scanner scn = new Scanner(file);
-			StringBuilder sb = new StringBuilder();
-			while (scn.hasNextLine())
+			try (Scanner scn = new Scanner(file))
 			{
-				line = scn.nextLine();
-				if (line.startsWith("--"))
+				StringBuilder sb = new StringBuilder();
+				while (scn.hasNextLine())
 				{
-					continue;
-				}
-				else if (line.contains("--"))
-				{
-					line = line.split("--")[0];
-				}
-				
-				line = line.trim();
-				if (!line.isEmpty())
-				{
-					sb.append(line + "\n");
-				}
-				
-				if (line.endsWith(";"))
-				{
-					stmt.execute(sb.toString());
-					sb = new StringBuilder();
+					line = scn.nextLine();
+					if (line.startsWith("--"))
+					{
+						continue;
+					}
+					else if (line.contains("--"))
+					{
+						line = line.split("--")[0];
+					}
+					
+					line = line.trim();
+					if (!line.isEmpty())
+					{
+						sb.append(line + "\n");
+					}
+					
+					if (line.endsWith(";"))
+					{
+						stmt.execute(sb.toString());
+						sb = new StringBuilder();
+					}
 				}
 			}
-			scn.close();
 		}
 		catch (FileNotFoundException e)
 		{

+ 16 - 12
L2J_Server_BETA/java/com/l2jserver/tools/gsregistering/BaseGameServerRegister.java

@@ -23,6 +23,7 @@ import java.math.BigInteger;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.Locale;
 import java.util.Map.Entry;
 import java.util.Properties;
@@ -349,11 +350,12 @@ public abstract class BaseGameServerRegister
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			final PreparedStatement statement = con.prepareStatement("DELETE FROM gameservers WHERE server_id = ?");
-			statement.setInt(1, id);
-			statement.executeUpdate();
+			try (PreparedStatement ps = con.prepareStatement("DELETE FROM gameservers WHERE server_id = ?"))
+			{
+				ps.setInt(1, id);
+				ps.executeUpdate();
+			}
 			GameServerTable.getInstance().getRegisteredGameServers().remove(id);
-			statement.close();
 		}
 		finally
 		{
@@ -371,9 +373,10 @@ public abstract class BaseGameServerRegister
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			final PreparedStatement statement = con.prepareStatement("DELETE FROM gameservers");
-			statement.executeUpdate();
-			statement.close();
+			try (Statement s = con.createStatement())
+			{
+				s.executeUpdate("DELETE FROM gameservers");
+			}
 			GameServerTable.getInstance().getRegisteredGameServers().clear();
 		}
 		finally
@@ -397,11 +400,12 @@ public abstract class BaseGameServerRegister
 		File file = new File(outDir, "hexid.txt");
 		// Create a new empty file only if it doesn't exist
 		file.createNewFile();
-		OutputStream out = new FileOutputStream(file);
-		hexSetting.setProperty("ServerID", String.valueOf(id));
-		hexSetting.setProperty("HexID", new BigInteger(hexId).toString(16));
-		hexSetting.store(out, "The HexId to Auth into LoginServer");
-		out.close();
+		try (OutputStream out = new FileOutputStream(file))
+		{
+			hexSetting.setProperty("ServerID", String.valueOf(id));
+			hexSetting.setProperty("HexID", new BigInteger(hexId).toString(16));
+			hexSetting.store(out, "The HexId to Auth into LoginServer");
+		}
 	}
 	
 	/**

+ 2 - 8
L2J_Server_BETA/java/com/l2jserver/util/L2Properties.java

@@ -73,19 +73,13 @@ public final class L2Properties extends Properties
 	@Override
 	public void load(InputStream inStream) throws IOException
 	{
-		InputStreamReader reader = null;
-		try
+		try (InputStreamReader isr = new InputStreamReader(inStream, Charset.defaultCharset());)
 		{
-			reader = new InputStreamReader(inStream, Charset.defaultCharset());
-			super.load(reader);
+			super.load(isr);
 		}
 		finally
 		{
 			inStream.close();
-			if (reader != null)
-			{
-				reader.close();
-			}
 		}
 	}
 	

+ 47 - 51
L2J_Server_BETA/java/com/l2jserver/util/lib/SqlUtils.java

@@ -45,16 +45,14 @@ public class SqlUtils
 				resultField
 			}, tableName, whereClause, true);
 			
-			PreparedStatement statement = con.prepareStatement(query);
-			ResultSet rset = statement.executeQuery();
-			
-			if (rset.next())
+			try (PreparedStatement ps = con.prepareStatement(query);
+				ResultSet rs = ps.executeQuery())
 			{
-				res = rset.getInt(1);
+				if (rs.next())
+				{
+					res = rs.getInt(1);
+				}
 			}
-			
-			rset.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -80,32 +78,31 @@ public class SqlUtils
 			{
 				resultField
 			}, tableName, whereClause, false);
-			PreparedStatement statement = con.prepareStatement(query);
-			ResultSet rset = statement.executeQuery();
-			
-			int rows = 0;
-			
-			while (rset.next())
-			{
-				rows++;
-			}
 			
-			if (rows == 0)
+			try (PreparedStatement ps = con.prepareStatement(query);
+				ResultSet rs = ps.executeQuery())
 			{
-				return new Integer[0];
-			}
-			
-			res = new Integer[rows - 1];
-			
-			rset.first();
-			
-			int row = 0;
-			while (rset.next())
-			{
-				res[row] = rset.getInt(1);
+				int rows = 0;
+				while (rs.next())
+				{
+					rows++;
+				}
+				
+				if (rows == 0)
+				{
+					return new Integer[0];
+				}
+				
+				res = new Integer[rows - 1];
+				
+				rs.first();
+				
+				int row = 0;
+				while (rs.next())
+				{
+					res[row] = rs.getInt(1);
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
@@ -129,30 +126,29 @@ public class SqlUtils
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
 			query = L2DatabaseFactory.getInstance().prepQuerySelect(resultFields, usedTables, whereClause, false);
-			PreparedStatement statement = con.prepareStatement(query);
-			ResultSet rset = statement.executeQuery();
-			
-			int rows = 0;
-			while (rset.next())
+			try (PreparedStatement ps = con.prepareStatement(query);
+				ResultSet rs = ps.executeQuery())
 			{
-				rows++;
-			}
-			
-			res = new Integer[rows - 1][resultFields.length];
-			
-			rset.first();
-			
-			int row = 0;
-			while (rset.next())
-			{
-				for (int i = 0; i < resultFields.length; i++)
+				int rows = 0;
+				while (rs.next())
+				{
+					rows++;
+				}
+				
+				res = new Integer[rows - 1][resultFields.length];
+				
+				rs.first();
+				
+				int row = 0;
+				while (rs.next())
 				{
-					res[row][i] = rset.getInt(i + 1);
+					for (int i = 0; i < resultFields.length; i++)
+					{
+						res[row][i] = rs.getInt(i + 1);
+					}
+					row++;
 				}
-				row++;
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{