public ConfigImportResult importData()

in shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java [501:560]


    public ConfigImportResult importData(final String namespace, final List<SelectorDTO> selectorList, final ConfigsImportContext context) {
        if (CollectionUtils.isEmpty(selectorList)) {
            return ConfigImportResult.success();
        }
        Map<String, String> selectorIdMapping = context.getSelectorIdMapping();
        StringBuilder errorMsgBuilder = new StringBuilder();
        int successCount = 0;
        Map<String, List<SelectorDO>> pluginSelectorMap = selectorMapper.selectAllByNamespaceId(namespace).stream()
                .filter(Objects::nonNull)
                .collect(Collectors.groupingBy(SelectorDO::getPluginId));
        
        Map<String, List<SelectorDTO>> importSelectorMap = selectorList.stream()
                .collect(Collectors.groupingBy(SelectorDTO::getPluginId));
        
        for (Map.Entry<String, List<SelectorDTO>> selectorEntry : importSelectorMap.entrySet()) {
            // the import selector's pluginId
            String pluginId = context.getPluginTemplateIdMapping().get(selectorEntry.getKey());
            List<SelectorDTO> selectorDTOList = selectorEntry.getValue();
            if (CollectionUtils.isNotEmpty(selectorDTOList)) {
                
                Map<String, String> existSelectorSet = Optional
                        .ofNullable(pluginSelectorMap.get(pluginId))
                        .orElseGet(Lists::newArrayList)
                        .stream()
                        .collect(Collectors.toMap(SelectorDO::getName, SelectorDO::getId));
                
                for (SelectorDTO selectorDTO : selectorDTOList) {
                    // filter by selectorName
                    String selectorName = selectorDTO.getName();
                    if (MapUtils.isNotEmpty(existSelectorSet)
                            && existSelectorSet.containsKey(selectorName)) {
                        errorMsgBuilder
                                .append(selectorName)
                                .append(",");
                        selectorIdMapping.put(selectorDTO.getId(), existSelectorSet.get(selectorName));
                    } else {
                        // gen new id
                        String selectorId = UUIDUtils.getInstance().generateShortUuid();
                        selectorIdMapping.put(selectorDTO.getId(), selectorId);
                        selectorDTO.setId(selectorId);
                        selectorDTO.setNamespaceId(namespace);
                        selectorDTO.setPluginId(pluginId);
                        Optional.ofNullable(selectorDTO.getSelectorConditions())
                                        .orElse(Collections.emptyList()).forEach(c -> {
                                            c.setSelectorId(selectorId);
                                            c.setId(null);
                                        });
                        create(selectorDTO);
                        successCount++;
                    }
                }
            }
        }
        if (StringUtils.isNotEmpty(errorMsgBuilder)) {
            errorMsgBuilder.setLength(errorMsgBuilder.length() - 1);
            return ConfigImportResult
                    .fail(successCount, "import fail selector: " + errorMsgBuilder);
        }
        return ConfigImportResult.success(successCount);
    }