in shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryServiceImpl.java [398:452]
public ConfigImportResult importData(final List<DiscoveryDTO> discoveryList) {
if (CollectionUtils.isEmpty(discoveryList)) {
return ConfigImportResult.success();
}
Map<String, List<DiscoveryDO>> pluginDiscoveryMap = discoveryMapper
.selectAll()
.stream()
.collect(Collectors.groupingBy(DiscoveryDO::getPluginName));
int successCount = 0;
StringBuilder errorMsgBuilder = new StringBuilder();
for (DiscoveryDTO discoveryDTO : discoveryList) {
String pluginName = discoveryDTO.getPluginName();
String discoveryName = discoveryDTO.getName();
Set<String> existDiscoveryNameSet = pluginDiscoveryMap
.getOrDefault(pluginName, Lists.newArrayList())
.stream()
.map(DiscoveryDO::getName)
.collect(Collectors.toSet());
if (existDiscoveryNameSet.contains(discoveryName)) {
errorMsgBuilder
.append(discoveryName)
.append(",");
continue;
}
String discoveryId = UUIDUtils.getInstance().generateShortUuid();
discoveryDTO.setId(discoveryId);
create(discoveryDTO);
successCount++;
// import discovery handler data
if (Objects.nonNull(discoveryDTO.getDiscoveryHandler())) {
DiscoveryHandlerDO discoveryHandlerDO = DiscoveryTransfer
.INSTANCE
.mapToDO(discoveryDTO.getDiscoveryHandler());
discoveryHandlerDO.setDiscoveryId(discoveryId);
discoveryHandlerMapper.insertSelective(discoveryHandlerDO);
}
// import discovery rel data
if (Objects.nonNull(discoveryDTO.getDiscoveryRel())) {
DiscoveryRelDO discoveryRelDO = DiscoveryTransfer
.INSTANCE
.mapToDO(discoveryDTO.getDiscoveryRel());
discoveryRelMapper.insertSelective(discoveryRelDO);
}
}
if (StringUtils.isNotEmpty(errorMsgBuilder)) {
errorMsgBuilder.setLength(errorMsgBuilder.length() - 1);
return ConfigImportResult
.fail(successCount, "import fail discovery: " + errorMsgBuilder);
}
return ConfigImportResult.success(successCount);
}