/*
* Copyright (c) 2024 LangChat. TyCoding All Rights Reserved.
*
* Licensed under the GNU Affero General Public License, Version 3 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.gnu.org/licenses/agpl-3.0.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.tycoding.langchat.common.oss.config;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.x.file.storage.core.FileStorageProperties;
import org.dromara.x.file.storage.core.FileStorageProperties.*;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Data
@Accessors(chain = true)
@Component
@ConditionalOnMissingBean(SpringFileStorageProperties.class)
@ConfigurationProperties(prefix = "langchat.oss")
public class SpringFileStorageProperties {
/**
* 默认存储平台
*/
private String defaultPlatform = "local";
/**
* 缩略图后缀,例如【.min.jpg】【.png】
*/
private String thumbnailSuffix = ".min.jpg";
/**
* 上传时不支持元数据时抛出异常
*/
private Boolean uploadNotSupportMetadataThrowException = true;
/**
* 上传时不支持 ACL 时抛出异常
*/
private Boolean uploadNotSupportAclThrowException = true;
/**
* 复制时不支持元数据时抛出异常
*/
private Boolean copyNotSupportMetadataThrowException = true;
/**
* 复制时不支持 ACL 时抛出异常
*/
private Boolean copyNotSupportAclThrowException = true;
/**
* 移动时不支持元数据时抛出异常
*/
private Boolean moveNotSupportMetadataThrowException = true;
/**
* 移动时不支持 ACL 时抛出异常
*/
private Boolean moveNotSupportAclThrowException = true;
/**
* 启用 byte[] 文件包装适配器
*/
private Boolean enableByteFileWrapper = true;
/**
* 启用 URI 文件包装适配器,包含 URL 和 String
*/
private Boolean enableUriFileWrapper = true;
/**
* 启用 InputStream 文件包装适配器
*/
private Boolean enableInputStreamFileWrapper = true;
/**
* 启用本地文件包装适配器
*/
private Boolean enableLocalFileWrapper = true;
/**
* 启用 HttpServletRequest 文件包装适配器
*/
private Boolean enableHttpServletRequestFileWrapper = true;
/**
* 启用 MultipartFile 文件包装适配器
*/
private Boolean enableMultipartFileWrapper = true;
/**
* 本地存储
*/
@Deprecated
private List<? extends SpringLocalConfig> local = new ArrayList<>();
/**
* 本地存储
*/
private List<? extends SpringLocalPlusConfig> localPlus = new ArrayList<>();
/**
* 华为云 OBS
*/
private List<? extends SpringHuaweiObsConfig> huaweiObs = new ArrayList<>();
/**
* 阿里云 OSS
*/
private List<? extends SpringAliyunOssConfig> aliyunOss = new ArrayList<>();
/**
* 七牛云 Kodo
*/
private List<? extends SpringQiniuKodoConfig> qiniuKodo = new ArrayList<>();
/**
* 腾讯云 COS
*/
private List<? extends SpringTencentCosConfig> tencentCos = new ArrayList<>();
/**
* 百度云 BOS
*/
private List<? extends SpringBaiduBosConfig> baiduBos = new ArrayList<>();
/**
* 又拍云 USS
*/
private List<? extends SpringUpyunUssConfig> upyunUss = new ArrayList<>();
/**
* MinIO USS
*/
private List<? extends SpringMinioConfig> minio = new ArrayList<>();
/**
* Amazon S3
*/
private List<? extends SpringAmazonS3Config> amazonS3 = new ArrayList<>();
/**
* FTP
*/
private List<? extends SpringFtpConfig> ftp = new ArrayList<>();
/**
* FTP
*/
private List<? extends SpringSftpConfig> sftp = new ArrayList<>();
/**
* WebDAV
*/
private List<? extends SpringWebDavConfig> webdav = new ArrayList<>();
/**
* GoogleCloud Storage
*/
private List<? extends SpringGoogleCloudStorageConfig> googleCloudStorage = new ArrayList<>();
/**
* FastDFS
*/
private List<? extends SpringFastDfsConfig> fastdfs = new ArrayList<>();
/**
* Azure Blob Storage
*/
private List<? extends SpringAzureBlobStorageConfig> azureBlob = new ArrayList<>();
/**
* 转换成 FileStorageProperties ,并过滤掉没有启用的存储平台
*/
public FileStorageProperties toFileStorageProperties() {
FileStorageProperties properties = new FileStorageProperties();
properties.setDefaultPlatform(defaultPlatform);
properties.setThumbnailSuffix(thumbnailSuffix);
properties.setUploadNotSupportMetadataThrowException(uploadNotSupportMetadataThrowException);
properties.setUploadNotSupportAclThrowException(uploadNotSupportAclThrowException);
properties.setCopyNotSupportMetadataThrowException(copyNotSupportMetadataThrowException);
properties.setCopyNotSupportAclThrowException(copyNotSupportAclThrowException);
properties.setMoveNotSupportMetadataThrowException(moveNotSupportMetadataThrowException);
properties.setMoveNotSupportAclThrowException(moveNotSupportAclThrowException);
properties.setLocal(
local.stream().filter(SpringLocalConfig::getEnableStorage).collect(Collectors.toList()));
properties.setLocalPlus(localPlus.stream()
.filter(SpringLocalPlusConfig::getEnableStorage)
.collect(Collectors.toList()));
properties.setHuaweiObs(huaweiObs.stream()
.filter(SpringHuaweiObsConfig::getEnableStorage)
.collect(Collectors.toList()));
properties.setAliyunOss(aliyunOss.stream()
.filter(SpringAliyunOssConfig::getEnableStorage)
.collect(Collectors.toList()));
properties.setQiniuKodo(qiniuKodo.stream()
.filter(SpringQiniuKodoConfig::getEnableStorage)
.collect(Collectors.toList()));
properties.setTencentCos(tencentCos.stream()
.filter(SpringTencentCosConfig::getEnableStorage)
.collect(Collectors.toList()));
properties.setBaiduBos(
baiduBos.stream().filter(SpringBaiduBosConfig::getEnableStorage).collect(Collectors.toList()));
properties.setUpyunUss(
upyunUss.stream().filter(SpringUpyunUssConfig::getEnableStorage).collect(Collectors.toList()));
properties.setMinio(
minio.stream().filter(SpringMinioConfig::getEnableStorage).collect(Collectors.toList()));
properties.setAmazonS3(
amazonS3.stream().filter(SpringAmazonS3Config::getEnableStorage).collect(Collectors.toList()));
properties.setFtp(ftp.stream().filter(SpringFtpConfig::getEnableStorage).collect(Collectors.toList()));
properties.setSftp(
sftp.stream().filter(SpringSftpConfig::getEnableStorage).collect(Collectors.toList()));
properties.setWebdav(
webdav.stream().filter(SpringWebDavConfig::getEnableStorage).collect(Collectors.toList()));
properties.setGoogleCloudStorage(googleCloudStorage.stream()
.filter(SpringGoogleCloudStorageConfig::getEnableStorage)
.collect(Collectors.toList()));
properties.setFastdfs(
lsx202406
- 粉丝: 2988
- 资源: 5702
最新资源
- matlab程序设计 研究方向:综合能源系统,微电网,主从博弈,合作,非合作博弈相关方向,多时间尺度
- matlab程序设计,综合能源系统主从博弈复现,stackelberg博弈,以下已经复现出来了,可以接设计,非原价 拿之前问清楚 可以运行看结果,出不 不
- MATLAB Simulink仿真平台,蓄电池控制 包括蓄电池双向DC DC控制,采用电压外环电流内环控制,使输出电压稳定,也可采用功率外环电流内环控制,使输出功率稳定
- 汽车ESP系统仿真建模,基于carsim与simulink联合仿真做的联合仿真,有完整的模型和说明
- 客户报备小程序,nodejs开发 成品源码 部署即可用 配置有python开发的服务端监控程序,客户管理 客户报备跟进 销管理 渠道管理 分销提成 类型小程序 数据库mysql
- Qt数据库综合应用组件源码 1. 同时支持多种数据库比如odbc、sqlite、mysql、postgresql、sqlserver、oracle、人大金仓等 2. 一个数据库类即可管理本地数据库通
- Qt C++自定义委托源码 复选框下拉框日期框 密码框 颜色下拉 数据检验 1. 可设置多种委托类型,例如复选框 文本框 下拉框 日期框 微调框 进度条等 2. 可设置是否密文显示,一般用于文本框
- Buck-Boost:基于MATLAB Simulink的Buck-Boost变器仿真模型,包含开环控制和闭环控制两种控制 仿真条件:MATLAB Simulink R2015b
- Cuk:基于MATLAB Simulink的Cuk变器仿真模型,包含开环控制和闭环控制两种控制 仿真条件:MATLAB Simulink R2015b
- PWM-Modulation-Inverter:基于MATLAB Simulink的三种不同PWM波调制下的逆变电路仿真模型,三种PWM调制方法分别为双极性PWM、单极性PWM和正弦PWM 仿真条件
- 在MATLAB环境下,融合遗产算法(GA)和粒子群算法(PSO)的混合算法(GA-PSO)demo,求解一定约束条件下的多元函数的极值 将遗传算法的交叉变异操作融合进粒子群算法中,可以增强粒子群算法
- 差分曼彻斯特编解码功能模块,纯Verilog代码实现
- VSC-HVDC仿真模型 Kundur’s 4-machine 2-area power system.pscad柔性直流输电仿真模型,同步机VSGVSM模型,还有多端如张北直流电网以及基本mmc逆变
- 西门子PID程序,西门子PLC 1200和G120西门子 变频器Modbud RTU通讯,带西门子触摸屏,带变频器参数 Modbus通讯报西门子PID程序,西门子PLC 1200和多台G120西门子
- Smart200控制台达B2伺服做点动回原点和绝对定位等一些列动作,程序由SmartV2.4版本编写,程序带详细注释,包扣伺服控制器参数设定和接线图以及伺服控制器使用说明书,程序仅红参考,可供开发者借
- 威纶通触摸屏通用模板,本模板根据本人多年现场经验不断完善 内含开机自动延时跳转页面,密码登录页面,同第三方设备如机械手监视页面 通用和可扩展性,可移植性强 非常灵活,可为你项目实施节约大量宝贵时
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈