|  |  |  | @ -11,10 +11,16 @@ package engine.db.handlers;@@ -11,10 +11,16 @@ package engine.db.handlers; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import engine.Enum.ItemContainerType; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.Enum.ItemType; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.gameManager.DbManager; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.objects.AbstractCharacter; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.objects.CharacterItemManager; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.objects.Item; | 
			
		
	
		
			
				
					|  |  |  |  | import org.pmw.tinylog.Logger; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import java.sql.Connection; | 
			
		
	
		
			
				
					|  |  |  |  | import java.sql.PreparedStatement; | 
			
		
	
		
			
				
					|  |  |  |  | import java.sql.ResultSet; | 
			
		
	
		
			
				
					|  |  |  |  | import java.sql.SQLException; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.ArrayList; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.HashSet; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -27,52 +33,77 @@ public class dbItemHandler extends dbHandlerBase {@@ -27,52 +33,77 @@ public class dbItemHandler extends dbHandlerBase { | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	public Item ADD_ITEM(Item toAdd) { | 
			
		
	
		
			
				
					|  |  |  |  | 		prepareCallable("CALL `item_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?,?);"); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(1, toAdd.getOwnerID()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(2, toAdd.getItemBaseID()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(3, toAdd.getChargesRemaining()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(4, toAdd.getDurabilityCurrent()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(5, toAdd.getDurabilityMax()); | 
			
		
	
		
			
				
					|  |  |  |  | 		if (toAdd.getNumOfItems() < 1) | 
			
		
	
		
			
				
					|  |  |  |  | 			setInt(6, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 		else | 
			
		
	
		
			
				
					|  |  |  |  | 			setInt(6, toAdd.getNumOfItems()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		switch (toAdd.containerType) { | 
			
		
	
		
			
				
					|  |  |  |  | 			case INVENTORY: | 
			
		
	
		
			
				
					|  |  |  |  | 				setString(7, "inventory"); | 
			
		
	
		
			
				
					|  |  |  |  | 				break; | 
			
		
	
		
			
				
					|  |  |  |  | 			case EQUIPPED: | 
			
		
	
		
			
				
					|  |  |  |  | 				setString(7, "equip"); | 
			
		
	
		
			
				
					|  |  |  |  | 				break; | 
			
		
	
		
			
				
					|  |  |  |  | 			case BANK: | 
			
		
	
		
			
				
					|  |  |  |  | 				setString(7, "bank"); | 
			
		
	
		
			
				
					|  |  |  |  | 				break; | 
			
		
	
		
			
				
					|  |  |  |  | 			case VAULT: | 
			
		
	
		
			
				
					|  |  |  |  | 				setString(7, "vault"); | 
			
		
	
		
			
				
					|  |  |  |  | 				break; | 
			
		
	
		
			
				
					|  |  |  |  | 			case FORGE: | 
			
		
	
		
			
				
					|  |  |  |  | 				setString(7, "forge"); | 
			
		
	
		
			
				
					|  |  |  |  | 				break; | 
			
		
	
		
			
				
					|  |  |  |  | 		try (Connection connection = DbManager.getConnection(); | 
			
		
	
		
			
				
					|  |  |  |  | 			 PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?,?);")) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(1, toAdd.getOwnerID()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(2, toAdd.getItemBaseID()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(3, toAdd.getChargesRemaining()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(4, toAdd.getDurabilityCurrent()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(5, toAdd.getDurabilityMax()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			if (toAdd.getNumOfItems() < 1) | 
			
		
	
		
			
				
					|  |  |  |  | 				preparedStatement.setInt(6, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 			else | 
			
		
	
		
			
				
					|  |  |  |  | 				preparedStatement.setInt(6, toAdd.getNumOfItems()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			switch (toAdd.containerType) { | 
			
		
	
		
			
				
					|  |  |  |  | 				case INVENTORY: | 
			
		
	
		
			
				
					|  |  |  |  | 					preparedStatement.setString(7, "inventory"); | 
			
		
	
		
			
				
					|  |  |  |  | 					break; | 
			
		
	
		
			
				
					|  |  |  |  | 				case EQUIPPED: | 
			
		
	
		
			
				
					|  |  |  |  | 					preparedStatement.setString(7, "equip"); | 
			
		
	
		
			
				
					|  |  |  |  | 					break; | 
			
		
	
		
			
				
					|  |  |  |  | 				case BANK: | 
			
		
	
		
			
				
					|  |  |  |  | 					preparedStatement.setString(7, "bank"); | 
			
		
	
		
			
				
					|  |  |  |  | 					break; | 
			
		
	
		
			
				
					|  |  |  |  | 				case VAULT: | 
			
		
	
		
			
				
					|  |  |  |  | 					preparedStatement.setString(7, "vault"); | 
			
		
	
		
			
				
					|  |  |  |  | 					break; | 
			
		
	
		
			
				
					|  |  |  |  | 				case FORGE: | 
			
		
	
		
			
				
					|  |  |  |  | 					preparedStatement.setString(7, "forge"); | 
			
		
	
		
			
				
					|  |  |  |  | 					break; | 
			
		
	
		
			
				
					|  |  |  |  | 				default: | 
			
		
	
		
			
				
					|  |  |  |  | 					setString(7, "none"); //Shouldn't be here
 | 
			
		
	
		
			
				
					|  |  |  |  | 					preparedStatement.setString(7, "none"); //Shouldn't be here
 | 
			
		
	
		
			
				
					|  |  |  |  | 					break; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setByte(8, toAdd.getEquipSlot()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(9, toAdd.getFlags()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setString(10, toAdd.getCustomName()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		setByte(8, toAdd.getEquipSlot()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(9, toAdd.getFlags()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setString(10, toAdd.getCustomName()); | 
			
		
	
		
			
				
					|  |  |  |  | 		int objectUUID = (int) getUUID(); | 
			
		
	
		
			
				
					|  |  |  |  | 			ResultSet rs = preparedStatement.executeQuery(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			int objectUUID = (int) rs.getLong("UID"); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			if (objectUUID > 0) | 
			
		
	
		
			
				
					|  |  |  |  | 				return GET_ITEM(objectUUID); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		} catch (SQLException e) { | 
			
		
	
		
			
				
					|  |  |  |  | 			Logger.error(e); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (objectUUID > 0) | 
			
		
	
		
			
				
					|  |  |  |  | 			return GET_ITEM(objectUUID); | 
			
		
	
		
			
				
					|  |  |  |  | 		return null; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	public String GET_OWNER(int ownerID) { | 
			
		
	
		
			
				
					|  |  |  |  | 		prepareCallable("SELECT `type` FROM `object` WHERE `UID`=?"); | 
			
		
	
		
			
				
					|  |  |  |  | 		setLong(1, (long) ownerID); | 
			
		
	
		
			
				
					|  |  |  |  | 		return getString("type"); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		String ownerType = ""; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		try (Connection connection = DbManager.getConnection(); | 
			
		
	
		
			
				
					|  |  |  |  | 			 PreparedStatement preparedStatement = connection.prepareStatement("SELECT `type` FROM `object` WHERE `UID`=?")) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(1, ownerID); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			ResultSet rs = preparedStatement.executeQuery(); | 
			
		
	
		
			
				
					|  |  |  |  | 			ownerType = rs.getString("type"); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		} catch (SQLException e) { | 
			
		
	
		
			
				
					|  |  |  |  | 			Logger.error(e); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return ownerType; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	public boolean DO_TRADE(HashSet<Integer> from1, HashSet<Integer> from2, | 
			
		
	
	
		
			
				
					|  |  |  | @ -81,35 +112,48 @@ public class dbItemHandler extends dbHandlerBase {@@ -81,35 +112,48 @@ public class dbItemHandler extends dbHandlerBase { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		AbstractCharacter ac1 = man1.getOwner(); | 
			
		
	
		
			
				
					|  |  |  |  | 		AbstractCharacter ac2 = man2.getOwner(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (ac1 == null || ac2 == null || inventoryGold1 == null || inventoryGold2 == null) | 
			
		
	
		
			
				
					|  |  |  |  | 			return false; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		prepareCallable("CALL `item_TRADE`(?, ?, ?, ?, ?, ?, ?, ?)"); | 
			
		
	
		
			
				
					|  |  |  |  | 		setString(1, formatTradeString(from1)); | 
			
		
	
		
			
				
					|  |  |  |  | 		setLong(2, (long) ac1.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setString(3, formatTradeString(from2)); | 
			
		
	
		
			
				
					|  |  |  |  | 		setLong(4, (long) ac2.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(5, goldFrom1); | 
			
		
	
		
			
				
					|  |  |  |  | 		setLong(6, (long) inventoryGold1.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 		setInt(7, goldFrom2); | 
			
		
	
		
			
				
					|  |  |  |  | 		setLong(8, (long) inventoryGold2.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  |         return worked(); | 
			
		
	
		
			
				
					|  |  |  |  | 		try (Connection connection = DbManager.getConnection(); | 
			
		
	
		
			
				
					|  |  |  |  | 			 PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_TRADE`(?, ?, ?, ?, ?, ?, ?, ?)")) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setString(1, formatTradeString(from1)); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setLong(2, (long) ac1.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setString(3, formatTradeString(from2)); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setLong(4, (long) ac2.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(5, goldFrom1); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setLong(6, (long) inventoryGold1.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setInt(7, goldFrom2); | 
			
		
	
		
			
				
					|  |  |  |  | 			preparedStatement.setLong(8, (long) inventoryGold2.getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			ResultSet rs = preparedStatement.executeQuery(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			return rs.getBoolean("result"); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		} catch (SQLException e) { | 
			
		
	
		
			
				
					|  |  |  |  | 			Logger.error(e); | 
			
		
	
		
			
				
					|  |  |  |  | 			return false; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	private static String formatTradeString(HashSet<Integer> list) { | 
			
		
	
		
			
				
					|  |  |  |  | 		int size = list.size(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		String ret = ""; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (size == 0) | 
			
		
	
		
			
				
					|  |  |  |  | 			return ret; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		boolean start = true; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		for (int i : list) { | 
			
		
	
		
			
				
					|  |  |  |  | 			if (start){ | 
			
		
	
		
			
				
					|  |  |  |  | 			if (start) { | 
			
		
	
		
			
				
					|  |  |  |  | 				ret += i; | 
			
		
	
		
			
				
					|  |  |  |  | 				start = false; | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 			else | 
			
		
	
		
			
				
					|  |  |  |  | 			ret += "," + i; | 
			
		
	
		
			
				
					|  |  |  |  | 			} else | 
			
		
	
		
			
				
					|  |  |  |  | 				ret += "," + i; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		return ret; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | 
 |