in backup-core/src/main/java/org/apache/iotdb/backup/core/ExportStarter.java [52:102]
public Disposable start(ExportModel exportModel) {
pipeSinkList.clear();
pipeSourceList.clear();
PipelineBuilder builder = new PipelineBuilder();
String fileFloder = exportModel.getFileFolder();
if (!fileFloder.endsWith("/") && !fileFloder.endsWith("\\")) {
fileFloder += File.separator;
}
exportModel.setFileFolder(fileFloder);
File file = new File(fileFloder);
if (!file.exists()) {
file.mkdirs();
}
StringBuilder requestFilePath = new StringBuilder();
requestFilePath.append(exportModel.getFileFolder()).append("REQUEST.json");
String json = JSON.toJSONString(exportModel);
try (OutputStreamWriter out = new FileWriter(requestFilePath.toString())) {
out.write(json);
} catch (IOException e) {
e.printStackTrace();
}
if (exportModel.getNeedTimeseriesStructure()) {
PipeSink<TimeSeriesRowModel, TimeSeriesRowModel> outStructureFileSink =
new OutStructureFileSink("structure sink");
// pipeSinkList.add(outStructureFileSink);
builder
.source(new OutStructureSource("structure source"))
.channel(new StringFormatIncludeNullFieldChannel("structure channel"))
.sink(outStructureFileSink);
}
PipeSink<TimeSeriesRowModel, TimeSeriesRowModel> pipeSink = generateSink(exportModel);
pipeSinkList.add(pipeSink);
PipeSource pipeSource = generateSource(exportModel);
pipeSourceList.add(pipeSource);
pipeline =
builder
.source(pipeSource)
.channel(() -> generateChannel(exportModel))
.sink(pipeSink)
.build()
.withContext(
() -> {
PipelineContext<ExportModel> context = new PipelineContext<>();
context.setModel(exportModel);
return context;
});
return pipeline.start();
}