From ee0b8826088282ace2b99edb243ef43ea1176729 Mon Sep 17 00:00:00 2001 From: eastargh Date: Wed, 12 Aug 2026 17:46:10 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B3=80=ED=99=98=EB=AA=85=EB=A0=B9=EC=97=90?= =?UTF-8?q?=20=ED=95=A8=EC=88=98=EA=B0=80=20=EC=A0=81=EC=9A=A9=EB=90=9C=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0,=20=EB=B3=B5=EC=A0=9C=EC=8B=9C=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=EB=AA=85=20=EC=9E=98=EB=A6=AC=EB=8A=94=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../transaction/apim/ApiInterfaceService.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java b/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java index c227dda..19f945d 100644 --- a/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java +++ b/src/main/java/com/eactive/eai/rms/onl/transaction/apim/ApiInterfaceService.java @@ -1160,15 +1160,19 @@ public class ApiInterfaceService extends OnlBaseService { transformUI.setCnvsnName(updatedString); + // 치환 전 원본 레이아웃명을 먼저 보존 (CNVSNCMDNAME/CNVSNRSULTITEMPATHNAME 치환에 사용) + String oldSrcLayoutName = transformUI.getSrcLayoutName(); + String oldTgtLayoutName = transformUI.getTgtLayoutName(); + transformUI.setSrcLayoutName(srcLayoutName); transformUI.setTgtLayoutName(tgtLayoutName); for (TransformItemUI transformItemUI : transformUI.getGridData()) { transformItemUI.setCnvsnName(updatedString); - String tgtPath = transformItemUI.getCnvsnRsultItemPathName().replaceFirst("^[^.]+", tgtLayoutName); + String tgtPath = replaceLayoutNamePrefix(transformItemUI.getCnvsnRsultItemPathName(), oldTgtLayoutName, tgtLayoutName); transformItemUI.setCnvsnRsultItemPathName(tgtPath); - String srcPath = transformItemUI.getCnvsncmdname().replaceFirst("^[^.]+", srcLayoutName); + String srcPath = replaceLayoutNamePrefix(transformItemUI.getCnvsncmdname(), oldSrcLayoutName, srcLayoutName); transformItemUI.setCnvsncmdname(srcPath); } @@ -1177,6 +1181,20 @@ public class ApiInterfaceService extends OnlBaseService { return updatedString; } + /* + * CNVSNCMDNAME/CNVSNRSULTITEMPATHNAME 안의 레이아웃명 부분만 정확히 치환한다. + * "^[^.]+" 로 문자열 맨 앞을 무조건 잘라내는 방식은 FUNC(LAYOUT.FIELD) 처럼 함수가 적용된 값에서 + * 함수명까지 잘라먹고, 여러 항목(FUNC(LAYOUT.A, LAYOUT.B))에서는 첫 번째만 치환되는 문제가 있어 + * 문자열 전체에서 "레이아웃명." 형태로 나타나는 자리만 찾아 바꾼다. + */ + private String replaceLayoutNamePrefix(String value, String oldLayoutName, String newLayoutName) { + if (value == null || oldLayoutName == null || oldLayoutName.isEmpty()) { + return value; + } + String regex = "(?