private DwNode convertIdeFileToNode()

in client/migrationx/migrationx-transformer/src/main/java/com/aliyun/dataworks/migrationx/transformer/dataworks/converter/ide/IdeExportProjectConverter.java [267:379]


    private DwNode convertIdeFileToNode(IdeFile ideFile) {
        LOGGER.debug("ideFile: {}", ideFile);
        DwNode node = new DwNode();
        node.setDmMajorVersion(project.getDmMajorVersion());
        node.setName(ideFile.getFileName());
        CodeProgramType type = CodeProgramType.getNodeTypeByCode(ideFile.getFileType());
        if (type == null) {
            node.setType(CodeProgramType.VIRTUAL.name());
            ReportItem reportItem = new ReportItem();
            reportItem.setName(ideFile.getFileName());
            reportItem.setType(ReportItemType.UNSUPPORTED_JOB_TYPE.name());
            reportItem.setMessage("set node as default virtual type: " + CodeProgramType.VIRTUAL.name());
            reportItems.add(reportItem);
        } else {
            node.setType(type.name());
        }
        node.setCode(ideFile.getContent());
        if (CollectionUtils.isNotEmpty(ideFile.getFileRelations())) {
            node.setFileRelations(GsonUtils.gson.toJson(ideFile.getFileRelations()));
        }

        // for node def
        if (ideFile.getNodeDef() != null) {
            node.setPauseSchedule(ideFile.getNodeDef().getIsStop() != null && ideFile.getNodeDef().getIsStop() == 1);
            node.setStartRightNow(ideFile.getNodeDef().getStartRightNow());
            node.setCronExpress(ideFile.getNodeDef().getCronExpress());
            node.setParameter(ideFile.getNodeDef().getParaValue());
            if (ideFile.getNodeDef().getReRunAble() == null) {
                node.setRerunMode(RerunMode.ALL_ALLOWED);
            } else {
                node.setRerunMode(RerunMode.getByValue(ideFile.getNodeDef().getReRunAble()));
            }
            node.setResourceGroup(ideFile.getNodeDef().getResgroupId());
            node.setCycleType(ideFile.getNodeDef().getCycleType());
            node.setLastModifyTime(ideFile.getNodeDef().getLastModifyTime());
            node.setLastModifyUser(ideFile.getNodeDef().getLastModifyUser());
            node.setMultiInstCheckType(ideFile.getNodeDef().getMultiinstCheckType());
            node.setPriority(ideFile.getNodeDef().getPriority());
            node.setDependentType(ideFile.getNodeDef().getDependentType());
            node.setStartEffectDate(ideFile.getNodeDef().getStartEffectDate());
            node.setEndEffectDate(ideFile.getNodeDef().getEndEffectDate());
            node.setTaskRerunInterval(ideFile.getNodeDef().getTaskRerunInterval());
            node.setTaskRerunTime(ideFile.getNodeDef().getTaskRerunTime());
            node.setDependentDataNode(ideFile.getNodeDef().getDependentDataNode());
            Type typeToken = new TypeToken<List<IdeNodeInputOutput>>() {}.getType();
            List<IdeNodeInputOutput> nodeDefIos = new ArrayList<>();
            if (StringUtils.isNotBlank(ideFile.getNodeDef().getInput())) {
                List<IdeNodeInputOutput> inputs = GsonUtils.gson.fromJson(ideFile.getNodeDef().getInput(), typeToken);
                if (CollectionUtils.isNotEmpty(inputs)) {
                    inputs.stream().forEach(i -> i.setType(0));
                    nodeDefIos.addAll(inputs);
                }
            }

            if (StringUtils.isNotBlank(ideFile.getNodeDef().getOutput())) {
                List<IdeNodeInputOutput> outputs = GsonUtils.gson.fromJson(ideFile.getNodeDef().getOutput(), typeToken);
                if (CollectionUtils.isNotEmpty(outputs)) {
                    outputs.stream().forEach(o -> o.setType(1));
                    nodeDefIos.addAll(outputs);
                }
            }
            ideFile.setNodeInputOutputs(ListUtils.emptyIfNull(ideFile.getNodeInputOutputs()));
            nodeDefIos.stream().forEach(nodeDefIo -> {
                if (!ideFile.getNodeInputOutputs().stream()
                        .filter(io -> io.getType() != null && io.getStr() != null)
                        .anyMatch(io -> io.getType().equals(nodeDefIo.getType()) && io.getStr()
                                .equalsIgnoreCase(nodeDefIo.getStr()))) {
                    ideFile.getNodeInputOutputs().add(nodeDefIo);
                }
            });
        }
        LOGGER.debug("ideFile: {}", ideFile);
        node.setInputs(ListUtils.emptyIfNull(ideFile.getNodeInputOutputs()).stream()
                .filter(io -> Integer.valueOf(0).equals(io.getType()))
                .map(io -> convertIdeNodeInputOutput(io))
                .collect(Collectors.toList()));
        node.setOutputs(ListUtils.emptyIfNull(ideFile.getNodeInputOutputs()).stream()
                .filter(io -> Integer.valueOf(1).equals(io.getType()))
                .map(io -> convertIdeNodeInputOutput(io))
                .collect(Collectors.toList()));

        LOGGER.debug("node: {}", node);
        node.getInputs().stream().forEach(nodeIo -> convertIoStr(node, nodeIo));
        node.getOutputs().stream().forEach(nodeIo -> convertIoStr(node, nodeIo));
        node.setOwner(ideFile.getOwner());

        node.setExtend(ideFile.getExtend());
        node.setFileDelete(ideFile.getFileDelete());
        node.setIsAutoParse(ideFile.getIsAutoParse());
        node.setCommitStatus(ideFile.getCommitStatus());
        node.setIsUserNode(ideFile.getIsUserNode());
        node.setSourcePath(ideFile.getSourcePath());
        node.setFolder(ideFile.getFolderPath());
        node.setNodeUseType(NodeUseType.getNodeUseTypeByValue(ideFile.getUseType()));
        node.setConnection(ideFile.getConnName());

        node.setInputContexts(CollectionUtils.emptyIfNull(ideFile.getNodeInputOutputContexts()).stream()
                .filter(io -> Integer.valueOf(0).equals(io.getType()))
                .map(io -> {
                    NodeContext ctx = new NodeContext();
                    com.aliyun.migrationx.common.utils.BeanUtils.copyProperties(io, ctx);
                    return ctx;
                }).collect(Collectors.toList()));
        node.setOutputContexts(CollectionUtils.emptyIfNull(ideFile.getNodeInputOutputContexts()).stream()
                .filter(io -> Integer.valueOf(1).equals(io.getType()))
                .map(io -> {
                    NodeContext ctx = new NodeContext();
                    BeanUtils.copyProperties(io, ctx);
                    return ctx;
                }).collect(Collectors.toList()));
        NodeUtils.parseNodeDiResGroupInfo(node);
        return node;
    }