feat: Support 4-letter MCI system code in Scaffolder and refactor Onnba classes

This commit is contained in:
jade
2026-07-27 15:02:59 +09:00
parent c0de1f4edb
commit 8a93d5d6dc
6 changed files with 83 additions and 16 deletions

View File

@@ -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
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* %s %s 최초생성
*
* </pre>
*/
@Component
@RequiredArgsConstructor
public class Mci%sClient {
private final AxhubMciComponent mci;
public Transfer<Object> callTo(String interfaceId, Object dummy, Object mciReq, Class<Object> resType) {
return mci.callTo(interfaceId, dummy, mciReq, resType);
}
}
""".formatted(
BASE_PACKAGE, mciGroupPath.replace("/", "."),
BASE_PACKAGE, mciGroupPath.replace("/", "."), clientPrefixCap, author, createDate, createDate, author, clientPrefixCap
);
Files.writeString(mciClientDir.resolve("Mci" + clientPrefixCap + "Client.java"), mciClientContent);
log.append("[MCI Client] ").append(mciClientDir.resolve("Mci" + clientPrefixCap + "Client.java")).append("\n");
}
} else {
String legacyReqContent = """
package %s.legacy;