json 로드 방식 list name 제거
게임모드 로드 게임 FFA 데이터 로드
This commit is contained in:
@@ -30,7 +30,7 @@ public class JsonFileReader {
|
||||
this.objectMapper = new ObjectMapper();
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> readJsonFile(String metaName, String listName) {
|
||||
public List<Map<String, Object>> readJsonFile(String metaName) {
|
||||
List<Map<String, Object>> resultMap = new ArrayList<>();
|
||||
|
||||
try {
|
||||
@@ -55,7 +55,7 @@ public class JsonFileReader {
|
||||
|
||||
for (File jsonFile : jsonFiles) {
|
||||
log.info("Processing JSON file: {}", jsonFile.getPath());
|
||||
List<Map<String, Object>> fileResult = parseJsonFile(jsonFile, listName);
|
||||
List<Map<String, Object>> fileResult = parseJsonFile(jsonFile);
|
||||
if (fileResult != null) {
|
||||
resultMap.addAll(fileResult);
|
||||
}
|
||||
@@ -72,7 +72,7 @@ public class JsonFileReader {
|
||||
return null;
|
||||
}
|
||||
|
||||
return parseJsonFile(metaFile, listName);
|
||||
return parseJsonFile(metaFile);
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
@@ -83,26 +83,30 @@ public class JsonFileReader {
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> parseJsonFile(File file, String listName) {
|
||||
private List<Map<String, Object>> parseJsonFile(File file) {
|
||||
try {
|
||||
log.debug("Parsing JSON file: {}", file.getPath());
|
||||
String fileContent = readFileAsString(file);
|
||||
JsonNode rootNode = objectMapper.readTree(fileContent);
|
||||
JsonNode listNode = rootNode.get(listName);
|
||||
// JsonNode listNode = rootNode.get(listName);
|
||||
|
||||
if (listNode == null) {
|
||||
log.warn("List name '{}' not found in file: {}", listName, file.getPath());
|
||||
if (!rootNode.isEmpty()) {
|
||||
String firstFieldName = rootNode.fieldNames().next();
|
||||
JsonNode firstNode = rootNode.get(firstFieldName);
|
||||
|
||||
List<Map<String, Object>> resultList = objectMapper.readValue(
|
||||
firstNode.toString(),
|
||||
new TypeReference<>() {}
|
||||
);
|
||||
|
||||
log.debug("Successfully parsed JSON file: {}, first field: {}, items count: {}",
|
||||
file.getName(), firstFieldName, resultList.size());
|
||||
return resultList;
|
||||
} else {
|
||||
log.warn("No fields found in JSON file: {}", file.getPath());
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Map<String, Object>> resultMap = objectMapper.readValue(
|
||||
listNode.toString(),
|
||||
new TypeReference<>() {}
|
||||
);
|
||||
|
||||
log.debug("Successfully parsed JSON file: {}, items count: {}", file.getName(), resultMap.size());
|
||||
return resultMap;
|
||||
|
||||
} catch (JsonProcessingException e) {
|
||||
log.error("Failed to parse JSON from file: {}", file.getName(), e);
|
||||
throw new MetaDataException("Failed to parse JSON from file: " + file.getName(), e);
|
||||
|
||||
@@ -6,7 +6,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.caliverse.admin.domain.entity.metadata.*;
|
||||
import com.caliverse.admin.global.common.constants.MetadataConstants;
|
||||
import com.caliverse.admin.global.common.exception.MetaDataException;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -27,12 +26,15 @@ public class MetaDataFileLoader {
|
||||
private final Map<MetaQuestKey, MetaQuestData> quests;
|
||||
private final Map<Integer, MetaBuildingData> buildings;
|
||||
private final Map<Integer, MetaLandData> lands;
|
||||
private final Map<Integer, MetaGameModeData> gameModes;
|
||||
private final Map<Integer, MetaGameFFAConfigData> gameFFAConfigs;
|
||||
private final Map<Integer, MetaBattleConfigData> battleConfigs;
|
||||
private final Map<Integer, MetaBattleRewardData> battleRewards;
|
||||
private final Map<String, MetaSystemMailData> systemMails;
|
||||
|
||||
public MetaDataFileLoader(JsonFileReader jsonFileReader) {
|
||||
this.jsonFileReader = jsonFileReader;
|
||||
this.gameModes = new ConcurrentHashMap<>();
|
||||
this.items = new ConcurrentHashMap<>();
|
||||
this.textStrings = new ConcurrentHashMap<>();
|
||||
this.clothTypes = new ConcurrentHashMap<>();
|
||||
@@ -44,6 +46,7 @@ public class MetaDataFileLoader {
|
||||
this.battleConfigs = new ConcurrentHashMap<>();
|
||||
this.battleRewards = new ConcurrentHashMap<>();
|
||||
this.systemMails = new ConcurrentHashMap<>();
|
||||
this.gameFFAConfigs = new ConcurrentHashMap<>();
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
@@ -75,6 +78,8 @@ public class MetaDataFileLoader {
|
||||
loadBattleConfig();
|
||||
loadBattleReward();
|
||||
loadSystemMail();
|
||||
loadGameMode();
|
||||
loadGameModeFFAConfig();
|
||||
}catch(MetaDataException e){
|
||||
log.error("Failed to initialize metadata", e);
|
||||
throw e;
|
||||
@@ -144,9 +149,19 @@ public class MetaDataFileLoader {
|
||||
return new ArrayList<>(lands.values());
|
||||
}
|
||||
|
||||
public List<MetaGameModeData> getMetaGameModes() {
|
||||
return new ArrayList<>(gameModes.values());
|
||||
}
|
||||
|
||||
public List<MetaGameFFAConfigData> getMetaGameFFAConfigs() {
|
||||
return new ArrayList<>(gameFFAConfigs.values());
|
||||
}
|
||||
|
||||
// 추후 없어질것
|
||||
public List<MetaBattleConfigData> getMetaBattleConfigs() {
|
||||
return new ArrayList<>(battleConfigs.values());
|
||||
}
|
||||
// 추후 없어질것
|
||||
public List<MetaBattleRewardData> getMetaBattleRewards() {
|
||||
return battleRewards.values().stream()
|
||||
.collect(Collectors.groupingBy(MetaBattleRewardData::getGroupID)) // groupId로 그룹화
|
||||
@@ -155,6 +170,7 @@ public class MetaDataFileLoader {
|
||||
.sorted(Comparator.comparing(MetaBattleRewardData::getGroupID)) // groupId 기준으로 정렬
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<MetaSystemMailData> getMetaSystemMail() {
|
||||
return new ArrayList<>(systemMails.values());
|
||||
}
|
||||
@@ -169,10 +185,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 문자 데이터 로드
|
||||
private void loadTextStrings() {
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(
|
||||
EMetaData.TEXT_STRING_DATA.getFileName(),
|
||||
MetadataConstants.JSON_LIST_TEXT_STRING
|
||||
);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.TEXT_STRING_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("textStrings data is empty or file not found: {}", EMetaData.TOOL_DATA.getFileName());
|
||||
return;
|
||||
@@ -192,7 +205,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 아이템 정보 데이터 로드
|
||||
public void loadItems(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.ITEM_DATA.getFileName(), MetadataConstants.JSON_LIST_ITEM);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.ITEM_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("item data is empty or file not found: {}", EMetaData.TOOL_DATA.getFileName());
|
||||
return;
|
||||
@@ -213,7 +226,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 의상 타입 데이터 로드
|
||||
public void loadClothType(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.CLOTH_TYPE_DATA.getFileName(), MetadataConstants.JSON_LIST_CLOTH_TYPE);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.CLOTH_TYPE_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("clothType data is empty or file not found: {}", EMetaData.TOOL_DATA.getFileName());
|
||||
return;
|
||||
@@ -232,7 +245,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 도구 정보 데이터 로드
|
||||
public void loadToolItems(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.TOOL_DATA.getFileName(), MetadataConstants.JSON_LIST_TOOL);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.TOOL_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("tool data is empty or file not found: {}", EMetaData.TOOL_DATA.getFileName());
|
||||
return;
|
||||
@@ -250,7 +263,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 금지어 데이터 로드
|
||||
public void loadBanWord(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BAN_WORD_DATA.getFileName(), MetadataConstants.JSON_LIST_BAN_WORD);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BAN_WORD_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("ban data is empty or file not found: {}", EMetaData.BAN_WORD_DATA.getFileName());
|
||||
return;
|
||||
@@ -265,7 +278,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 퀘스트 데이터 로드
|
||||
public void loadQuests(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.QUEST_DATA.getFileName(), MetadataConstants.JSON_LIST_QUEST);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.QUEST_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("quest data is empty or file not found: {}", EMetaData.QUEST_DATA.getFileName());
|
||||
return;
|
||||
@@ -287,7 +300,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 빌딩 데이터 로드
|
||||
public void loadBuilding(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BUILDING_DATA.getFileName(), MetadataConstants.JSON_LIST_BUILDING);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BUILDING_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("building data is empty or file not found: {}", EMetaData.BUILDING_DATA.getFileName());
|
||||
return;
|
||||
@@ -313,7 +326,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 랜드 데이터 로드
|
||||
public void loadLand(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.LAND_DATA.getFileName(), MetadataConstants.JSON_LIST_LAND);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.LAND_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("land data is empty or file not found: {}", EMetaData.LAND_DATA.getFileName());
|
||||
return;
|
||||
@@ -346,9 +359,85 @@ public class MetaDataFileLoader {
|
||||
log.info("loadLand {} Load Complete", EMetaData.LAND_DATA.getFileName());
|
||||
}
|
||||
|
||||
// 게임 모드 데이터 로드
|
||||
public void loadGameMode(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.GAME_MODE_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("Game Mode data is empty or file not found: {}", EMetaData.GAME_MODE_DATA.getFileName());
|
||||
return;
|
||||
}
|
||||
|
||||
metaList.forEach(meta -> {
|
||||
MetaGameModeData item = new MetaGameModeData();
|
||||
item.setId((Integer)meta.get("GameModeID"));
|
||||
item.setDesc((String)meta.get("GameModeDescription"));
|
||||
item.setGenreType((String)meta.get("GameGenreType"));
|
||||
item.setModeType((String)meta.get("GameModeType"));
|
||||
item.setModeConfigId((Integer)meta.get("GameModeConfigID"));
|
||||
item.setModeCommonId((Integer)meta.get("GameModeCommonID"));
|
||||
item.setInstanceId((Integer)meta.get("InstanceID"));
|
||||
item.setModeMatchId((Integer)meta.get("GameModeMatchID"));
|
||||
item.setModeRewardGroupId((Integer)meta.get("GameModeRewardGroupID"));
|
||||
item.setModeOptionId((Integer)meta.get("GameModeOptionID"));
|
||||
item.setModeStartId((Integer)meta.get("GameModeStartID"));
|
||||
item.setModeTeamId((Integer)meta.get("GameModeTeamID"));
|
||||
gameModes.put((Integer)meta.get("GameModeID"), item);
|
||||
});
|
||||
|
||||
log.info("loadGameMode {} Load Complete", EMetaData.GAME_MODE_DATA.getFileName());
|
||||
}
|
||||
|
||||
// 게임 TPS_FFA 설정 데이터 로드
|
||||
public void loadGameModeFFAConfig(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.GAME_MODE_FFA_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("gameMode TPS FFA data is empty or file not found: {}", EMetaData.GAME_MODE_FFA_DATA.getFileName());
|
||||
return;
|
||||
}
|
||||
|
||||
metaList.forEach(meta -> {
|
||||
MetaGameFFAConfigData item = new MetaGameFFAConfigData();
|
||||
item.setId((Integer)meta.get("GameModeTpsFfaID"));
|
||||
item.setDesc((String)meta.get("GameModeTpsFfaDescription"));
|
||||
item.setPlayerRespawnTime((Integer)meta.get("PlayerRespawnTime"));
|
||||
item.setDefaultRoundCount((Integer)meta.get("DefaultRoundCount"));
|
||||
item.setRoundTime((Integer)meta.get("RoundTime"));
|
||||
item.setNextRoundWaitTime((Integer)meta.get("NextRoundWaitTime"));
|
||||
item.setResultUIWaitTime((Integer)meta.get("ResultUIWaitTime"));
|
||||
item.setGetRewardTime((Integer)meta.get("GetRewardTime"));
|
||||
gameFFAConfigs.put((Integer)meta.get("GameModeTpsFfaID"), item);
|
||||
});
|
||||
|
||||
log.info("loadGameModeFFAConfig {} Load Complete", EMetaData.GAME_MODE_FFA_DATA.getFileName());
|
||||
}
|
||||
|
||||
// 게임 TPS_TDM 설정 데이터 로드
|
||||
public void loadGameModeTDMConfig(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.GAME_MODE_TDM_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("Battle config data is empty or file not found: {}", EMetaData.GAME_MODE_TDM_DATA.getFileName());
|
||||
return;
|
||||
}
|
||||
|
||||
metaList.forEach(meta -> {
|
||||
MetaBattleConfigData item = new MetaBattleConfigData();
|
||||
item.setId((Integer)meta.get("Id"));
|
||||
item.setDesc((String)meta.get("Description"));
|
||||
item.setPlayerRespawnTime((Integer)meta.get("PlayerRespawnTime"));
|
||||
item.setDefaultRoundCount((Integer)meta.get("DefaultRoundCount"));
|
||||
item.setRoundTime((Integer)meta.get("RoundTime"));
|
||||
item.setNextRoundWaitTime((Integer)meta.get("NextRoundWaitTime"));
|
||||
item.setResultUIWaitTime((Integer)meta.get("ResultUIWaitTime"));
|
||||
item.setGetRewardTime((Integer)meta.get("GetRewardTime"));
|
||||
battleConfigs.put((Integer)meta.get("Id"), item);
|
||||
});
|
||||
|
||||
log.info("loadBattleConfig {} Load Complete", EMetaData.GAME_MODE_TDM_DATA.getFileName());
|
||||
}
|
||||
|
||||
// 전투 설정 데이터 로드
|
||||
public void loadBattleConfig(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BATTLE_CONFIG_DATA.getFileName(), MetadataConstants.JSON_LIST_BATTLE_CONFIG);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BATTLE_CONFIG_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("Battle config data is empty or file not found: {}", EMetaData.BATTLE_CONFIG_DATA.getFileName());
|
||||
return;
|
||||
@@ -372,7 +461,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 전투 보상 데이터 로드
|
||||
public void loadBattleReward(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BATTLE_REWARD_DATA.getFileName(), MetadataConstants.JSON_LIST_BATTLE_REWARD);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.BATTLE_REWARD_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("Battle reward data is empty or file not found: {}", EMetaData.BATTLE_REWARD_DATA.getFileName());
|
||||
return;
|
||||
@@ -395,7 +484,7 @@ public class MetaDataFileLoader {
|
||||
|
||||
// 시스템메일 데이터 로드
|
||||
public void loadSystemMail(){
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.SYSTEM_MAIL_DATA.getFileName(), MetadataConstants.JSON_LIST_SYSTEM_META);
|
||||
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.SYSTEM_MAIL_DATA.getFileName());
|
||||
if(metaList == null || metaList.isEmpty()) {
|
||||
log.warn("System Mail data is empty or file not found: {}", EMetaData.SYSTEM_MAIL_DATA.getFileName());
|
||||
return;
|
||||
|
||||
@@ -79,6 +79,14 @@ public class MetaDataHandler {
|
||||
return metadataFileLoader.getMetaBattleRewards();
|
||||
}
|
||||
|
||||
public List<MetaGameModeData> getMetaGameModeListData() {
|
||||
return metadataFileLoader.getMetaGameModes();
|
||||
}
|
||||
|
||||
public List<MetaGameFFAConfigData> getMetaGameFFAConfigListData() {
|
||||
return metadataFileLoader.getMetaGameFFAConfigs();
|
||||
}
|
||||
|
||||
public List<MetaSystemMailData> getMetaSystemMailListData() {
|
||||
return metadataFileLoader.getMetaSystemMail();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user