⚡ 优化标准数据模型.
This commit is contained in:
@@ -3,8 +3,7 @@ package com.orion.visor.module.asset.enums;
|
||||
import com.orion.visor.framework.common.enums.EnableStatus;
|
||||
import com.orion.visor.framework.common.handler.data.GenericsDataDefinition;
|
||||
import com.orion.visor.framework.common.handler.data.model.GenericsDataModel;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.visor.module.asset.handler.host.config.model.HostSshConfigModel;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.GenericsDataStrategy;
|
||||
import com.orion.visor.module.asset.handler.host.config.strategy.HostSshConfigStrategy;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@@ -24,7 +23,6 @@ public enum HostConfigTypeEnum implements GenericsDataDefinition {
|
||||
* SSH 配置
|
||||
*/
|
||||
SSH("ssh",
|
||||
HostSshConfigModel.class,
|
||||
HostSshConfigStrategy.class,
|
||||
EnableStatus.ENABLED.getValue()),
|
||||
|
||||
@@ -32,9 +30,7 @@ public enum HostConfigTypeEnum implements GenericsDataDefinition {
|
||||
|
||||
private final String type;
|
||||
|
||||
private final Class<? extends GenericsDataModel> model;
|
||||
|
||||
private final Class<? extends MapDataStrategy<? extends GenericsDataModel>> strategy;
|
||||
private final Class<? extends GenericsDataStrategy<? extends GenericsDataModel>> strategyClass;
|
||||
|
||||
private final Integer defaultStatus;
|
||||
|
||||
|
||||
@@ -2,9 +2,7 @@ package com.orion.visor.module.asset.enums;
|
||||
|
||||
import com.orion.visor.framework.common.handler.data.GenericsDataDefinition;
|
||||
import com.orion.visor.framework.common.handler.data.model.GenericsDataModel;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.visor.module.asset.handler.host.extra.model.HostLabelExtraModel;
|
||||
import com.orion.visor.module.asset.handler.host.extra.model.HostSshExtraModel;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.GenericsDataStrategy;
|
||||
import com.orion.visor.module.asset.handler.host.extra.strategy.HostLabelExtraStrategy;
|
||||
import com.orion.visor.module.asset.handler.host.extra.strategy.HostSshExtraStrategy;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -24,20 +22,18 @@ public enum HostExtraItemEnum implements GenericsDataDefinition {
|
||||
/**
|
||||
* SSH 额外配置
|
||||
*/
|
||||
SSH("ssh", HostSshExtraModel.class, HostSshExtraStrategy.class),
|
||||
SSH("ssh", HostSshExtraStrategy.class),
|
||||
|
||||
/**
|
||||
* 标签额外配置
|
||||
*/
|
||||
LABEL("label", HostLabelExtraModel.class, HostLabelExtraStrategy.class),
|
||||
LABEL("label", HostLabelExtraStrategy.class),
|
||||
|
||||
;
|
||||
|
||||
private final String item;
|
||||
|
||||
private final Class<? extends GenericsDataModel> model;
|
||||
|
||||
private final Class<? extends MapDataStrategy<? extends GenericsDataModel>> strategy;
|
||||
private final Class<? extends GenericsDataStrategy<? extends GenericsDataModel>> strategyClass;
|
||||
|
||||
public static HostExtraItemEnum of(String type) {
|
||||
if (type == null) {
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
package com.orion.visor.module.asset.handler.host.config.strategy;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.orion.lang.utils.Booleans;
|
||||
import com.orion.lang.utils.Charsets;
|
||||
import com.orion.lang.utils.Exceptions;
|
||||
import com.orion.lang.utils.Strings;
|
||||
import com.orion.visor.framework.common.constant.Const;
|
||||
import com.orion.visor.framework.common.constant.ErrorMessage;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.AbstractGenericsDataStrategy;
|
||||
import com.orion.visor.framework.common.security.PasswordModifier;
|
||||
import com.orion.visor.framework.common.utils.Valid;
|
||||
import com.orion.visor.module.asset.dao.HostIdentityDAO;
|
||||
@@ -18,7 +17,6 @@ import com.orion.visor.module.asset.handler.host.config.model.HostSshConfigModel
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 主机 SSH 配置策略
|
||||
@@ -28,7 +26,7 @@ import java.util.Map;
|
||||
* @since 2023/9/19 14:26
|
||||
*/
|
||||
@Component
|
||||
public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel> {
|
||||
public class HostSshConfigStrategy extends AbstractGenericsDataStrategy<HostSshConfigModel> {
|
||||
|
||||
@Resource
|
||||
private HostKeyDAO hostKeyDAO;
|
||||
@@ -40,6 +38,10 @@ public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel
|
||||
|
||||
private static final String USERNAME = "root";
|
||||
|
||||
public HostSshConfigStrategy() {
|
||||
super(HostSshConfigModel.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HostSshConfigModel getDefault() {
|
||||
return HostSshConfigModel.builder()
|
||||
@@ -55,7 +57,7 @@ public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preValid(HostSshConfigModel model) {
|
||||
protected void preValid(HostSshConfigModel model) {
|
||||
// 验证认证类型
|
||||
Valid.valid(HostSshAuthTypeEnum::of, model.getAuthType());
|
||||
// 验证系统版本
|
||||
@@ -77,13 +79,13 @@ public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel
|
||||
}
|
||||
|
||||
@Override
|
||||
public void valid(HostSshConfigModel model) {
|
||||
protected void valid(HostSshConfigModel model) {
|
||||
// 验证填充后的参数
|
||||
Valid.valid(model);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFill(HostSshConfigModel beforeModel, HostSshConfigModel afterModel) {
|
||||
protected void updateFill(HostSshConfigModel beforeModel, HostSshConfigModel afterModel) {
|
||||
// 加密密码
|
||||
this.checkEncryptPassword(beforeModel, afterModel);
|
||||
afterModel.setHasPassword(null);
|
||||
@@ -91,14 +93,12 @@ public class HostSshConfigStrategy implements MapDataStrategy<HostSshConfigModel
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> toView(String config) {
|
||||
if (config == null) {
|
||||
return null;
|
||||
public void toView(HostSshConfigModel model) {
|
||||
if (model == null) {
|
||||
return;
|
||||
}
|
||||
HostSshConfigModel model = JSON.parseObject(config, HostSshConfigModel.class);
|
||||
model.setHasPassword(Strings.isNotBlank(model.getPassword()));
|
||||
model.setPassword(null);
|
||||
return JSON.parseObject(JSON.toJSONString(model));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.orion.visor.module.asset.handler.host.extra.strategy;
|
||||
|
||||
import com.orion.visor.framework.common.constant.Const;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.AbstractGenericsDataStrategy;
|
||||
import com.orion.visor.module.asset.handler.host.extra.model.HostLabelExtraModel;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -13,7 +13,11 @@ import org.springframework.stereotype.Component;
|
||||
* @since 2024/2/29 23:16
|
||||
*/
|
||||
@Component
|
||||
public class HostLabelExtraStrategy implements MapDataStrategy<HostLabelExtraModel> {
|
||||
public class HostLabelExtraStrategy extends AbstractGenericsDataStrategy<HostLabelExtraModel> {
|
||||
|
||||
public HostLabelExtraStrategy() {
|
||||
super(HostLabelExtraModel.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HostLabelExtraModel getDefault() {
|
||||
@@ -36,12 +40,4 @@ public class HostLabelExtraStrategy implements MapDataStrategy<HostLabelExtraMod
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preValid(HostLabelExtraModel model) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void valid(HostLabelExtraModel model) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.orion.visor.module.asset.handler.host.extra.strategy;
|
||||
|
||||
import com.orion.visor.framework.common.constant.ErrorMessage;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.AbstractGenericsDataStrategy;
|
||||
import com.orion.visor.framework.common.utils.Valid;
|
||||
import com.orion.visor.framework.security.core.utils.SecurityUtils;
|
||||
import com.orion.visor.module.asset.dao.HostIdentityDAO;
|
||||
@@ -22,7 +22,7 @@ import javax.annotation.Resource;
|
||||
* @since 2023/12/20 22:17
|
||||
*/
|
||||
@Component
|
||||
public class HostSshExtraStrategy implements MapDataStrategy<HostSshExtraModel> {
|
||||
public class HostSshExtraStrategy extends AbstractGenericsDataStrategy<HostSshExtraModel> {
|
||||
|
||||
@Resource
|
||||
private HostKeyDAO hostKeyDAO;
|
||||
@@ -33,6 +33,10 @@ public class HostSshExtraStrategy implements MapDataStrategy<HostSshExtraModel>
|
||||
@Resource
|
||||
private DataPermissionApi dataPermissionApi;
|
||||
|
||||
public HostSshExtraStrategy() {
|
||||
super(HostSshExtraModel.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HostSshExtraModel getDefault() {
|
||||
return HostSshExtraModel.builder()
|
||||
@@ -40,10 +44,6 @@ public class HostSshExtraStrategy implements MapDataStrategy<HostSshExtraModel>
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFill(HostSshExtraModel beforeModel, HostSshExtraModel afterModel) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preValid(HostSshExtraModel model) {
|
||||
HostExtraSshAuthTypeEnum authType = Valid.valid(HostExtraSshAuthTypeEnum::of, model.getAuthType());
|
||||
@@ -79,8 +79,4 @@ public class HostSshExtraStrategy implements MapDataStrategy<HostSshExtraModel>
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void valid(HostSshExtraModel model) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.orion.visor.framework.common.constant.ErrorMessage;
|
||||
import com.orion.visor.framework.common.enums.BooleanBit;
|
||||
import com.orion.visor.framework.common.enums.EnableStatus;
|
||||
import com.orion.visor.framework.common.handler.data.model.GenericsDataModel;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.GenericsDataStrategy;
|
||||
import com.orion.visor.framework.common.utils.Valid;
|
||||
import com.orion.visor.module.asset.convert.HostConfigConvert;
|
||||
import com.orion.visor.module.asset.dao.HostConfigDAO;
|
||||
@@ -53,7 +53,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
// 转换
|
||||
HostConfigVO vo = HostConfigConvert.MAPPER.to(config);
|
||||
// 获取配置
|
||||
Map<String, Object> configMap = configType.getStrategyBean().toView(config.getConfig());
|
||||
Map<String, Object> configMap = configType.toView(config.getConfig()).toMap();
|
||||
vo.setConfig(configMap);
|
||||
return vo;
|
||||
}
|
||||
@@ -121,10 +121,10 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
OperatorLogs.add(OperatorLogs.TYPE, type.getType());
|
||||
// 检查版本
|
||||
Valid.eq(record.getVersion(), request.getVersion(), ErrorMessage.DATA_MODIFIED);
|
||||
MapDataStrategy<GenericsDataModel> strategy = type.getStrategyBean();
|
||||
GenericsDataStrategy<GenericsDataModel> strategy = type.getStrategy();
|
||||
GenericsDataModel beforeConfig = type.parse(record.getConfig());
|
||||
// 更新前校验
|
||||
strategy.doValidChain(beforeConfig, newConfig);
|
||||
strategy.doValid(beforeConfig, newConfig);
|
||||
// 修改配置
|
||||
HostConfigDO update = new HostConfigDO();
|
||||
update.setId(record.getId());
|
||||
@@ -225,7 +225,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
insert.setHostId(hostId);
|
||||
insert.setType(type.getType());
|
||||
insert.setStatus(type.getDefaultStatus());
|
||||
insert.setConfig(type.getStrategyBean().getDefault().serial());
|
||||
insert.setConfig(type.getStrategy().getDefault().serial());
|
||||
insert.setVersion(Const.DEFAULT_VERSION);
|
||||
return insert;
|
||||
}
|
||||
@@ -244,7 +244,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
}
|
||||
// 转为视图
|
||||
HostConfigVO vo = HostConfigConvert.MAPPER.to(row);
|
||||
Map<String, Object> config = type.getStrategyBean().toView(row.getConfig());
|
||||
Map<String, Object> config = type.toView(row.getConfig()).toMap();
|
||||
vo.setConfig(config);
|
||||
return vo;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.orion.visor.module.asset.service.impl;
|
||||
import com.orion.lang.function.Functions;
|
||||
import com.orion.lang.utils.collect.Maps;
|
||||
import com.orion.visor.framework.common.handler.data.model.GenericsDataModel;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.visor.framework.common.handler.data.strategy.GenericsDataStrategy;
|
||||
import com.orion.visor.framework.common.utils.Valid;
|
||||
import com.orion.visor.framework.security.core.utils.SecurityUtils;
|
||||
import com.orion.visor.module.asset.entity.request.host.HostExtraQueryRequest;
|
||||
@@ -98,7 +98,7 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
Long hostId = request.getHostId();
|
||||
Long userId = SecurityUtils.getLoginUserId();
|
||||
HostExtraItemEnum item = Valid.valid(HostExtraItemEnum::of, request.getItem());
|
||||
MapDataStrategy<GenericsDataModel> strategy = item.getStrategyBean();
|
||||
GenericsDataStrategy<GenericsDataModel> strategy = item.getStrategy();
|
||||
// 查询原始配置
|
||||
DataExtraQueryDTO query = DataExtraQueryDTO.builder()
|
||||
.userId(userId)
|
||||
@@ -114,7 +114,7 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
GenericsDataModel newExtra = item.parse(request.getExtra());
|
||||
GenericsDataModel beforeExtra = item.parse(beforeExtraItem.getValue());
|
||||
// 更新验证
|
||||
strategy.doValidChain(beforeExtra, newExtra);
|
||||
strategy.doValid(beforeExtra, newExtra);
|
||||
// 更新配置
|
||||
return dataExtraApi.updateExtraValue(beforeExtraItem.getId(), newExtra.serial());
|
||||
}
|
||||
@@ -129,12 +129,11 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
* @return viewMap
|
||||
*/
|
||||
private Map<String, Object> checkItemAndToView(HostExtraItemEnum item, String extraValue, Long userId, Long hostId) {
|
||||
MapDataStrategy<GenericsDataModel> strategy = item.getStrategyBean();
|
||||
if (extraValue == null) {
|
||||
// 初始化默认数据
|
||||
extraValue = this.checkInitItem(item, userId, hostId);
|
||||
}
|
||||
return strategy.toView(extraValue);
|
||||
return item.toView(extraValue).toMap();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,7 +145,7 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
* @return defaultValue
|
||||
*/
|
||||
private String checkInitItem(HostExtraItemEnum item, Long userId, Long hostId) {
|
||||
MapDataStrategy<GenericsDataModel> strategy = item.getStrategyBean();
|
||||
GenericsDataStrategy<GenericsDataModel> strategy = item.getStrategy();
|
||||
// 初始化默认数据
|
||||
String extraValue = strategy.getDefault().serial();
|
||||
// 插入默认值
|
||||
|
||||
Reference in New Issue
Block a user