AmountDeltaType 추가
getInvenItems 예외 처리 추가
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
package com.caliverse.admin.dynamodb.entity;
|
||||||
|
|
||||||
|
|
||||||
|
import com.caliverse.admin.domain.entity.common.ValueEnum;
|
||||||
|
|
||||||
|
public enum EAmountDeltaType implements ValueEnum {
|
||||||
|
None(0),
|
||||||
|
Acquire(1),
|
||||||
|
Consume(2),
|
||||||
|
Merge(3)
|
||||||
|
;
|
||||||
|
|
||||||
|
private final int value;
|
||||||
|
|
||||||
|
EAmountDeltaType(int value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -51,33 +52,107 @@ public class DynamodbItemService {
|
|||||||
List<UsersResponse.Item> etcList = new ArrayList<>();
|
List<UsersResponse.Item> etcList = new ArrayList<>();
|
||||||
|
|
||||||
Map<String, AttributeValue> pageKey = null;
|
Map<String, AttributeValue> pageKey = null;
|
||||||
|
final AtomicInteger processedItems = new AtomicInteger(0);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
PageResult<ItemDoc> itemList = itemRepository.getItemListWithPaging(guid, "", DynamoDBConstants.ATTRIB_ITEM, EFilterOperator.CONTAINS,"\"equiped_inven_type\":0", pageKey, false);
|
PageResult<ItemDoc> itemList = itemRepository.getItemListWithPaging(guid, "", DynamoDBConstants.ATTRIB_ITEM, EFilterOperator.CONTAINS,"\"equiped_inven_type\":0", pageKey, false);
|
||||||
|
|
||||||
itemList.getItems().forEach(item -> {
|
itemList.getItems().forEach(item -> {
|
||||||
ItemAttrib attrib = CommonUtils.stringByObject(item.getAttribValue(), ItemAttrib.class);
|
try {
|
||||||
int item_id = attrib.getItemMetaId();
|
processedItems.incrementAndGet();
|
||||||
String item_name = metaDataHandler.getTextStringData(metaDataHandler.getMetaItemNameData(item_id));
|
|
||||||
String item_type = metaDataHandler.getMetaItemLargeTypeData(item_id);
|
|
||||||
|
|
||||||
UsersResponse.Item inventory = UsersResponse.Item.builder()
|
// 2. ItemAttrib 파싱 예외 처리
|
||||||
|
ItemAttrib attrib = null;
|
||||||
|
try {
|
||||||
|
attrib = CommonUtils.stringByObject(item.getAttribValue(), ItemAttrib.class);
|
||||||
|
if (attrib == null) {
|
||||||
|
log.warn("Failed to parse ItemAttrib for pk: {}, sk: {}",
|
||||||
|
item.getPK(), item.getSK());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Exception while parsing ItemAttrib for pk: {}, sk: {}, error: {}",
|
||||||
|
item.getPK(), item.getSK(), e.getMessage(), e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 메타데이터 조회 예외 처리
|
||||||
|
int item_id = attrib.getItemMetaId();
|
||||||
|
String item_name = "";
|
||||||
|
String item_type = "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
item_name = metaDataHandler.getTextStringData(
|
||||||
|
metaDataHandler.getMetaItemNameData(item_id));
|
||||||
|
if (item_name == null) {
|
||||||
|
item_name = "Unknown Item"; // 기본값 설정
|
||||||
|
log.warn("Item name is null for itemId: {}, guid: {}", item_id, guid);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
item_name = "Unknown Item";
|
||||||
|
log.error("Failed to get item name for itemId: {}, guid: {}, error: {}",
|
||||||
|
item_id, guid, e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
item_type = metaDataHandler.getMetaItemLargeTypeData(item_id);
|
||||||
|
if (item_type == null) {
|
||||||
|
item_type = ""; // 기본값 설정
|
||||||
|
log.warn("Item type is null for itemId: {}, guid: {}", item_id, guid);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
item_type = "";
|
||||||
|
log.error("Failed to get item type for itemId: {}, guid: {}, error: {}",
|
||||||
|
item_id, guid, e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. UsersResponse.Item 생성 예외 처리
|
||||||
|
UsersResponse.Item inventory = null;
|
||||||
|
try {
|
||||||
|
inventory = UsersResponse.Item.builder()
|
||||||
.itemId(item_id)
|
.itemId(item_id)
|
||||||
.itemName(item_name)
|
.itemName(item_name)
|
||||||
.count(attrib.getItemStackCount())
|
.count(attrib.getItemStackCount())
|
||||||
.itemGuid(attrib.getItemGuid())
|
.itemGuid(attrib.getItemGuid())
|
||||||
.build();
|
.build();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed to build inventory item for itemId: {}, guid: {}, error: {}",
|
||||||
|
item_id, guid, e.getMessage(), e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. 아이템 분류 예외 처리
|
||||||
|
try {
|
||||||
if (item_type.isEmpty()) {
|
if (item_type.isEmpty()) {
|
||||||
etcList.add(inventory);
|
etcList.add(inventory);
|
||||||
} else {
|
} else {
|
||||||
switch (ITEMLARGETYPE.valueOf(item_type)){
|
try {
|
||||||
|
ITEMLARGETYPE itemLargeType = ITEMLARGETYPE.valueOf(item_type);
|
||||||
|
switch (itemLargeType) {
|
||||||
case CLOTH -> clothList.add(inventory);
|
case CLOTH -> clothList.add(inventory);
|
||||||
case PROP -> propList.add(inventory);
|
case PROP -> propList.add(inventory);
|
||||||
case BEAUTY -> beautyList.add(inventory);
|
case BEAUTY -> beautyList.add(inventory);
|
||||||
case TATTOO -> tattooList.add(inventory);
|
case TATTOO -> tattooList.add(inventory);
|
||||||
case CURRENCY -> currencyList.add(inventory);
|
case CURRENCY -> currencyList.add(inventory);
|
||||||
default -> etcList.add(inventory);
|
default -> etcList.add(inventory);
|
||||||
}}
|
}
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// ENUM 값이 존재하지 않는 경우
|
||||||
|
log.warn("Unknown item type: {} for itemId: {}, guid: {}, adding to etc list",
|
||||||
|
item_type, item_id, guid);
|
||||||
|
etcList.add(inventory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed to categorize item for itemId: {}, guid: {}, error: {}, adding to etc list",
|
||||||
|
item_id, guid, e.getMessage(), e);
|
||||||
|
etcList.add(inventory);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Unexpected error processing item for guid: {}, error: {}",
|
||||||
|
guid, e.getMessage(), e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
pageKey = itemList.getLastEvaluatedKey();
|
pageKey = itemList.getLastEvaluatedKey();
|
||||||
|
|||||||
Reference in New Issue
Block a user