1.4.0
Added Server Player Commands section.
This commit is contained in:
1 parent
25a83e7dc5
commit
293be5887a
128 files changed
+2182
-408
No files matched your search
@@ -0,0 +1,365 @@
|
||||
package com.rsscripting.rswarehouse.dao;
|
||||
|
||||
import com.rsscripting.rswarehouse.RSWarehouse;
|
||||
import com.rsscripting.rswarehouse.database.DatabaseManager;
|
||||
import com.rsscripting.rswarehouse.model.WarehouseItem;
|
||||
import com.rsscripting.rswarehouse.utils.ItemStackUtils;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class ItemDAO {
|
||||
|
||||
public static void addItem(
|
||||
String discovererUuid,
|
||||
String discovererName,
|
||||
ItemStack item,
|
||||
long quantity,
|
||||
Integer inventoryId
|
||||
) {
|
||||
|
||||
item = ItemStackUtils.normalizeSpecialItems(item);
|
||||
|
||||
String serializedItem =
|
||||
ItemStackUtils.serialize(
|
||||
item
|
||||
);
|
||||
|
||||
if (serializedItem == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean enableUncategorized =
|
||||
RSWarehouse.getInstance()
|
||||
.getConfig()
|
||||
.getBoolean(
|
||||
"allow-uncategorized-item-creation",
|
||||
true
|
||||
);
|
||||
|
||||
if (
|
||||
inventoryId == null
|
||||
&& !enableUncategorized
|
||||
) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (inventoryId != null) {
|
||||
|
||||
long previousQuantity =
|
||||
InventoryQuantityDAO.getInventoryQuantity(
|
||||
inventoryId
|
||||
);
|
||||
|
||||
InventoryQuantityDAO.updateInventoryQuantity(
|
||||
inventoryId,
|
||||
quantity
|
||||
);
|
||||
|
||||
if (previousQuantity == 0) {
|
||||
|
||||
DiscoveryDAO.assignDiscovererIfNull(
|
||||
inventoryId,
|
||||
discovererUuid,
|
||||
discovererName
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
inventoryId =
|
||||
InventoryCreationDAO.createInventoryItem(
|
||||
item,
|
||||
quantity,
|
||||
discovererUuid,
|
||||
discovererName
|
||||
);
|
||||
|
||||
if (inventoryId == -1) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
WarehouseReferenceDAO.createWarehouseItemReference(
|
||||
item,
|
||||
inventoryId
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public static WarehouseItem getItemById(
|
||||
int itemId
|
||||
) {
|
||||
|
||||
try (
|
||||
|
||||
Connection connection =
|
||||
DatabaseManager.getConnection()
|
||||
|
||||
) {
|
||||
|
||||
PreparedStatement statement =
|
||||
connection.prepareStatement(
|
||||
"""
|
||||
SELECT
|
||||
wi.*,
|
||||
inv.quantity,
|
||||
inv.discoverer_uuid,
|
||||
inv.discoverer_name,
|
||||
inv.discovered_date
|
||||
FROM warehouse_items wi
|
||||
LEFT JOIN warehouse_inventory inv
|
||||
ON wi.inventory_id = inv.id
|
||||
WHERE wi.id = ?
|
||||
"""
|
||||
);
|
||||
|
||||
statement.setInt(
|
||||
1,
|
||||
itemId
|
||||
);
|
||||
|
||||
ResultSet resultSet =
|
||||
statement.executeQuery();
|
||||
|
||||
if (resultSet.next()) {
|
||||
|
||||
return new WarehouseItem(
|
||||
|
||||
resultSet.getInt("id"),
|
||||
|
||||
resultSet.getInt("category_id"),
|
||||
resultSet.getString("serialized_item"),
|
||||
|
||||
resultSet.getString("default_lore"),
|
||||
|
||||
resultSet.getObject("inventory_id") == null
|
||||
? null
|
||||
: resultSet.getInt("inventory_id"),
|
||||
|
||||
resultSet.getObject("subcategory_id") == null
|
||||
? null
|
||||
: resultSet.getInt("subcategory_id"),
|
||||
|
||||
resultSet.getLong("quantity"),
|
||||
|
||||
resultSet.getString("discoverer_uuid"),
|
||||
|
||||
resultSet.getString("discoverer_name"),
|
||||
|
||||
resultSet.getString("discovered_date"),
|
||||
|
||||
resultSet.getObject("page") == null
|
||||
? null
|
||||
: resultSet.getInt("page"),
|
||||
|
||||
resultSet.getObject("slot") == null
|
||||
? null
|
||||
: resultSet.getInt("slot")
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
public static List<WarehouseItem> getItemsForCategory(
|
||||
int categoryId
|
||||
) {
|
||||
|
||||
List<WarehouseItem> items =
|
||||
new ArrayList<>();
|
||||
|
||||
try (
|
||||
|
||||
Connection connection =
|
||||
DatabaseManager.getConnection()
|
||||
|
||||
) {
|
||||
|
||||
PreparedStatement statement =
|
||||
connection.prepareStatement(
|
||||
"""
|
||||
|
||||
SELECT
|
||||
wi.*,
|
||||
inv.quantity,
|
||||
inv.discoverer_uuid,
|
||||
inv.discoverer_name,
|
||||
inv.discovered_date
|
||||
FROM warehouse_items wi
|
||||
LEFT JOIN warehouse_inventory inv
|
||||
ON wi.inventory_id = inv.id
|
||||
WHERE wi.category_id = ?
|
||||
ORDER BY wi.id
|
||||
"""
|
||||
);
|
||||
|
||||
statement.setInt(
|
||||
1,
|
||||
categoryId
|
||||
);
|
||||
|
||||
ResultSet resultSet =
|
||||
statement.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
|
||||
items.add(
|
||||
new WarehouseItem(
|
||||
|
||||
resultSet.getInt("id"),
|
||||
|
||||
resultSet.getInt("category_id"),
|
||||
|
||||
resultSet.getString("serialized_item"),
|
||||
|
||||
resultSet.getString("default_lore"),
|
||||
|
||||
resultSet.getObject("inventory_id") == null
|
||||
? null
|
||||
: resultSet.getInt("inventory_id"),
|
||||
|
||||
resultSet.getObject("subcategory_id") == null
|
||||
? null
|
||||
: resultSet.getInt("subcategory_id"),
|
||||
|
||||
resultSet.getLong("quantity"),
|
||||
|
||||
resultSet.getString("discoverer_uuid"),
|
||||
|
||||
resultSet.getString("discoverer_name"),
|
||||
|
||||
resultSet.getString("discovered_date"),
|
||||
|
||||
resultSet.getObject("page") == null
|
||||
? null
|
||||
: resultSet.getInt("page"),
|
||||
|
||||
resultSet.getObject("slot") == null
|
||||
? null
|
||||
: resultSet.getInt("slot")
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
return items;
|
||||
|
||||
}
|
||||
|
||||
public static void removeItem(
|
||||
ItemStack item,
|
||||
long quantity
|
||||
) {
|
||||
|
||||
Integer inventoryId =
|
||||
InventoryLookupDAO.findInventoryId(
|
||||
item
|
||||
);
|
||||
|
||||
if (inventoryId == null) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
InventoryQuantityDAO.removeInventoryQuantity(
|
||||
inventoryId,
|
||||
quantity
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public static void addItem(
|
||||
String discovererUuid,
|
||||
String discovererName,
|
||||
ItemStack item,
|
||||
long quantity
|
||||
) {
|
||||
|
||||
addItem(
|
||||
discovererUuid,
|
||||
discovererName,
|
||||
item,
|
||||
quantity,
|
||||
InventoryLookupDAO.findInventoryId(
|
||||
item
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public static boolean categoryHasItems(
|
||||
int categoryId
|
||||
) {
|
||||
|
||||
try (
|
||||
|
||||
Connection connection =
|
||||
DatabaseManager.getConnection();
|
||||
|
||||
PreparedStatement statement =
|
||||
connection.prepareStatement(
|
||||
"""
|
||||
SELECT COUNT(*)
|
||||
FROM warehouse_items
|
||||
WHERE category_id = ?
|
||||
"""
|
||||
)
|
||||
|
||||
) {
|
||||
|
||||
statement.setInt(
|
||||
1,
|
||||
categoryId
|
||||
);
|
||||
|
||||
ResultSet resultSet =
|
||||
statement.executeQuery();
|
||||
|
||||
if (resultSet.next()) {
|
||||
|
||||
return resultSet.getInt(
|
||||
1
|
||||
) > 0;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
catch (Exception exception) {
|
||||
|
||||
exception.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user