Map<String, Object> param = _req.getParameterMap();
Map<String, Object> rtnMap = new HashMap<String, Object>();
/*JSON 파싱 및 Bean 생성*/
try {
String jsonData = (String) param.get("data");
JsonNode jsNode = new ObjectMapper().readTree(jsonData);
// 시나리오 JSON 파싱
String scenarioId = jsNode.path("scenario_id").getTextValue();
String empId = (String) _req.getParameter("emp_id");
String folderId = jsNode.path("folder_id").getTextValue();
String scenarioName = jsNode.path("scenario_name").getTextValue();
String dashboardId = jsNode.path("dashboard_id").getTextValue();
String queryId = jsNode.path("query_id").getTextValue();
String refreshType = jsNode.path("represh_type").getTextValue();
String refreshUnit = jsNode.path("represh_unit").getTextValue();
// 시나리오 VO
ScenarioVO reqScenarioVo = new ScenarioVO();
reqScenarioVo.setScenario_id(scenarioId);
reqScenarioVo.setModify_by(empId);
reqScenarioVo.setFolder_id(folderId);
reqScenarioVo.setScenario_nm(scenarioName);
reqScenarioVo.setRepresh_type(refreshType);
reqScenarioVo.setRepresh_unit(refreshUnit);
reqScenarioVo.setDashboard_id(dashboardId);
reqScenarioVo.setQuery_id(queryId);
// 프롬프트 JSON 파싱
String scenprompt_id = jsNode.path("scenprompt_id").getTextValue();
String startDate = jsNode.path("start_date").getTextValue();
String startTm = jsNode.path("start_tm").getTextValue();
String endDate = jsNode.path("end_date").getTextValue();
String endTm = jsNode.path("end_tm").getTextValue();
String var = jsNode.path("prompt_var").getTextValue();
String promptType = jsNode.path("prompt_type").getTextValue();
// 프롬프트 VO
ScenarioCommonPromptVO promptVo = new ScenarioCommonPromptVO();
promptVo.setScenprompt_id(scenprompt_id);
promptVo.setModify_by(empId);
promptVo.setStart_date(startDate);
promptVo.setStart_tm(startTm);
promptVo.setEnd_date(endDate);
promptVo.setEnd_tm(endTm);
promptVo.setPrompt_var(var);
promptVo.setScenario_id(scenarioId);
promptVo.setPrompt_type(promptType);
// 시나리오 스텝 JSON 리스트 파싱 및 VO
JsonNode stepListNode = jsNode.path("stepList");
Iterator<JsonNode> iter = stepListNode.getElements();
List<ScenarioStepVO> scenarioStepList = new ArrayList<ScenarioStepVO>();
while(iter.hasNext()) {
JsonNode iterNode = iter.next();
Iterator<String> fieldNames = iterNode.getFieldNames();
ScenarioStepVO item = new ScenarioStepVO();
item.setCreated_by(empId);
item.setModify_by(empId);
item.setScenario_id(scenarioId);
while(fieldNames.hasNext()){
String fieldName = fieldNames.next();
JsonNode fieldValue = iterNode.get(fieldName);
if(fieldName.equals("seq")) {
item.setStep_seq(fieldValue.asText());
} else if(fieldName.equals("title")){
item.setStep_title(fieldValue.asText());
} else if(fieldName.equals("desc")) {
item.setStep_desc(fieldValue.asText());
} else if(fieldName.equals("dashboard_id")) {
item.setDashboard_id(fieldValue.asText());
}
logger.info("field명 : " + fieldName+ ", 설정값: " + fieldValue.asText() );
}
scenarioStepList.add(item);
}
// 시나리오 STEP JSON 리스트 파싱 및 VO화 완료
// 시나리오 피벗 데이터 JSON 리스트 파싱 및 VO
JsonNode tagNode = jsNode.path("tagData");
Iterator<JsonNode> tagIter = tagNode.getElements();
List<ScenarioPivotFieldVO> tagNodeList = new ArrayList<ScenarioPivotFieldVO>();
while(tagIter.hasNext()) {
JsonNode iterNode = tagIter.next();
Iterator<String> fieldNames = iterNode.getFieldNames();
ScenarioPivotFieldVO item = new ScenarioPivotFieldVO();
item.setCreated_by(empId);
item.setModify_by(empId);
item.setScenario_id(scenarioId);
item.setQuery_id(queryId);
int dimCnt = 1;
int meaCnt = 1;
while(fieldNames.hasNext()){
String fieldName = fieldNames.next();
JsonNode fieldValue = iterNode.get(fieldName);
if(fieldName.equals("tag")) {
String reqTag = fieldValue.asText();
String[] data = reqTag.split("\\|\\|");
item.setField_category(data[0].equals("D")? "Dimensions":"Fact");
item.setField_use_type(data[3].equals("W")? "01": "02");
item.setColumn_name(data[1]);
item.setField_alias(data[2]);
item.setField_attr(data[4]);
if(data[0].equals("D")){
item.setField_order(""+dimCnt);
dimCnt++;
}else{
item.setField_order(""+meaCnt);
meaCnt++;
}
}
logger.info("field명 : " + fieldName+ ", 설정값: " + fieldValue.asText() );
}
tagNodeList.add(item);
}
// 시나리오 피벗 데이터 JSON 리스트 파싱 및 VO화 완료
'Java & Spring > Java 문법' 카테고리의 다른 글
[Java] GSON 을 이용한 JSON to Generic/VO 또는 GenericVO to JSON (0) | 2015.12.30 |
---|---|
[Java] Java에서 Oracle SQL Loader 실행 (0) | 2015.10.19 |
[JAVA] Jackson을 이용한 Java JSON 파싱 (0) | 2015.09.09 |
[Java] Bean을 Map으로, bean to Map, bean 2 map (1) | 2015.04.23 |
URL Connection 이해와 예제 (0) | 2014.03.12 |
WRITTEN BY