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;
}