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.ingest.dumper.inventory;
19
20 import lombok.Getter;
21 import lombok.Setter;
22 import lombok.ToString;
23 import org.apache.shardingsphere.data.pipeline.core.ingest.dumper.DumperCommonContext;
24 import org.apache.shardingsphere.data.pipeline.core.metadata.model.PipelineColumnMetaData;
25 import org.apache.shardingsphere.data.pipeline.core.ratelimit.JobRateLimitAlgorithm;
26 import org.apache.shardingsphere.infra.metadata.identifier.ShardingSphereIdentifier;
27
28 import java.util.Collections;
29 import java.util.List;
30 import java.util.Optional;
31 import java.util.stream.Collectors;
32
33
34
35
36 @Getter
37 @Setter
38 @ToString
39 public final class InventoryDumperContext {
40
41 private final DumperCommonContext commonContext;
42
43 private String actualTableName;
44
45 private String logicTableName;
46
47 private List<PipelineColumnMetaData> uniqueKeyColumns;
48
49 private List<ShardingSphereIdentifier> targetUniqueKeysNames;
50
51 private List<String> insertColumnNames;
52
53 private int shardingItem;
54
55 private int batchSize = 1000;
56
57 private JobRateLimitAlgorithm rateLimitAlgorithm;
58
59 public InventoryDumperContext(final DumperCommonContext commonContext) {
60 this.commonContext = new DumperCommonContext(
61 commonContext.getDataSourceName(), commonContext.getDataSourceConfig(), commonContext.getTableNameMapper(), commonContext.getTableAndSchemaNameMapper());
62 }
63
64
65
66
67
68
69 public void setUniqueKeyColumns(final List<PipelineColumnMetaData> uniqueKeyColumns) {
70 this.uniqueKeyColumns = uniqueKeyColumns;
71 targetUniqueKeysNames = hasUniqueKey()
72 ? uniqueKeyColumns.stream().map(each -> new ShardingSphereIdentifier(each.getName())).collect(Collectors.toList())
73 : Collections.emptyList();
74 }
75
76
77
78
79
80
81 public boolean hasUniqueKey() {
82 return null != uniqueKeyColumns && !uniqueKeyColumns.isEmpty();
83 }
84
85
86
87
88
89
90 public List<String> getQueryColumnNames() {
91 return Optional.ofNullable(insertColumnNames).orElse(Collections.singletonList("*"));
92 }
93 }