1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.data.pipeline.core.job.progress.yaml.swapper;
19
20 import org.apache.shardingsphere.data.pipeline.core.job.progress.JobItemIncrementalTasksProgress;
21 import org.apache.shardingsphere.data.pipeline.core.job.progress.yaml.config.YamlJobItemIncrementalTasksProgress;
22 import org.apache.shardingsphere.data.pipeline.core.task.progress.IncrementalTaskProgress;
23 import org.apache.shardingsphere.data.pipeline.core.ingest.position.DialectIngestPositionManager;
24 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
25 import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
26 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
27
28
29
30
31 public final class YamlJobItemIncrementalTasksProgressSwapper {
32
33
34
35
36
37
38
39 public YamlJobItemIncrementalTasksProgress swapToYaml(final JobItemIncrementalTasksProgress progress) {
40 if (null == progress) {
41 return new YamlJobItemIncrementalTasksProgress();
42 }
43 IncrementalTaskProgress incrementalTaskProgress = progress.getIncrementalTaskProgress();
44 if (null == incrementalTaskProgress) {
45 return new YamlJobItemIncrementalTasksProgress();
46 }
47 YamlJobItemIncrementalTasksProgress result = new YamlJobItemIncrementalTasksProgress();
48 result.setPosition(progress.getIncrementalTaskProgress().getPosition().toString());
49 result.setDelay(progress.getIncrementalTaskProgress().getIncrementalTaskDelay());
50 return result;
51 }
52
53
54
55
56
57
58
59
60 public JobItemIncrementalTasksProgress swapToObject(final String databaseType, final YamlJobItemIncrementalTasksProgress yamlProgress) {
61 if (null == yamlProgress) {
62 return new JobItemIncrementalTasksProgress(null);
63 }
64
65 DialectIngestPositionManager positionInitializer = DatabaseTypedSPILoader.getService(DialectIngestPositionManager.class, TypedSPILoader.getService(DatabaseType.class, databaseType));
66 IncrementalTaskProgress taskProgress = new IncrementalTaskProgress(positionInitializer.init(yamlProgress.getPosition()));
67 taskProgress.setIncrementalTaskDelay(yamlProgress.getDelay());
68 return new JobItemIncrementalTasksProgress(taskProgress);
69 }
70 }