/** * RealGrid 의 JSON전문을 GridData 객체로 전환한다. * * <p>1. request 전문의 mode, rows, headers로 구분하여 파싱 및 WiseGrid 데이터 구조에 Set 한다. * * @param rawData request 로 올라온 RealGrid 의 JSON전문 * @return GridData JSON전문을 파싱하여 WiseGrid 의 자료구조에 맞춰 반환 * @throws Exception * @since v1, 0, 0, 0 */ public static GridData parse(String rawData) throws Exception { LinkedHashMap<String, Object> jsonDataMap = new ObjectMapper().readValue(rawData, LinkedHashMap.class); GridData gridData = new GridData(); String gridMode = ""; // JSON 전문의 mode, params, headers로 구분하여 파싱한다. for (String dataKey : jsonDataMap.keySet()) { // 모드 입력 if (json_mode.equals(dataKey)) { // logger.info("--------------------------- JSON전문의 mode를 GridData구조에 입력한다. // --------------------------------"); gridMode = (String) jsonDataMap.get(dataKey); gridData.setMode(gridMode); // logger.info("mode : " + gridMode); // logger.info("GridData Info: " + gridData); // // logger.info("---------------------------------------------------------------------------------------------------------"); // parameter 입력 } else if (json_params.equals(dataKey)) { // logger.info("--------------------------- JSON전문의 params를 GridData구조에 입력한다. // --------------------------------"); setJsonParamData(gridData, (List<LinkedHashMap<String, String>>) jsonDataMap.get(dataKey)); // // logger.info("---------------------------------------------------------------------------------------------------------"); // 헤더정보 입력 } else if (json_headers.equals(dataKey)) { // logger.info("--------------------------- JSON전문의 headers를 GridData구조에 // 입력한다. --------------------------------"); setJsonHeaderData(gridData, (List<LinkedHashMap<String, Object>>) jsonDataMap.get(dataKey)); // // logger.info("---------------------------------------------------------------------------------------------------------"); // rows 처리 } else if (json_rows.equals(dataKey)) { setRowData(gridData, (List<List<String>>) jsonDataMap.get(dataKey)); } else { throw new Exception("전문형식에 적합하지 않은 문자가 존재합니다."); } } return gridData; }
/** * @param gdReq * @return GridData * @since 2015/09/09 */ public static GridData cloneResponseGridData(GridData gdReq) throws Exception { GridData gdRes = new GridData(); // mode 추가 gdRes.setMode(gdReq.getMode()); String headers[] = gdReq.getHeaderSequence(); for (int i = 0; i < gdReq.getHeaderCount(); i++) { GridHeader ghValue = gdReq.getHeader(headers[i]); String headerDataType = gdReq.getHeader(headers[i]).getDataType(); gdRes.createHeader(headers[i], headerDataType); if (headerDataType.equals("L")) { if (ghValue.getComboValues() != null) if (ghValue.getComboValues().length != 0) gdRes .getHeader(headers[i]) .setComboValues(ghValue.getComboValues(), ghValue.getComboHiddenValues()); // 오리진 콤보데이터 확인을 위한 코드. gdRes .getHeader(headers[i]) .setOriginComboValues( ghValue.getOriginComboValues(), ghValue.getOriginComboHiddenValues()); if (ghValue.hasComboList()) { for (int j = 0; j < ghValue.getComboListCount(); j++) { String comboListKey = ghValue.getComboListKeys()[j]; gdRes .getHeader(headers[i]) .addComboListValues( comboListKey, ghValue.getComboValues(comboListKey), ghValue.getComboHiddenValues(comboListKey)); } } } else if (headerDataType.equals("I")) { if (ghValue.getImageURLs() != null) if (ghValue.getImageURLs().length != 0) gdRes.getHeader(headers[i]).setImageURLs(ghValue.getImageURLs()); } } return gdRes; }