Преглед изворни кода

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 година
родитељ
комит
3c877226ff
39 измењених фајлова са 1427 додато и 1524 уклоњено
  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)
 		{