반응형

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화 완료

반응형

WRITTEN BY
데르벨준

,