Back filling item flags

This commit is contained in:
2024-03-22 13:51:09 -04:00
parent 99b9444ba8
commit 551361e10a
2 changed files with 53 additions and 0 deletions
+50
View File
@@ -26,6 +26,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashSet;
@@ -497,6 +498,34 @@ public class dbItemHandler extends dbHandlerBase {
}
}
public void UPDATE_ALL_FLAGS() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `obj_item`")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
int item_uuid = rs.getInt("UID");
int templateID = rs.getInt("item_itembaseID");
EnumSet<Enum.ItemFlags> item_flags = EnumSet.noneOf(Enum.ItemFlags.class);
item_flags.addAll(ItemTemplate.templates.get(templateID).item_flags);
int identified = rs.getInt("old_flags");
if (identified != 0)
item_flags.add(Enum.ItemFlags.Identified);
UPDATE_FLAGS(item_uuid, item_flags);
}
} catch (SQLException e) {
Logger.error(e);
}
}
public boolean UPDATE_FLAGS(Item item) {
try (Connection connection = DbManager.getConnection();
@@ -518,6 +547,27 @@ public class dbItemHandler extends dbHandlerBase {
}
}
public boolean UPDATE_FLAGS(int itemUUID, EnumSet<Enum.ItemFlags> itemFlags) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_flags`=? WHERE `UID` = ?")) {
String flagString = "";
for (Enum.ItemFlags itemflag : itemFlags)
flagString += itemflag.toString() + ";";
preparedStatement.setString(1, flagString);
preparedStatement.setLong(2, itemUUID);
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean UPDATE_VALUE(Item item, int value) {
try (Connection connection = DbManager.getConnection();
+3
View File
@@ -343,6 +343,9 @@ public class WorldServer {
Logger.info("Loading Item Templates");
DbManager.ItemQueries.LOAD_ITEM_TEMPLATES();
Logger.info("Back filling item flags");
DbManager.ItemQueries.UPDATE_ALL_FLAGS();
Logger.info("Loading ItemBases");
ItemBase.loadAllItemBases();