Browse Source

Refactor to remove abstraction.

master
MagicBot 2 years ago
parent
commit
6be3ca41f8
  1. 386
      src/engine/db/handlers/dbItemHandler.java

386
src/engine/db/handlers/dbItemHandler.java

@ -89,18 +89,19 @@ public class dbItemHandler extends dbHandlerBase { @@ -89,18 +89,19 @@ public class dbItemHandler extends dbHandlerBase {
public String GET_OWNER(int ownerID) {
String ownerType = "";
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 "";
}
return ownerType;
@ -112,6 +113,7 @@ public class dbItemHandler extends dbHandlerBase { @@ -112,6 +113,7 @@ public class dbItemHandler extends dbHandlerBase {
AbstractCharacter ac1 = man1.getOwner();
AbstractCharacter ac2 = man2.getOwner();
boolean worked = false;
if (ac1 == null || ac2 == null || inventoryGold1 == null || inventoryGold2 == null)
return false;
@ -130,12 +132,14 @@ public class dbItemHandler extends dbHandlerBase { @@ -130,12 +132,14 @@ public class dbItemHandler extends dbHandlerBase {
ResultSet rs = preparedStatement.executeQuery();
return rs.getBoolean("result");
if (rs.next())
worked = rs.getBoolean("result");
} catch (SQLException e) {
Logger.error(e);
return false;
}
return worked;
}
private static String formatTradeString(HashSet<Integer> list) {
@ -159,139 +163,254 @@ public class dbItemHandler extends dbHandlerBase { @@ -159,139 +163,254 @@ public class dbItemHandler extends dbHandlerBase {
}
public ArrayList<Item> GET_EQUIPPED_ITEMS(final int targetId) {
prepareCallable("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=? && `obj_item`.`item_container`='equip';");
setLong(1, (long) targetId);
return getObjectList();
ArrayList<Item> itemList;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=? && `obj_item`.`item_container`='equip';")) {
preparedStatement.setLong(1, (long) targetId);
ResultSet rs = preparedStatement.executeQuery();
itemList = getObjectsFromRs(rs, 50);
} catch (SQLException e) {
Logger.error(e);
return null;
}
return itemList;
}
public Item GET_ITEM(final int id) {
public Item GET_ITEM(final int itemUUID) {
Item item;
prepareCallable("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`UID`=?;");
setLong(1, (long) id);
return (Item) getObjectSingle(id);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`UID`=?;")) {
preparedStatement.setLong(1, itemUUID);
ResultSet rs = preparedStatement.executeQuery();
item = (Item) getObjectFromRs(rs);
} catch (SQLException e) {
Logger.error(e);
return null;
}
return item;
}
public ArrayList<Item> GET_ITEMS_FOR_ACCOUNT(final int accountId) {
prepareCallable("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=?;");
setLong(1, (long) accountId);
return getObjectList();
ArrayList<Item> itemList;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=?;")) {
preparedStatement.setLong(1, (long) accountId);
ResultSet rs = preparedStatement.executeQuery();
itemList = getObjectsFromRs(rs, 100);
} catch (SQLException e) {
Logger.error(e);
return null;
}
return itemList;
}
public ArrayList<Item> GET_ITEMS_FOR_NPC(final int npcId) {
prepareCallable("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=?");
setLong(1, (long) npcId);
return getObjectList();
ArrayList<Item> itemList;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=?;")) {
preparedStatement.setLong(1, npcId);
ResultSet rs = preparedStatement.executeQuery();
itemList = getObjectsFromRs(rs, 20);
} catch (SQLException e) {
Logger.error(e);
return null;
}
return itemList;
}
public ArrayList<Item> GET_ITEMS_FOR_PC(final int id) {
prepareCallable("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=?");
setLong(1, (long) id);
return getLargeObjectList();
ArrayList<Item> itemList;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=?")) {
preparedStatement.setLong(1, (long) id);
ResultSet rs = preparedStatement.executeQuery();
itemList = getObjectsFromRs(rs, 100);
} catch (SQLException e) {
Logger.error(e);
return null;
}
return itemList;
}
public boolean MOVE_GOLD(final Item from, final Item to, final int amt) {
int newFromAmt = from.getNumOfItems() - amt;
int newToAmt = to.getNumOfItems() + amt;
prepareCallable("UPDATE `obj_item` SET `item_numberOfItems` = CASE WHEN `UID`=? THEN ? WHEN `UID`=? THEN ? END WHERE `UID` IN (?, ?);");
setLong(1, (long) from.getObjectUUID());
setInt(2, newFromAmt);
setLong(3, (long) to.getObjectUUID());
setInt(4, newToAmt);
setLong(5, (long) from.getObjectUUID());
setLong(6, (long) to.getObjectUUID());
return (executeUpdate() != 0);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems` = CASE WHEN `UID`=? THEN ? WHEN `UID`=? THEN ? END WHERE `UID` IN (?, ?);")) {
int newFromAmt = from.getNumOfItems() - amt;
int newToAmt = to.getNumOfItems() + amt;
preparedStatement.setLong(1, (long) from.getObjectUUID());
preparedStatement.setInt(2, newFromAmt);
preparedStatement.setLong(3, (long) to.getObjectUUID());
preparedStatement.setInt(4, newToAmt);
preparedStatement.setLong(5, (long) from.getObjectUUID());
preparedStatement.setLong(6, (long) to.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean ORPHAN_INVENTORY(final HashSet<Item> inventory) {
boolean worked = true;
for (Item item : inventory) {
if (item.getItemBase().getType().equals(ItemType.GOLD))
continue;
prepareCallable("UPDATE `obj_item` LEFT JOIN `object` ON `object`.`UID` = `obj_item`.`UID` SET `object`.`parent`=NULL, `obj_item`.`item_container`='none' WHERE `object`.`UID`=?;");
setLong(1, (long) item.getObjectUUID());
if (executeUpdate() == 0)
worked = false;
else
item.zeroItem();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` LEFT JOIN `object` ON `object`.`UID` = `obj_item`.`UID` SET `object`.`parent`=NULL, `obj_item`.`item_container`='none' WHERE `object`.`UID`=?;")) {
preparedStatement.setLong(1, (long) item.getObjectUUID());
worked = (preparedStatement.executeUpdate() > 0);
if (worked)
item.zeroItem();
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
return worked;
}
public HashSet<Integer> GET_ITEMS_FOR_VENDOR(final int vendorID) {
prepareCallable("SELECT ID FROM static_itembase WHERE vendorType = ?");
setInt(1, vendorID);
return getIntegerList(1);
}
public String SET_PROPERTY(final Item i, String name, Object new_value) {
prepareCallable("CALL item_SETPROP(?,?,?)");
setLong(1, (long) i.getObjectUUID());
setString(2, name);
setString(3, String.valueOf(new_value));
return getResult();
}
HashSet<Integer> itemSet = new HashSet<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT ID FROM static_itembase WHERE vendorType = ?")) {
preparedStatement.setInt(1, vendorID);
ResultSet rs = preparedStatement.executeQuery();
public String SET_PROPERTY(final Item i, String name, Object new_value, Object old_value) {
prepareCallable("CALL item_GETSETPROP(?,?,?,?)");
setLong(1, (long) i.getObjectUUID());
setString(2, name);
setString(3, String.valueOf(new_value));
setString(4, String.valueOf(old_value));
return getResult();
while (rs.next())
itemSet.add(rs.getInt(1));
} catch (SQLException e) {
Logger.error(e);
return itemSet;
}
return itemSet;
}
//Used to transfer a single item between owners or equip or vault or bank or inventory
public boolean UPDATE_OWNER(final Item item, int newOwnerID, boolean ownerNPC, boolean ownerPlayer,
boolean ownerAccount, ItemContainerType containerType, int slot) {
prepareCallable("CALL `item_TRANSFER_OWNER`(?, ?, ?, ? )");
setLong(1, (long) item.getObjectUUID());
if (newOwnerID != 0)
setLong(2, (long) newOwnerID);
else
setNULL(2, java.sql.Types.BIGINT);
switch (containerType) {
case INVENTORY:
setString(3, "inventory");
break;
case EQUIPPED:
setString(3, "equip");
break;
case BANK:
setString(3, "bank");
break;
case VAULT:
setString(3, "vault");
break;
case FORGE:
setString(3, "forge");
break;
default:
setString(3, "none"); //Shouldn't be here
break;
boolean worked = false;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_TRANSFER_OWNER`(?, ?, ?, ? )")) {
preparedStatement.setLong(1, item.getObjectUUID());
if (newOwnerID != 0)
preparedStatement.setLong(2, newOwnerID);
else
preparedStatement.setNull(2, java.sql.Types.BIGINT);
switch (containerType) {
case INVENTORY:
preparedStatement.setString(3, "inventory");
break;
case EQUIPPED:
preparedStatement.setString(3, "equip");
break;
case BANK:
preparedStatement.setString(3, "bank");
break;
case VAULT:
preparedStatement.setString(3, "vault");
break;
case FORGE:
preparedStatement.setString(3, "forge");
break;
default:
preparedStatement.setString(3, "none"); //Shouldn't be here
break;
}
preparedStatement.setInt(4, slot);
ResultSet rs = preparedStatement.executeQuery();
if (rs.next())
worked = rs.getBoolean("result");
} catch (SQLException e) {
Logger.error(e);
return false;
}
setInt(4, slot);
return worked();
return worked;
}
public boolean SET_DURABILITY(final Item item, int value) {
prepareCallable("UPDATE `obj_item` SET `item_durabilityCurrent`=? WHERE `UID`=? AND `item_durabilityCurrent`=?");
setInt(1, value);
setLong(2, (long) item.getObjectUUID());
setInt(3, (int) item.getDurabilityCurrent());
return (executeUpdate() != 0);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_durabilityCurrent`=? WHERE `UID`=? AND `item_durabilityCurrent`=?")) {
preparedStatement.setInt(1, value);
preparedStatement.setLong(2, (long) item.getObjectUUID());
preparedStatement.setInt(3, (int) item.getDurabilityCurrent());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean UPDATE_FORGE_TO_INVENTORY(final Item item) {
prepareCallable("UPDATE `obj_item` SET `item_container` = ? WHERE `UID` = ? AND `item_container` = 'forge';");
setString(1, "inventory");
setLong(2, (long) item.getObjectUUID());
return (executeUpdate() != 0);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_container` = ? WHERE `UID` = ? AND `item_container` = 'forge';")) {
preparedStatement.setString(1, "inventory");
preparedStatement.setLong(2, (long) item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
/**
@ -313,43 +432,88 @@ public class dbItemHandler extends dbHandlerBase { @@ -313,43 +432,88 @@ public class dbItemHandler extends dbHandlerBase {
*/
public boolean UPDATE_GOLD(final Item item, int newValue, int oldValue) {
if (item.getItemBase().getType().equals(ItemType.GOLD) == false)
if (!item.getItemBase().getType().equals(ItemType.GOLD))
return false;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems`=? WHERE `UID`=?")) {
preparedStatement.setInt(1, newValue);
preparedStatement.setLong(2, (long) item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
prepareCallable("UPDATE `obj_item` SET `item_numberOfItems`=? WHERE `UID`=?");
setInt(1, newValue);
setLong(2, (long) item.getObjectUUID());
return (executeUpdate() != 0);
}
public boolean UPDATE_REMAINING_CHARGES(final Item item) {
prepareCallable("UPDATE `obj_item` SET `item_chargesRemaining` = ? WHERE `UID` = ?");
setInt(1, item.getChargesRemaining());
setLong(2, (long) item.getObjectUUID());
return (executeUpdate() != 0);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_chargesRemaining` = ? WHERE `UID` = ?")) {
preparedStatement.setInt(1, item.getChargesRemaining());
preparedStatement.setLong(2, (long) item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
// This is necessary because default number of items is 1.
// When we create gold, we want it to start at 0 quantity.
public boolean ZERO_ITEM_STACK(Item item) {
prepareCallable("UPDATE `obj_item` SET `item_numberOfItems`=0 WHERE `UID` = ?");
setLong(1, (long) item.getObjectUUID());
return (executeUpdate() != 0);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems`=0 WHERE `UID` = ?")) {
preparedStatement.setLong(1, (long) item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean UPDATE_FLAGS(Item item) {
prepareCallable("UPDATE `obj_item` SET `item_flags`=? WHERE `UID` = ?");
setInt(1, item.getFlags());
setLong(2, (long) item.getObjectUUID());
return (executeUpdate() != 0);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_flags`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, item.getFlags());
preparedStatement.setLong(2, (long) item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean UPDATE_VALUE(Item item,int value) {
prepareCallable("UPDATE `obj_item` SET `item_value`=? WHERE `UID` = ?");
setInt(1, value);
setLong(2, (long) item.getObjectUUID());
return (executeUpdate() != 0);
}
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_value`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, value);
preparedStatement.setLong(2, (long) item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
}

Loading…
Cancel
Save