public ConfigImportResult importData()

in shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryServiceImpl.java [456:521]


    public ConfigImportResult importData(final String namespace, final List<DiscoveryDTO> discoveryList, final ConfigsImportContext context) {
        if (CollectionUtils.isEmpty(discoveryList)) {
            return ConfigImportResult.success();
        }
        Map<String, String> discoveryHandlerIdMapping = context.getDiscoveryHandlerIdMapping();
        Map<String, List<DiscoveryDO>> pluginDiscoveryMap = discoveryMapper
                .selectAllByNamespaceId(namespace)
                .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);
            discoveryDTO.setNamespaceId(namespace);
            create(discoveryDTO);
            successCount++;
            
            // import discovery handler data
            String discoveryHandlerId = null;
            if (Objects.nonNull(discoveryDTO.getDiscoveryHandler())) {
                DiscoveryHandlerDO discoveryHandlerDO = DiscoveryTransfer
                        .INSTANCE
                        .mapToDO(discoveryDTO.getDiscoveryHandler());
                discoveryHandlerDO.setDiscoveryId(discoveryId);
                discoveryHandlerId = UUIDUtils.getInstance().generateShortUuid();
                discoveryHandlerIdMapping.put(discoveryHandlerDO.getId(), discoveryHandlerId);
                discoveryHandlerDO.setId(discoveryHandlerId);
                discoveryHandlerMapper.insertSelective(discoveryHandlerDO);
            }
            
            // import discovery rel data
            if (Objects.nonNull(discoveryDTO.getDiscoveryRel())) {
                DiscoveryRelDO discoveryRelDO = DiscoveryTransfer
                        .INSTANCE
                        .mapToDO(discoveryDTO.getDiscoveryRel());
                discoveryRelDO.setDiscoveryHandlerId(discoveryHandlerId);
                Optional.ofNullable(discoveryRelDO.getSelectorId())
                                .ifPresent(selectorId -> discoveryRelDO.setSelectorId(context.getSelectorIdMapping().get(selectorId)));
                Optional.ofNullable(discoveryRelDO.getProxySelectorId())
                        .ifPresent(proxySelectorId -> discoveryRelDO.setProxySelectorId(context.getProxySelectorIdMapping().get(proxySelectorId)));
                discoveryRelDO.setId(UUIDUtils.getInstance().generateShortUuid());
                discoveryRelMapper.insertSelective(discoveryRelDO);
            }
        }
        
        if (StringUtils.isNotEmpty(errorMsgBuilder)) {
            errorMsgBuilder.setLength(errorMsgBuilder.length() - 1);
            return ConfigImportResult
                    .fail(successCount, "import fail discovery: " + errorMsgBuilder);
        }
        return ConfigImportResult.success(successCount);
    }