From 44dfa4710666f0466bc02df28d04e47e0b237fec Mon Sep 17 00:00:00 2001 From: cho Date: Thu, 5 Feb 2026 10:49:41 +0900 Subject: [PATCH 1/2] =?UTF-8?q?flat=EC=A0=84=EB=AC=B8=20pretty=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20api=20=EC=B6=94=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/pretty/PrettyPrintController.java | 141 ++++++++++++++++++ .../eai/custom/pretty/PrettyPrintRequest.java | 20 +++ .../custom/pretty/PrettyPrintResponse.java | 19 +++ 3 files changed, 180 insertions(+) create mode 100644 src/main/java/com/eactive/eai/custom/pretty/PrettyPrintController.java create mode 100644 src/main/java/com/eactive/eai/custom/pretty/PrettyPrintRequest.java create mode 100644 src/main/java/com/eactive/eai/custom/pretty/PrettyPrintResponse.java diff --git a/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintController.java b/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintController.java new file mode 100644 index 0000000..e0f5588 --- /dev/null +++ b/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintController.java @@ -0,0 +1,141 @@ +package com.eactive.eai.custom.pretty; + +import java.util.List; +import java.util.Optional; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.eactive.eai.common.message.EAIMessage; +import com.eactive.eai.common.message.EAIMessageManager; +import com.eactive.eai.common.message.ServiceMessage; +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.common.util.MessageUtil; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.JSONMessage; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.transform.Transform; +import com.eactive.eai.transformer.transform.TransformManager; +import com.fasterxml.jackson.databind.ObjectMapper; + +@Controller +public class PrettyPrintController { + public static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT); + + private static final String FALLBACK_ERROR_JSON = + "{ \"error\": true, \"result\": \"occur error building responseMessage.\" }"; + + @RequestMapping(value = "/PrettyPrint.json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json; charset=UTF-8") + @ResponseBody + public ResponseEntity tokenJson(@RequestBody PrettyPrintRequest transFormRequest, HttpServletRequest request, + HttpServletResponse response) { + + PrettyPrintResponse prettyPrintResponse = new PrettyPrintResponse(); + + try { + + String layoutName = getLayoutName(transFormRequest); + + String result = Optional.ofNullable(MessageFactory.getFactory().getMessage(layoutName)) + .map(message -> { + + message.setData(transFormRequest.getBizData()); + + return message.toXMLString(); + }) + .orElseThrow(()-> new IllegalArgumentException("업무 메세지 파싱중 오류")); + + + + prettyPrintResponse.setResult(result); + String successJson = buildResponseMessage(prettyPrintResponse); + return ResponseEntity.ok(successJson); + }catch (IllegalArgumentException e) { + logger.error("Pretty print 실패", e); + prettyPrintResponse.setError(true); + prettyPrintResponse.setResult("잘못된 업무데이터 전문 파싱 중 에러"); + String errorJson = buildResponseMessage(prettyPrintResponse); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorJson); + } catch ( Exception e) { + logger.error("Pretty print 실패", e); + prettyPrintResponse.setError(true); + prettyPrintResponse.setResult("업무전문 파싱에 필요한 layout정보 가져오는 중 실패"); + String errorJson = buildResponseMessage(prettyPrintResponse); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorJson); + } + + } + + String buildResponseMessage(PrettyPrintResponse prettyPrintResponse) { + try { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(prettyPrintResponse); + }catch (Exception e) { + return FALLBACK_ERROR_JSON; + } + + } + + private String getLayoutName(PrettyPrintRequest request) throws Exception { + + EAIMessageManager eaiMessageManager = EAIMessageManager.getInstance(); + + EAIMessage eaiMessage = eaiMessageManager.getEAIMessage(request.getIntrefaceId()); + + TransformManager transformManager = TransformManager.getManager(); + + if (eaiMessage == null) { + + throw new IllegalArgumentException("Invalid interfaceId=" + request.getIntrefaceId()); + + } + + List serviceMessageList = eaiMessage.getSvcMsgs(); + + ServiceMessage serviceMessage = serviceMessageList.get(0); + + String transformId; + Transform transformInfo; + Layout layout; + + switch (request.getLogProcessNo()) { + case "100": + transformId = serviceMessage.getCnvMsgID(); + transformInfo = transformManager.getTransform(transformId); + layout = transformInfo.getSourceLayout(0); + return layout.getName(); + case "200": + transformId = serviceMessage.getCnvMsgID(); + transformInfo = transformManager.getTransform(transformId); + layout = transformInfo.getTargetLayout(); + return layout.getName(); + case "300": + transformId = request.isError() ? serviceMessage.getErrRspCnvMsgID() : serviceMessage.getBsRspCnvMsgID(); + transformInfo = transformManager.getTransform(transformId); + layout = transformInfo.getSourceLayout(0); + return layout.getName(); + case "400": + transformId = request.isError() ? serviceMessage.getErrRspCnvMsgID() : serviceMessage.getBsRspCnvMsgID(); + transformInfo = transformManager.getTransform(transformId); + layout = transformInfo.getTargetLayout(); + return layout.getName(); + default: + throw new IllegalArgumentException("Invalid logProcessNo: " + request.getLogProcessNo()); + } + + } + +} diff --git a/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintRequest.java b/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintRequest.java new file mode 100644 index 0000000..89a5a4a --- /dev/null +++ b/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintRequest.java @@ -0,0 +1,20 @@ +package com.eactive.eai.custom.pretty; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; + +import lombok.Getter; +import lombok.ToString; + +@SuppressWarnings("serial") +@ToString +@Getter +public class PrettyPrintRequest implements Serializable { + private String logProcessNo; + private String intrefaceId; + private String bizData; + @JsonSetter(nulls = Nulls.SKIP) + private boolean error = false; +} diff --git a/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintResponse.java b/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintResponse.java new file mode 100644 index 0000000..9032c78 --- /dev/null +++ b/src/main/java/com/eactive/eai/custom/pretty/PrettyPrintResponse.java @@ -0,0 +1,19 @@ +package com.eactive.eai.custom.pretty; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@SuppressWarnings("serial") +@ToString +@Setter +public class PrettyPrintResponse implements Serializable { + private String result; + @JsonSetter(nulls = Nulls.SKIP) + private boolean error = false; +} From 7657d6d475c0a3bd3384d016c26f7f3dbeadf36e Mon Sep 17 00:00:00 2001 From: cho Date: Thu, 5 Feb 2026 11:13:26 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20PrettyPrin?= =?UTF-8?q?tController=20=EC=8A=A4=EC=BA=94=20=EC=B6=94=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/WEB-INF/authserver-servlet.xml | 2 ++ .../eactive/eai/custom/pretty/PrettyPrintController.java | 9 +-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/WebContent/WEB-INF/authserver-servlet.xml b/WebContent/WEB-INF/authserver-servlet.xml index 1342774..58f4c31 100644 --- a/WebContent/WEB-INF/authserver-servlet.xml +++ b/WebContent/WEB-INF/authserver-servlet.xml @@ -19,6 +19,8 @@ + tokenJson(@RequestBody PrettyPrintRequest transFormRequest, HttpServletRequest request, HttpServletResponse response) {