From c0a08f52198aa2e1940d2665f2d5483e5c253219 Mon Sep 17 00:00:00 2001 From: Qin Dong Ming <2720806930@qq.com> Date: Tue, 10 Sep 2024 12:16:13 +0800 Subject: [PATCH] --9--10 --- .../com/muyu/context/GenerateConstant.java | 12 +- .../controller/EngineVersionController.java | 12 +- .../main/java/com/muyu/test/JavaClass.java | 3 +- .../utils/DownloadOssSynchronization.java | 154 +++++++-------- .../main/java/com/muyu/utils/OssUpload.java | 182 +++++++++--------- 5 files changed, 184 insertions(+), 179 deletions(-) diff --git a/cloud-etl-common/src/main/java/com/muyu/context/GenerateConstant.java b/cloud-etl-common/src/main/java/com/muyu/context/GenerateConstant.java index 7325b7e..dad7403 100644 --- a/cloud-etl-common/src/main/java/com/muyu/context/GenerateConstant.java +++ b/cloud-etl-common/src/main/java/com/muyu/context/GenerateConstant.java @@ -12,12 +12,12 @@ import java.util.Date; public class GenerateConstant { - public static final String DATA_FIELD = "DataEngineValueActuator"; - public static final String DATA_RECORD = "DataEngineRecordActuator"; - public static final String DATA_SET = "DataEngineSetActuator"; - public static final String ACTION_IMPORT = "import com.muyu.abstracts.DataValue;"; - public static final String SCOPE_IMPORT = "import com.muyu.abstracts.DataEngineValueActuator;"; - public static final String PACKAGE_PATH = "package com.muyu.abstracts;\n"; +// public static final String DATA_FIELD = "DataEngineValueActuator"; +// public static final String DATA_RECORD = "DataEngineRecordActuator"; +// public static final String DATA_SET = "DataEngineSetActuator"; +// public static final String ACTION_IMPORT = "import com.muyu.abstracts.DataValue;"; +// public static final String SCOPE_IMPORT = "import com.muyu.abstracts.DataEngineValueActuator;"; +// public static final String PACKAGE_PATH = "package com.muyu.abstracts;\n"; public static String getClassName(String versionCode) { diff --git a/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java b/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java index 9dc9b3f..111b4c9 100644 --- a/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java +++ b/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java @@ -13,6 +13,7 @@ import com.muyu.resp.EngineConfigScopeResp; import com.muyu.resp.VersionClassCreateResp; import com.muyu.service.EngineVersionService; import com.muyu.test.JavaClass; +import com.muyu.utils.DownloadOssSynchronization; import com.muyu.utils.OssUpload; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.log4j.Log4j2; @@ -157,12 +158,15 @@ public class EngineVersionController extends BaseController { */ @PostMapping("/insertVersion") public boolean insertVersion(@RequestBody EngineVersion engineVersion) { - log.info("数据是:{}" + engineVersion.getRuleContent()); - OssUpload.uploadFiles(engineVersion.getRuleContent(), engineVersion.getVersionCode()); - OSSFileDownload.streamingDownload(engineVersion.getName()); - JavaClass.compile(engineVersion.getName()); + +// OssUpload.uploadFiles(engineVersion.getRuleContent(), engineVersion.getVersionCode()); +// +// JavaClass.compile(engineVersion.getName()); + engineVersion.setId(null); + boolean insert = engineVersionService.insert(engineVersion); + return insert; } diff --git a/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java b/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java index 4977f92..8cfb5a1 100644 --- a/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java +++ b/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java @@ -1,6 +1,7 @@ package com.muyu.test; import com.muyu.domain.constants.Result; + import lombok.extern.log4j.Log4j2; import javax.tools.JavaCompiler; @@ -14,7 +15,7 @@ public class JavaClass { String[] strings = {"-classpath", "/home/lib", "-verbose", "-d", "/home/lib", "/home/" + fileName + ".java"}; int result = compiler.run(null, null, null, strings); if (result == 0) { - log.info("编译成功,生成的.class文件位于源代码同目录" + "-classpath " + "/home/" + fileName + ".class"); + log.info("编译成功,生成的.class文件位于源代码同目录" + fileName + ".class"); } else { log.info("编译失败"); } diff --git a/cloud-etl-server/src/main/java/com/muyu/utils/DownloadOssSynchronization.java b/cloud-etl-server/src/main/java/com/muyu/utils/DownloadOssSynchronization.java index a1ae1a2..e7e0120 100644 --- a/cloud-etl-server/src/main/java/com/muyu/utils/DownloadOssSynchronization.java +++ b/cloud-etl-server/src/main/java/com/muyu/utils/DownloadOssSynchronization.java @@ -1,77 +1,77 @@ -//package com.muyu.utils; -// -//import com.aliyun.oss.OSS; -//import com.aliyun.oss.OSSClientBuilder; -//import com.aliyun.oss.model.GetObjectRequest; -//import com.aliyun.oss.model.OSSObject; -//import com.aliyun.oss.model.ObjectListing; -//import com.aliyun.oss.model.OSSObjectSummary; -//import lombok.extern.log4j.Log4j2; -//import org.springframework.boot.ApplicationArguments; -//import org.springframework.boot.ApplicationRunner; -//import org.springframework.stereotype.Component; -// -//import java.io.File; -//import java.io.FileOutputStream; -//import java.io.IOException; -// -//@Log4j2 -//@Component -//public class DownloadOssSynchronization implements ApplicationRunner { -// -// private static final String endpoint = "https://oss-cn-shanghai.aliyuncs.com"; -// -// private static final String accessKeyId = "LTAI5t8LmMHfW8ckPaAZR6oQ"; -// -// private static final String accessKeySecret = "pwzEwkpxcTFgurkARyr7sG7V6syc9x"; -// -// private static final String bucketName = "011811"; -// -// /** -// * 服务器项目路径放文件 -// */ -// private static String serverClassPath = "home/lib/com/muyu/abstracts/"; -// -// -// @Override -// public void run(ApplicationArguments args) throws Exception { -// log.info("开始从Oss下载规则引擎"); -// OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); -// -// // 获取存储桶信息 -// ObjectListing objectListing = ossClient.listObjects(bucketName); -// // 循环获取Oss存储桶中的所有对象 -// for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) { -// String key = objectSummary.getKey(); -// downloadFile(ossClient, bucketName, key, serverClassPath); -// } -// // 关闭OSSClient -// ossClient.shutdown(); -// //下载完成实现批量批量类加载 -// } -// -// private void downloadFile(OSS ossClient, String bucketName, String key, String serverPath) { -// log.info("开始下载文件[]{}:"+key); -// //创建服务器项目容器的文件目录路径 -// File serverFile = new File(serverPath, key); -// //如果目录不存在,则创建目录 -// if (!serverFile.getParentFile().exists()) { -// serverFile.getParentFile().mkdirs(); -// } -// //下载文件到项目中 -// OSSObject ossObject = ossClient.getObject(new GetObjectRequest(bucketName, key)); -// -// try (FileOutputStream fos = new FileOutputStream(serverFile);) { -// byte[] buffer = new byte[1024]; -// int byteRead; -// while ((byteRead = ossObject.getObjectContent().read(buffer)) != -1) { -// fos.write(buffer, 0, byteRead); -// } -// log.info("文件 " + key + "已经下载到" + serverFile.getAbsolutePath()); -// } catch (IOException e) { -// log.error("下载文件失败:" + key); -// e.printStackTrace(); -// } -// } -// -//} +package com.muyu.utils; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.GetObjectRequest; +import com.aliyun.oss.model.OSSObject; +import com.aliyun.oss.model.ObjectListing; +import com.aliyun.oss.model.OSSObjectSummary; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +@Log4j2 +@Component +public class DownloadOssSynchronization implements ApplicationRunner { + + private static final String endpoint = "https://oss-cn-shanghai.aliyuncs.com"; + + private static final String accessKeyId = "LTAI5t8LmMHfW8ckPaAZR6oQ"; + + private static final String accessKeySecret = "pwzEwkpxcTFgurkARyr7sG7V6syc9x"; + + private static final String bucketName = "011811"; + + /** + * 服务器项目路径放文件 + */ + private static String serverClassPath = "/home/lib/com/muyu/abstracts/"; + + + @Override + public void run(ApplicationArguments args) throws Exception { + log.info("开始从Oss下载规则引擎"); + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + + // 获取存储桶信息 + ObjectListing objectListing = ossClient.listObjects(bucketName); + // 循环获取Oss存储桶中的所有对象 + for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) { + String key = objectSummary.getKey(); + downloadFile(ossClient, bucketName, key, serverClassPath); + } + // 关闭OSSClient + ossClient.shutdown(); + //下载完成实现批量批量类加载 + } + + private void downloadFile(OSS ossClient, String bucketName, String key, String serverPath) { + log.info("开始下载文件[]{}:"+key); + //创建服务器项目容器的文件目录路径 + File serverFile = new File(serverPath, key); + //如果目录不存在,则创建目录 + if (!serverFile.getParentFile().exists()) { + serverFile.getParentFile().mkdirs(); + } + //下载文件到项目中 + OSSObject ossObject = ossClient.getObject(new GetObjectRequest(bucketName, key)); + + try (FileOutputStream fos = new FileOutputStream(serverFile);) { + byte[] buffer = new byte[1024]; + int byteRead; + while ((byteRead = ossObject.getObjectContent().read(buffer)) != -1) { + fos.write(buffer, 0, byteRead); + } + log.info("文件 " + key + "已经下载到" + serverFile.getAbsolutePath()); + } catch (IOException e) { + log.error("下载文件失败:" + key); + e.printStackTrace(); + } + } + +} diff --git a/cloud-etl-server/src/main/java/com/muyu/utils/OssUpload.java b/cloud-etl-server/src/main/java/com/muyu/utils/OssUpload.java index dd45558..b207b06 100644 --- a/cloud-etl-server/src/main/java/com/muyu/utils/OssUpload.java +++ b/cloud-etl-server/src/main/java/com/muyu/utils/OssUpload.java @@ -1,91 +1,91 @@ -//package com.muyu.utils; -// -//import com.aliyun.oss.OSS; -//import com.aliyun.oss.OSSClientBuilder; -//import com.aliyun.oss.model.PutObjectRequest; -//import com.muyu.common.core.domain.Result; -// -//import java.io.ByteArrayInputStream; -//import java.io.File; -//import java.nio.charset.StandardCharsets; -// -///** -// * @Author:LiDongJia -// * @Package:com.muyu.cloud.etl.rule.upload -// * @Project:cloud-rule -// * @name:ALiYunUpload -// * @Date:2024/8/30 -// */ -//public class OssUpload { -// -// // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写 -// private static final String endpoint = "https://oss-cn-shanghai.aliyuncs.com"; -// -// private static final String accessKeyId = "LTAI5t8LmMHfW8ckPaAZR6oQ"; -// -// private static final String accessKeySecret = "pwzEwkpxcTFgurkARyr7sG7V6syc9x"; -// -// private static final String bucketName = "011811"; -// // Bucket名称 -// -// public static Result uploadFiles(String content, String fileName) { -// -// OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); -// -// // 上传到OSS后文件保存的目录,例如:folder/subfolder/,最后以斜杠结尾 -// String objectName = "build/rule/version/" + fileName + ".java"; -// -// try { -// // 将内容转换为字节数组输入流 -// ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)); -// -// // 构造上传请求 -// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); -// -// // 执行上传操作 -//// ossClient.putObject(putObjectRequest); -// -// return Result.success(null, "文件" + fileName + ".java" + "存储成功"); -// -// } catch (Exception e) { -// e.printStackTrace(); -// -// return Result.error(null, "文件" + fileName + ".java" + "存储失败"); -// } finally { -// // 关闭OSSClient -// if (ossClient != null) { -// ossClient.shutdown(); -// } -// } -// -// } -// -// public static Result uploadClassFiles(String versionClass) { -// // 创建OSSClient实例。 -// OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); -// -// try { -// // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。 -// String objectName = "build/rule/version/" + versionClass + ".class"; -// -// // 创建上传文件的输入流(这里以文件为例)。 -// File file = new File("/home/lib/com/muyu/cloud/rule/engine/" + versionClass + ".class"); -// -// // 上传文件。 -// ossClient.putObject(new PutObjectRequest(bucketName, objectName, file)); -// -// System.out.println("上传成功"); -// return Result.success("上传成功"); -// } catch (Exception e) { -// e.printStackTrace(); -// System.out.println("上传失败"); -// return Result.error("上传失败"); -// } finally { -// // 关闭OSSClient。 -// if (ossClient != null) { -// ossClient.shutdown(); -// } -// } -// } -// -//} +package com.muyu.utils; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.PutObjectRequest; +import com.muyu.common.core.domain.Result; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.nio.charset.StandardCharsets; + +/** + * @Author:LiDongJia + * @Package:com.muyu.cloud.etl.rule.upload + * @Project:cloud-rule + * @name:ALiYunUpload + * @Date:2024/8/30 + */ +public class OssUpload { + + // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写 + private static final String endpoint = "https://oss-cn-shanghai.aliyuncs.com"; + + private static final String accessKeyId = "LTAI5t8LmMHfW8ckPaAZR6oQ"; + + private static final String accessKeySecret = "pwzEwkpxcTFgurkARyr7sG7V6syc9x"; + + private static final String bucketName = "011811"; + // Bucket名称 + + public static Result uploadFiles(String content, String fileName) { + + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + + // 上传到OSS后文件保存的目录,例如:folder/subfolder/,最后以斜杠结尾 + String objectName = "build/rule/version/" + fileName + ".java"; + + try { + // 将内容转换为字节数组输入流 + ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)); + + // 构造上传请求 + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); + + // 执行上传操作 +// ossClient.putObject(putObjectRequest); + + return Result.success(null, "文件" + fileName + ".java" + "存储成功"); + + } catch (Exception e) { + e.printStackTrace(); + + return Result.error(null, "文件" + fileName + ".java" + "存储失败"); + } finally { + // 关闭OSSClient + if (ossClient != null) { + ossClient.shutdown(); + } + } + + } + + public static Result uploadClassFiles(String versionClass) { + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + + try { + // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。 + String objectName = "build/rule/version/" + versionClass + ".class"; + + // 创建上传文件的输入流(这里以文件为例)。 + File file = new File("/home/lib/com/muyu/cloud/rule/engine/" + versionClass + ".class"); + + // 上传文件。 + ossClient.putObject(new PutObjectRequest(bucketName, objectName, file)); + + System.out.println("上传成功"); + return Result.success("上传成功"); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("上传失败"); + return Result.error("上传失败"); + } finally { + // 关闭OSSClient。 + if (ossClient != null) { + ossClient.shutdown(); + } + } + } + +}