diff --git a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java
index 6cbfb61c..54cf8b38 100644
--- a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java
+++ b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java
@@ -68,7 +68,7 @@ public class ToolScaffolder {
String createDate = getOrAsk(args, 7, scanner, "8. 작성일 (엔터 입력 시 '" + defaultDate + "'): ");
if (createDate.trim().isEmpty()) createDate = defaultDate;
- String result = scaffold(baseName, interfaceId, description, group, routingType, moduleName, author, createDate, true);
+ String result = scaffold(baseName, interfaceId, description, group, routingType, moduleName, author, createDate, true, null);
System.out.println(result);
}
@@ -80,7 +80,7 @@ public class ToolScaffolder {
return scanner.nextLine().trim();
}
- public static String scaffold(String baseName, String interfaceId, String description, String group, String routingType, String moduleName, String author, String createDate, boolean register) throws IOException {
+ public static String scaffold(String baseName, String interfaceId, String description, String group, String routingType, String moduleName, String author, String createDate, boolean register, String clientSystemCode) throws IOException {
baseName = toPascalCase(baseName);
String envSourceDir = System.getenv("AXHUB_SOURCE_DIR");
Path rootDir = envSourceDir != null ? Paths.get(envSourceDir) : Paths.get(".");
@@ -95,6 +95,18 @@ public class ToolScaffolder {
String bizPackage = BASE_PACKAGE + ".biz." + group.toLowerCase();
boolean isMci = "MCI".equalsIgnoreCase(routingType);
String mciGroupPath = "infra/itrf/mci/" + group.toLowerCase();
+ String clientPkgSuffix = "";
+ String clientPrefixCap = "";
+ Path mciClientDir = null;
+
+ if (isMci && clientSystemCode != null && clientSystemCode.length() == 4) {
+ String clientPrefix = clientSystemCode.toLowerCase();
+ clientPkgSuffix = clientPrefix.substring(0, 3) + "." + clientPrefix.substring(3, 4);
+ clientPrefixCap = toPascalCase(clientSystemCode);
+ mciGroupPath = "infra/itrf/mci/" + clientPrefix.substring(0, 3) + "/" + clientPrefix.substring(3, 4);
+ mciClientDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, mciGroupPath, "client"));
+ }
+
Path mciIoDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, mciGroupPath, "io"));
Files.createDirectories(usecaseDir);
@@ -102,6 +114,9 @@ public class ToolScaffolder {
Files.createDirectories(dtoDir);
if (isMci) {
Files.createDirectories(mciIoDir);
+ if (mciClientDir != null) {
+ Files.createDirectories(mciClientDir);
+ }
} else {
Files.createDirectories(legacyDtoDir);
}
@@ -227,7 +242,8 @@ public class ToolScaffolder {
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import %s.converter.%sLegacyConverter;
- import %s.infra.itrf.mci.%s.io.%s_I;
+ import %s.%s.io.%s_I;
+%s
/**
* @package %s.usecase.impl
@@ -248,7 +264,7 @@ public class ToolScaffolder {
@RequiredArgsConstructor
public class %sUseCaseImpl implements %sUseCase {
- private final AxhubMciComponent mci;
+%s
private final %sLegacyConverter converter;
@Override
@@ -277,7 +293,9 @@ public class ToolScaffolder {
bizPackage, baseName,
bizPackage, baseName,
bizPackage, baseName,
- BASE_PACKAGE, group.toLowerCase(), interfaceId,
+ bizPackage, baseName,
+ BASE_PACKAGE, mciGroupPath.replace("/", "."), interfaceId,
+ (clientPrefixCap.isEmpty() ? "" : " import " + BASE_PACKAGE + "." + mciGroupPath.replace("/", ".") + ".client.Mci" + clientPrefixCap + "Client;\n"),
bizPackage,
baseName,
author,
@@ -285,6 +303,7 @@ public class ToolScaffolder {
createDate, author,
baseName,
baseName,
+ (clientPrefixCap.isEmpty() ? " private final AxhubMciComponent mci;" : " private final Mci" + clientPrefixCap + "Client mci;"),
baseName,
baseName,
toolName,
@@ -383,7 +402,7 @@ public class ToolScaffolder {
*/
private String content;
}
- """.formatted(BASE_PACKAGE, group.toLowerCase(), BASE_PACKAGE, group.toLowerCase(), interfaceId, author, createDate, createDate, author, interfaceId);
+ """.formatted(BASE_PACKAGE, mciGroupPath.replace("/", "."), BASE_PACKAGE, mciGroupPath.replace("/", "."), interfaceId, author, createDate, createDate, author, interfaceId);
Files.writeString(mciIoDir.resolve(interfaceId + "_I.java"), mciReqContent);
String mciResContent = """
@@ -409,7 +428,7 @@ public class ToolScaffolder {
public class %s_O {
// TODO: Add response fields here
}
- """.formatted(BASE_PACKAGE, group.toLowerCase(), BASE_PACKAGE, group.toLowerCase(), interfaceId, author, createDate, createDate, author, interfaceId);
+ """.formatted(BASE_PACKAGE, mciGroupPath.replace("/", "."), BASE_PACKAGE, mciGroupPath.replace("/", "."), interfaceId, author, createDate, createDate, author, interfaceId);
Files.writeString(mciIoDir.resolve(interfaceId + "_O.java"), mciResContent);
String converterContent = """
@@ -454,8 +473,8 @@ public class ToolScaffolder {
bizPackage,
bizPackage, baseName,
bizPackage, baseName,
- BASE_PACKAGE, group.toLowerCase(), interfaceId,
- BASE_PACKAGE, group.toLowerCase(), interfaceId,
+ BASE_PACKAGE, mciGroupPath.replace("/", "."), interfaceId,
+ BASE_PACKAGE, mciGroupPath.replace("/", "."), interfaceId,
bizPackage, baseName, author, createDate, createDate, author,
baseName, interfaceId, baseName,
baseName, interfaceId,
@@ -474,6 +493,46 @@ public class ToolScaffolder {
log.append("[MCI Response IO] ").append(mciIoDir.resolve(interfaceId + "_O.java")).append("\n");
log.append("[MCI Converter] ").append(converterDir.resolve(baseName + "LegacyConverter.java")).append("\n");
+ if (!clientPrefixCap.isEmpty()) {
+ String mciClientContent = """
+ package %s.%s.client;
+
+ import org.springframework.stereotype.Component;
+ import lombok.RequiredArgsConstructor;
+ import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent;
+ import io.shinhanlife.glow.communication.dto.Transfer;
+
+ /**
+ * @package %s.%s.client
+ * @className Mci%sClient
+ * @description AX HUB 시스템 처리 클래스
+ * @author %s
+ * @create %s
+ *
+ * ---------- 개정이력 ----------
+ * 수정일 수정자 수정내용
+ * ---------- -------- ---------------------------
+ * %s %s 최초생성
+ *
+ *
+ */
+ @Component
+ @RequiredArgsConstructor
+ public class Mci%sClient {
+ private final AxhubMciComponent mci;
+
+ public Transfer