From 4678cf84a5dd2b51e791efc6e1cdb0e5d85d24f9 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 1 Feb 2023 09:53:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=A4=8D=E5=88=B6-ts=20c?= =?UTF-8?q?lass=E5=90=8D=E7=A7=B0=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-form-metadata/pom.xml | 4 ++++ .../replication/FormMetadataCmdManager.java | 6 ++++++ .../web/tsfile/api/service/TsFileService.java | 7 +++++++ .../core/service/TsFileService4WebApi.java | 9 +++++---- .../tsfile/core/service/TsFileServiceImpl.java | 15 +++++++++++++-- .../core/service/TsFileServiceImplTest.java | 16 ++++++++++++++++ 6 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java diff --git a/web-form-metadata/pom.xml b/web-form-metadata/pom.xml index 188e1605..93e8256d 100644 --- a/web-form-metadata/pom.xml +++ b/web-form-metadata/pom.xml @@ -61,6 +61,10 @@ com.inspur.edp lcm-metadata-spi + + com.inspur.edp + web-tsfile-api + diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java index 1b623939..dc7cdd51 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java @@ -11,6 +11,7 @@ import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.tsfile.api.service.TsFileService; import io.iec.edp.caf.commons.utils.SpringBeanUtils; import com.inspur.edp.lcm.metadata.api.entity.MetadataType; @@ -160,6 +161,11 @@ public class FormMetadataCmdManager { String filePath = file.getParent(); String fileName = file.getName(); + TsFileService tsFileService = SpringBeanUtils.getBean(TsFileService.class); + String oldTsClassName = tsFileService.getTsClassNameByPath(absolutePath); + String newTsClassName = tsFileService.getTsClassNameByPath(fileName); + oldFileContent = oldFileContent.replace(oldTsClassName, newTsClassName); + FileUtility.writeFile(filePath, fileName, oldFileContent); // 更新服务构件 diff --git a/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/service/TsFileService.java b/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/service/TsFileService.java index 591d7ce6..8b77485b 100644 --- a/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/service/TsFileService.java +++ b/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/service/TsFileService.java @@ -31,6 +31,13 @@ public interface TsFileService { */ String loadTsFileContentByWebCmp(String formRelativePath, String webCmpId); + /** + * 依据ts文件路径构造对应的ts 中class名称 + * @param tsFilePath + * @return + */ + String getTsClassNameByPath(String tsFilePath); + /** * 删除指定的TS文件 * diff --git a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java index afa5c731..dd14cca2 100644 --- a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java +++ b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java @@ -7,6 +7,9 @@ import org.apache.commons.io.FilenameUtils; import java.util.ArrayList; +/** + * @author guozhiqi + */ public class TsFileService4WebApi { private final TsFileService service = TsFileServiceImpl.getNewInstance(); @@ -44,13 +47,11 @@ public class TsFileService4WebApi { } public final void createTypescriptFile(String fullPath) { - // 抽取文件名 - String fileName = FilenameUtils.getBaseName(fullPath); - String normalized = NameUtil.getPascal(fileName); + String normalized = service.getTsClassNameByPath(fullPath); String contentSB = "import { Injectable } from '@angular/core';" + "\r\n" + "\r\n@Injectable()" + "\r\n" + - "export class " + normalized + "Service {" + "\r\n" + + "export class " + normalized + " {" + "\r\n" + " constructor() {}" + "\r\n" + "}" + "\r\n"; service.saveTsFile(fullPath, contentSB); diff --git a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImpl.java b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImpl.java index 9b3d58e1..bbb55bfe 100644 --- a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImpl.java +++ b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImpl.java @@ -7,7 +7,9 @@ import com.inspur.edp.lcm.metadata.api.service.MetadataService; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.tsfile.api.service.TsFileService; +import com.inspur.edp.web.tsfile.core.util.NameUtil; import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import org.apache.commons.io.FilenameUtils; import java.nio.file.Paths; import java.util.ArrayList; @@ -15,12 +17,14 @@ import java.util.List; /** * ts文件服务实现 - * */ + * + * @author guozhiqi + */ public class TsFileServiceImpl implements TsFileService { /** * 私有构造函数 避免外部私自实例化 提供统一返回实例方法 - * */ + */ private TsFileServiceImpl() { } @@ -75,6 +79,13 @@ public class TsFileServiceImpl implements TsFileService { return loadTsFileContent(fullPath); } + @Override + public String getTsClassNameByPath(String tsFilePath) { + String fileName = FilenameUtils.getBaseName(tsFilePath); + String normalized = NameUtil.getPascal(fileName); + return normalized + "Service"; + } + @Override public final void renameTsFile(String fullPath, String newName) { throw new UnsupportedOperationException(); diff --git a/web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java b/web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java new file mode 100644 index 00000000..5548e09d --- /dev/null +++ b/web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java @@ -0,0 +1,16 @@ +package com.inspur.edp.web.tsfile.core.service; + +import com.inspur.edp.web.tsfile.api.service.TsFileService; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class TsFileServiceImplTest { + + @Test + public void testClassName() { + TsFileService tsFileService = TsFileServiceImpl.getNewInstance(); + String tsClassName = tsFileService.getTsClassNameByPath("ddd.ts"); + System.out.printf(tsClassName); + } +} \ No newline at end of file -- Gitee From 441cdad70b366c6bd0871345bd9ff53eab82f7e6 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 1 Feb 2023 10:03:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?ts=E6=96=87=E4=BB=B6=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=8F=90=E5=8F=96service=E8=8E=B7=E5=8F=96=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84class=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tsfile/core/service/TsFileServiceImplTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java b/web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java index 5548e09d..51999d9d 100644 --- a/web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java +++ b/web-tsfile-core/src/test/java/com/inspur/edp/web/tsfile/core/service/TsFileServiceImplTest.java @@ -13,4 +13,16 @@ public class TsFileServiceImplTest { String tsClassName = tsFileService.getTsClassNameByPath("ddd.ts"); System.out.printf(tsClassName); } + + @Test + public void replaceTsClassName() { + TsFileService tsFileService = TsFileServiceImpl.getNewInstance(); + String oldTsClassName = tsFileService.getTsClassNameByPath("ddd.ts"); + assertEquals(oldTsClassName, "DddService"); + + String content = "export class DddService {}"; + String newTsClassName = tsFileService.getTsClassNameByPath("mmm.ts"); + content = content.replace(oldTsClassName, newTsClassName); + assertEquals(content, "export class MmmService {}"); + } } \ No newline at end of file -- Gitee