From dc051b23e8856a39496ed04dec9ad60675a80a1c Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Sun, 28 Jun 2015 02:53:56 -0300
Subject: [PATCH] Using new ConnectionFactory

Reviewed all database access.
Fixed some unclosed connections.
Refactored bad code.
Added tasks for future refactor.
---
 .../RainbowSpringsChateau.java                |  64 ++++-----
 .../conquerablehalls/flagwar/FlagWar.java     | 136 ++++++++----------
 .../AdminChangeAccessLevel.java               |  17 ++-
 .../admincommandhandlers/AdminEditChar.java   |  14 +-
 .../admincommandhandlers/AdminRepairChar.java |  55 +++----
 .../admincommandhandlers/AdminShowQuests.java |   5 +-
 .../admincommandhandlers/AdminTeleport.java   |  22 +--
 .../communityboard/FavoriteBoard.java         |   8 +-
 .../handlers/communityboard/HomeBoard.java    |   4 +-
 .../usercommandhandlers/ClanWarsList.java     |  88 ++++++------
 .../voicedcommandhandlers/Wedding.java        |  25 ++--
 .../503_PursuitClanAmbition/__init__.py       |  10 +-
 12 files changed, 209 insertions(+), 239 deletions(-)

diff --git a/L2J_DataPack/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java b/L2J_DataPack/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
index f86b61f2f7..019f330edb 100644
--- a/L2J_DataPack/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
+++ b/L2J_DataPack/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
@@ -21,6 +21,7 @@ package conquerablehalls.RainbowSpringsChateau;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collection;
@@ -31,7 +32,7 @@ import java.util.Map;
 import java.util.concurrent.ScheduledFuture;
 
 import com.l2jserver.Config;
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
@@ -394,7 +395,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 								long count = warDecrees.getCount();
 								_warDecreesCount.put(clan.getId(), count);
 								player.destroyItem("Rainbow Springs Registration", warDecrees, npc, true);
-								updateAttacker(clan.getId(), count, false);
+								addAttacker(clan.getId(), count);
 								html = "messenger_yetti009.htm";
 							}
 						}
@@ -414,7 +415,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 						}
 						else
 						{
-							updateAttacker(clan.getId(), 0, true);
+							removeAttacker(clan.getId());
 							html = "messenger_yetti018.htm";
 						}
 						break;
@@ -826,34 +827,31 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 	
 	private static boolean isYetiTarget(int npcId)
 	{
-		for (int yeti : YETIS)
+		return Util.contains(YETIS, npcId);
+	}
+	
+	private static void removeAttacker(int clanId)
+	{
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement("DELETE FROM rainbowsprings_attacker_list WHERE clanId = ?"))
 		{
-			if (yeti == npcId)
-			{
-				return true;
-			}
+			ps.setInt(1, clanId);
+			ps.execute();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
 		}
-		return false;
 	}
 	
-	private static void updateAttacker(int clanId, long count, boolean remove)
+	private static void addAttacker(int clanId, long count)
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement("INSERT INTO rainbowsprings_attacker_list VALUES (?,?)"))
 		{
-			PreparedStatement statement;
-			if (remove)
-			{
-				statement = con.prepareStatement("DELETE FROM rainbowsprings_attacker_list WHERE clanId = ?");
-				statement.setInt(1, clanId);
-			}
-			else
-			{
-				statement = con.prepareStatement("INSERT INTO rainbowsprings_attacker_list VALUES (?,?)");
-				statement.setInt(1, clanId);
-				statement.setLong(2, count);
-			}
-			statement.execute();
-			statement.close();
+			ps.setInt(1, clanId);
+			ps.setLong(2, count);
+			ps.execute();
 		}
 		catch (Exception e)
 		{
@@ -864,18 +862,16 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 	@Override
 	public void loadAttackers()
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			Statement s = con.createStatement())
 		{
-			PreparedStatement statement = con.prepareStatement("SELECT * FROM rainbowsprings_attacker_list");
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (ResultSet rset = s.executeQuery("SELECT * FROM rainbowsprings_attacker_list"))
 			{
-				int clanId = rset.getInt("clan_id");
-				long count = rset.getLong("decrees_count");
-				_warDecreesCount.put(clanId, count);
+				while (rset.next())
+				{
+					_warDecreesCount.put(rset.getInt("clan_id"), rset.getLong("decrees_count"));
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
diff --git a/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java b/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
index dfaa06a818..de646e8b46 100644
--- a/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
+++ b/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
@@ -27,7 +27,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.ai.L2SpecialSiegeGuardAI;
@@ -764,135 +764,123 @@ public abstract class FlagWar extends ClanHallSiegeEngine
 	@Override
 	public final void loadAttackers()
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement(SQL_LOAD_ATTACKERS))
 		{
-			PreparedStatement statement = con.prepareStatement(SQL_LOAD_ATTACKERS);
-			statement.setInt(1, _hall.getId());
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			ps.setInt(1, _hall.getId());
+			try (ResultSet rset = ps.executeQuery())
 			{
-				final int clanId = rset.getInt("clan_id");
-				
-				if (ClanTable.getInstance().getClan(clanId) == null)
+				while (rset.next())
 				{
-					_log.warning(getName() + ": Loaded an unexistent clan as attacker! Clan ID: " + clanId);
-					continue;
+					final int clanId = rset.getInt("clan_id");
+					
+					if (ClanTable.getInstance().getClan(clanId) == null)
+					{
+						_log.warning(getName() + ": Loaded an unexistent clan as attacker! Clan ID: " + clanId);
+						continue;
+					}
+					
+					ClanData data = new ClanData();
+					data.flag = rset.getInt("flag");
+					data.npc = rset.getInt("npc");
+					
+					_data.put(clanId, data);
+					loadAttackerMembers(clanId);
 				}
-				
-				ClanData data = new ClanData();
-				data.flag = rset.getInt("flag");
-				data.npc = rset.getInt("npc");
-				
-				_data.put(clanId, data);
-				loadAttackerMembers(clanId);
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
 			_log.warning(getName() + ".loadAttackers()->" + e.getMessage());
-			e.printStackTrace();
 		}
 	}
 	
 	private final void loadAttackerMembers(int clanId)
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		final List<Integer> listInstance = _data.get(clanId).players;
+		if (listInstance == null)
 		{
-			ArrayList<Integer> listInstance = _data.get(clanId).players;
-			
-			if (listInstance == null)
-			{
-				_log.warning(getName() + ": Tried to load unregistered clan with ID " + clanId);
-				return;
-			}
-			
-			PreparedStatement statement = con.prepareStatement(SQL_LOAD_MEMEBERS);
-			statement.setInt(1, clanId);
-			ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			_log.warning(getName() + ": Tried to load unregistered clan with ID " + clanId);
+			return;
+		}
+		
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement(SQL_LOAD_MEMEBERS))
+		{
+			ps.setInt(1, clanId);
+			try (ResultSet rset = ps.executeQuery())
 			{
-				listInstance.add(rset.getInt("object_id"));
-				
+				while (rset.next())
+				{
+					listInstance.add(rset.getInt("object_id"));
+				}
 			}
-			rset.close();
-			statement.close();
 		}
 		catch (Exception e)
 		{
 			_log.warning(getName() + ".loadAttackerMembers()->" + e.getMessage());
-			e.printStackTrace();
 		}
 	}
 	
 	private final void saveClan(int clanId, int flag)
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement(SQL_SAVE_CLAN))
 		{
-			PreparedStatement statement = con.prepareStatement(SQL_SAVE_CLAN);
-			statement.setInt(1, _hall.getId());
-			statement.setInt(2, flag);
-			statement.setInt(3, 0);
-			statement.setInt(4, clanId);
-			statement.execute();
-			statement.close();
+			ps.setInt(1, _hall.getId());
+			ps.setInt(2, flag);
+			ps.setInt(3, 0);
+			ps.setInt(4, clanId);
+			ps.execute();
 		}
 		catch (Exception e)
 		{
 			_log.warning(getName() + ".saveClan()->" + e.getMessage());
-			e.printStackTrace();
 		}
 	}
 	
 	private final void saveNpc(int npc, int clanId)
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement(SQL_SAVE_NPC))
 		{
-			PreparedStatement statement = con.prepareStatement(SQL_SAVE_NPC);
-			statement.setInt(1, npc);
-			statement.setInt(2, clanId);
-			statement.execute();
-			statement.close();
+			ps.setInt(1, npc);
+			ps.setInt(2, clanId);
+			ps.execute();
 		}
 		catch (Exception e)
 		{
 			_log.warning(getName() + ".saveNpc()->" + e.getMessage());
-			e.printStackTrace();
 		}
 	}
 	
 	private final void saveMember(int clanId, int objectId)
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement(SQL_SAVE_ATTACKER))
 		{
-			PreparedStatement statement = con.prepareStatement(SQL_SAVE_ATTACKER);
-			statement.setInt(1, _hall.getId());
-			statement.setInt(2, clanId);
-			statement.setInt(3, objectId);
-			statement.execute();
-			statement.close();
+			ps.setInt(1, _hall.getId());
+			ps.setInt(2, clanId);
+			ps.setInt(3, objectId);
+			ps.execute();
 		}
 		catch (Exception e)
 		{
 			_log.warning(getName() + ".saveMember()->" + e.getMessage());
-			e.printStackTrace();
 		}
 	}
 	
 	private void clearTables()
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps1 = con.prepareStatement(SQL_CLEAR_CLAN);
+			PreparedStatement ps2 = con.prepareStatement(SQL_CLEAR_CLAN_ATTACKERS))
 		{
-			PreparedStatement stat1 = con.prepareStatement(SQL_CLEAR_CLAN);
-			stat1.setInt(1, _hall.getId());
-			stat1.execute();
-			stat1.close();
+			ps1.setInt(1, _hall.getId());
+			ps1.execute();
 			
-			PreparedStatement stat2 = con.prepareStatement(SQL_CLEAR_CLAN_ATTACKERS);
-			stat2.setInt(1, _hall.getId());
-			stat2.execute();
-			stat2.close();
+			ps2.setInt(1, _hall.getId());
+			ps2.execute();
 		}
 		catch (Exception e)
 		{
@@ -904,8 +892,8 @@ public abstract class FlagWar extends ClanHallSiegeEngine
 	{
 		int flag = 0;
 		int npc = 0;
-		ArrayList<Integer> players = new ArrayList<>(18);
-		ArrayList<L2PcInstance> playersInstance = new ArrayList<>(18);
+		List<Integer> players = new ArrayList<>(18);
+		List<L2PcInstance> playersInstance = new ArrayList<>(18);
 		L2Spawn warrior = null;
 		L2Spawn flagInstance = null;
 	}
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminChangeAccessLevel.java b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminChangeAccessLevel.java
index 60b309ea7b..83792dcbd0 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminChangeAccessLevel.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminChangeAccessLevel.java
@@ -23,7 +23,7 @@ import java.sql.PreparedStatement;
 import java.sql.SQLException;
 
 import com.l2jserver.Config;
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.data.xml.impl.AdminData;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
 import com.l2jserver.gameserver.model.L2AccessLevel;
@@ -75,15 +75,14 @@ public final class AdminChangeAccessLevel implements IAdminCommandHandler
 			}
 			else
 			{
-				try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+				try (Connection con = ConnectionFactory.getInstance().getConnection();
+					PreparedStatement ps = con.prepareStatement("UPDATE characters SET accesslevel=? WHERE char_name=?"))
 				{
-					PreparedStatement statement = con.prepareStatement("UPDATE characters SET accesslevel=? WHERE char_name=?");
-					statement.setInt(1, lvl);
-					statement.setString(2, name);
-					statement.execute();
-					int count = statement.getUpdateCount();
-					statement.close();
-					if (count == 0)
+					ps.setInt(1, lvl);
+					ps.setString(2, name);
+					ps.execute();
+					
+					if (ps.getUpdateCount() == 0)
 					{
 						activeChar.sendMessage("Character not found or access level unaltered.");
 					}
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java
index 37f0d4774e..85cd3014f9 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java
@@ -30,7 +30,7 @@ import java.util.StringTokenizer;
 import java.util.logging.Logger;
 
 import com.l2jserver.Config;
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
 import com.l2jserver.gameserver.data.xml.impl.ClassListData;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
@@ -566,11 +566,13 @@ public class AdminEditChar implements IAdminCommandHandler
 				
 				if (player == null)
 				{
-					Connection con = L2DatabaseFactory.getInstance().getConnection();
-					PreparedStatement ps = con.prepareStatement("UPDATE characters SET " + (changeCreateExpiryTime ? "clan_create_expiry_time" : "clan_join_expiry_time") + " WHERE char_name=? LIMIT 1");
-					
-					ps.setString(1, playerName);
-					ps.execute();
+					final String updateQuery = "UPDATE characters SET " + (changeCreateExpiryTime ? "clan_create_expiry_time" : "clan_join_expiry_time") + " WHERE char_name=? LIMIT 1";
+					try (Connection con = ConnectionFactory.getInstance().getConnection();
+						PreparedStatement ps = con.prepareStatement(updateQuery))
+					{
+						ps.setString(1, playerName);
+						ps.execute();
+					}
 				}
 				else
 				{
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminRepairChar.java b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminRepairChar.java
index 4997ae821d..1e1daa74d4 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminRepairChar.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminRepairChar.java
@@ -20,11 +20,11 @@ package handlers.admincommandhandlers;
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
-import java.sql.ResultSet;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
+import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
@@ -63,47 +63,36 @@ public class AdminRepairChar implements IAdminCommandHandler
 			return;
 		}
 		
+		final String playerName = parts[1];
 		String cmd = "UPDATE characters SET x=-84318, y=244579, z=-3730 WHERE char_name=?";
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		try (Connection con = ConnectionFactory.getInstance().getConnection())
 		{
-			PreparedStatement statement = con.prepareStatement(cmd);
-			statement.setString(1, parts[1]);
-			statement.execute();
-			statement.close();
-			
-			statement = con.prepareStatement("SELECT charId FROM characters where char_name=?");
-			statement.setString(1, parts[1]);
-			ResultSet rset = statement.executeQuery();
-			int objId = 0;
-			if (rset.next())
+			try (PreparedStatement ps = con.prepareStatement(cmd))
 			{
-				objId = rset.getInt(1);
+				ps.setString(1, playerName);
+				ps.execute();
 			}
 			
-			rset.close();
-			statement.close();
-			
-			if (objId == 0)
+			final int objId = CharNameTable.getInstance().getIdByName(playerName);
+			if (objId != 0)
 			{
-				con.close();
-				return;
+				// Delete player's shortcuts.
+				try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_shortcuts WHERE charId=?"))
+				{
+					ps.setInt(1, objId);
+					ps.execute();
+				}
+				// Move all items to the inventory.
+				try (PreparedStatement ps = con.prepareStatement("UPDATE items SET loc=\"INVENTORY\" WHERE owner_id=?"))
+				{
+					ps.setInt(1, objId);
+					ps.execute();
+				}
 			}
-			
-			// connection = L2DatabaseFactory.getInstance().getConnection();
-			statement = con.prepareStatement("DELETE FROM character_shortcuts WHERE charId=?");
-			statement.setInt(1, objId);
-			statement.execute();
-			statement.close();
-			
-			// connection = L2DatabaseFactory.getInstance().getConnection();
-			statement = con.prepareStatement("UPDATE items SET loc=\"INVENTORY\" WHERE owner_id=?");
-			statement.setInt(1, objId);
-			statement.execute();
-			statement.close();
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "could not repair char:", e);
+			_log.log(Level.WARNING, "Could not repair char:", e);
 		}
 	}
 }
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java
index 20086c8251..8b2a3991f5 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminShowQuests.java
@@ -23,7 +23,7 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.util.logging.Logger;
 
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.model.L2Object;
@@ -174,7 +174,8 @@ public class AdminShowQuests implements IAdminCommandHandler
 	
 	private static void showQuestMenu(L2PcInstance target, L2PcInstance actor, String[] val)
 	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		// TODO(Zoey76): Refactor this into smaller methods and separate database access logic from HTML creation.
+		try (Connection con = ConnectionFactory.getInstance().getConnection())
 		{
 			ResultSet rs;
 			PreparedStatement req;
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java
index e44de73ad7..e17f218b0b 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminTeleport.java
@@ -26,7 +26,7 @@ import java.util.StringTokenizer;
 import java.util.logging.Logger;
 
 import com.l2jserver.Config;
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
@@ -493,16 +493,16 @@ public class AdminTeleport implements IAdminCommandHandler
 		final int x = activeChar.getX();
 		final int y = activeChar.getY();
 		final int z = activeChar.getZ();
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
-		{
-			PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=? WHERE char_name=?");
-			statement.setInt(1, x);
-			statement.setInt(2, y);
-			statement.setInt(3, z);
-			statement.setString(4, name);
-			statement.execute();
-			int count = statement.getUpdateCount();
-			statement.close();
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement("UPDATE characters SET x=?, y=?, z=? WHERE char_name=?"))
+		{
+			ps.setInt(1, x);
+			ps.setInt(2, y);
+			ps.setInt(3, z);
+			ps.setString(4, name);
+			ps.execute();
+			int count = ps.getUpdateCount();
+			
 			if (count == 0)
 			{
 				activeChar.sendMessage("Character not found or position unaltered.");
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/FavoriteBoard.java b/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/FavoriteBoard.java
index b5096072cc..f7121ed3b6 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/FavoriteBoard.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/FavoriteBoard.java
@@ -23,7 +23,7 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.text.SimpleDateFormat;
 
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.handler.CommunityBoardHandler;
 import com.l2jserver.gameserver.handler.IParseBoardHandler;
@@ -63,7 +63,7 @@ public class FavoriteBoard implements IParseBoardHandler
 			// Load Favorite links
 			final String list = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/CommunityBoard/favorite_list.html");
 			final StringBuilder sb = new StringBuilder();
-			try (Connection con = L2DatabaseFactory.getInstance().getConnection();
+			try (Connection con = ConnectionFactory.getInstance().getConnection();
 				PreparedStatement ps = con.prepareStatement(SELECT_FAVORITES))
 			{
 				ps.setInt(1, activeChar.getObjectId());
@@ -100,7 +100,7 @@ public class FavoriteBoard implements IParseBoardHandler
 					return false;
 				}
 				
-				try (Connection con = L2DatabaseFactory.getInstance().getConnection();
+				try (Connection con = ConnectionFactory.getInstance().getConnection();
 					PreparedStatement ps = con.prepareStatement(ADD_FAVORITE))
 				{
 					ps.setInt(1, activeChar.getObjectId());
@@ -125,7 +125,7 @@ public class FavoriteBoard implements IParseBoardHandler
 				return false;
 			}
 			
-			try (Connection con = L2DatabaseFactory.getInstance().getConnection();
+			try (Connection con = ConnectionFactory.getInstance().getConnection();
 				PreparedStatement ps = con.prepareStatement(DELETE_FAVORITE))
 			{
 				ps.setInt(1, activeChar.getObjectId());
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/HomeBoard.java b/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/HomeBoard.java
index 29e36f75ba..170a85436a 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/HomeBoard.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/communityboard/HomeBoard.java
@@ -22,7 +22,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
 import com.l2jserver.gameserver.handler.CommunityBoardHandler;
@@ -83,7 +83,7 @@ public final class HomeBoard implements IParseBoardHandler
 	private static int getFavoriteCount(L2PcInstance player)
 	{
 		int count = 0;
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
 			PreparedStatement ps = con.prepareStatement(COUNT_FAVORITES))
 		{
 			ps.setInt(1, player.getObjectId());
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/usercommandhandlers/ClanWarsList.java b/L2J_DataPack/dist/game/data/scripts/handlers/usercommandhandlers/ClanWarsList.java
index 4df378a6a7..9b52bec39a 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/usercommandhandlers/ClanWarsList.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/usercommandhandlers/ClanWarsList.java
@@ -24,7 +24,7 @@ import java.sql.ResultSet;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.handler.IUserCommandHandler;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -64,57 +64,53 @@ public class ClanWarsList implements IUserCommandHandler
 			return false;
 		}
 		
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		String query;
+		// Attack List
+		if (id == 88)
 		{
-			String query;
-			// Attack List
-			if (id == 88)
-			{
-				activeChar.sendPacket(SystemMessageId.CLANS_YOU_DECLARED_WAR_ON);
-				query = ATTACK_LIST;
-			}
-			// Under Attack List
-			else if (id == 89)
-			{
-				activeChar.sendPacket(SystemMessageId.CLANS_THAT_HAVE_DECLARED_WAR_ON_YOU);
-				query = UNDER_ATTACK_LIST;
-			}
-			// War List
-			else
-			{
-				activeChar.sendPacket(SystemMessageId.WAR_LIST);
-				query = WAR_LIST;
-			}
+			activeChar.sendPacket(SystemMessageId.CLANS_YOU_DECLARED_WAR_ON);
+			query = ATTACK_LIST;
+		}
+		// Under Attack List
+		else if (id == 89)
+		{
+			activeChar.sendPacket(SystemMessageId.CLANS_THAT_HAVE_DECLARED_WAR_ON_YOU);
+			query = UNDER_ATTACK_LIST;
+		}
+		// War List
+		else
+		{
+			activeChar.sendPacket(SystemMessageId.WAR_LIST);
+			query = WAR_LIST;
+		}
+		
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement ps = con.prepareStatement(query))
+		{
+			ps.setInt(1, clan.getId());
+			ps.setInt(2, clan.getId());
 			
-			try (PreparedStatement ps = con.prepareStatement(query))
+			SystemMessage sm;
+			try (ResultSet rs = ps.executeQuery())
 			{
-				ps.setInt(1, clan.getId());
-				ps.setInt(2, clan.getId());
-				
-				SystemMessage sm;
-				try (ResultSet rs = ps.executeQuery())
+				while (rs.next())
 				{
-					String clanName;
-					int ally_id;
-					while (rs.next())
+					String clanName = rs.getString("clan_name");
+					int allyId = rs.getInt("ally_id");
+					if (allyId > 0)
+					{
+						// Target With Ally
+						sm = SystemMessage.getSystemMessage(SystemMessageId.S1_S2_ALLIANCE);
+						sm.addString(clanName);
+						sm.addString(rs.getString("ally_name"));
+					}
+					else
 					{
-						clanName = rs.getString("clan_name");
-						ally_id = rs.getInt("ally_id");
-						if (ally_id > 0)
-						{
-							// Target With Ally
-							sm = SystemMessage.getSystemMessage(SystemMessageId.S1_S2_ALLIANCE);
-							sm.addString(clanName);
-							sm.addString(rs.getString("ally_name"));
-						}
-						else
-						{
-							// Target Without Ally
-							sm = SystemMessage.getSystemMessage(SystemMessageId.S1_NO_ALLI_EXISTS);
-							sm.addString(clanName);
-						}
-						activeChar.sendPacket(sm);
+						// Target Without Ally
+						sm = SystemMessage.getSystemMessage(SystemMessageId.S1_NO_ALLI_EXISTS);
+						sm.addString(clanName);
 					}
+					activeChar.sendPacket(sm);
 				}
 			}
 			activeChar.sendPacket(SystemMessageId.FRIEND_LIST_FOOTER);
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java b/L2J_DataPack/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java
index 0fe025821a..a36c237344 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java
@@ -25,7 +25,7 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import com.l2jserver.Config;
-import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.SevenSigns;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -210,30 +210,29 @@ public class Wedding implements IVoicedCommandHandler
 			return false;
 		}
 		
-		// check if target has player on friendlist
-		boolean FoundOnFriendList = false;
-		int objectId;
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		// Check if target has player on friend list
+		boolean foundOnFriendList = false;
+		try (Connection con = ConnectionFactory.getInstance().getConnection();
+			PreparedStatement statement = con.prepareStatement("SELECT friendId FROM character_friends WHERE charId=?"))
 		{
-			final PreparedStatement statement = con.prepareStatement("SELECT friendId FROM character_friends WHERE charId=?");
 			statement.setInt(1, ptarget.getObjectId());
-			final ResultSet rset = statement.executeQuery();
-			while (rset.next())
+			try (ResultSet rset = statement.executeQuery())
 			{
-				objectId = rset.getInt("friendId");
-				if (objectId == activeChar.getObjectId())
+				while (rset.next())
 				{
-					FoundOnFriendList = true;
+					if (rset.getInt("friendId") == activeChar.getObjectId())
+					{
+						foundOnFriendList = true;
+					}
 				}
 			}
-			statement.close();
 		}
 		catch (Exception e)
 		{
 			_log.warning("could not read friend data:" + e);
 		}
 		
-		if (!FoundOnFriendList)
+		if (!foundOnFriendList)
 		{
 			activeChar.sendMessage("The player you want to ask is not on your friends list, you must first be on each others friends list before you choose to engage.");
 			return false;
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/503_PursuitClanAmbition/__init__.py b/L2J_DataPack/dist/game/data/scripts/quests/503_PursuitClanAmbition/__init__.py
index 655700002e..189452f46c 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/503_PursuitClanAmbition/__init__.py
+++ b/L2J_DataPack/dist/game/data/scripts/quests/503_PursuitClanAmbition/__init__.py
@@ -8,7 +8,7 @@ from com.l2jserver.gameserver.network.serverpackets import NpcSay
 from com.l2jserver.gameserver.model.quest import State
 from com.l2jserver.gameserver.model.quest import QuestState
 from com.l2jserver.gameserver.model.quest import Quest as JQuest
-from com.l2jserver import L2DatabaseFactory
+from com.l2jserver.commons.database.pool.impl import ConnectionFactory
 
 qn = "503_PursuitClanAmbition"
 qd = "Pursuit Clan Ambition"
@@ -58,7 +58,7 @@ DROPLIST = {
 
 def suscribe_members(st) :
   clan=st.getPlayer().getClanId()
-  con=L2DatabaseFactory.getInstance().getConnection()
+  con=ConnectionFactory.getInstance().getConnection()
   offline=con.prepareStatement("SELECT charId FROM characters WHERE clanid=? AND online=0")
   offline.setInt(1, clan)
   rs=offline.executeQuery()
@@ -82,7 +82,7 @@ def suscribe_members(st) :
 
 def offlineMemberExit(st) :
   clan=st.getPlayer().getClanId()
-  con=L2DatabaseFactory.getInstance().getConnection()
+  con=ConnectionFactory.getInstance().getConnection()
   offline=con.prepareStatement("DELETE FROM character_quests WHERE name = ? and charId IN (SELECT charId FROM characters WHERE clanId =? AND online=0")
   offline.setString(1, qn)
   offline.setInt(2, clan)
@@ -106,7 +106,7 @@ def getLeaderVar(st, var) :
   except :
     pass
   leaderId=st.getPlayer().getClan().getLeaderId()
-  con=L2DatabaseFactory.getInstance().getConnection()
+  con=ConnectionFactory.getInstance().getConnection()
   offline=con.prepareStatement("SELECT value FROM character_quests WHERE charId=? AND var=? AND name=?")
   offline.setInt(1, leaderId)
   offline.setString(2, var)
@@ -136,7 +136,7 @@ def setLeaderVar(st, var, value) :
     leader.getQuestState(qn).set(var,value)
   else :
     leaderId=st.getPlayer().getClan().getLeaderId()
-    con=L2DatabaseFactory.getInstance().getConnection()
+    con=ConnectionFactory.getInstance().getConnection()
     offline=con.prepareStatement("UPDATE character_quests SET value=? WHERE charId=? AND var=? AND name=?")
     offline.setString(1, value)
     offline.setInt(2, leaderId)
-- 
GitLab