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.datanode;
19
20 import com.google.common.base.Splitter;
21 import lombok.Getter;
22 import lombok.RequiredArgsConstructor;
23 import org.apache.shardingsphere.infra.datanode.DataNode;
24
25 import java.util.LinkedList;
26 import java.util.List;
27
28
29
30
31 @RequiredArgsConstructor
32 @Getter
33 public final class JobDataNodeEntry {
34
35 private final String logicTableName;
36
37 private final List<DataNode> dataNodes;
38
39
40
41
42
43
44
45 public static JobDataNodeEntry unmarshal(final String text) {
46 List<String> segments = Splitter.on(":").splitToList(text);
47 String logicTableName = segments.get(0);
48 List<DataNode> dataNodes = new LinkedList<>();
49 for (String each : Splitter.on(",").omitEmptyStrings().splitToList(segments.get(1))) {
50 dataNodes.add(DataNodeUtils.parseWithSchema(each));
51 }
52 return new JobDataNodeEntry(logicTableName, dataNodes);
53 }
54
55
56
57
58
59
60 public String marshal() {
61 StringBuilder result = new StringBuilder();
62 result.append(logicTableName).append(':');
63 for (DataNode each : dataNodes) {
64 result.append(DataNodeUtils.formatWithSchema(each)).append(',');
65 }
66 if (!dataNodes.isEmpty()) {
67 result.setLength(result.length() - 1);
68 }
69 return result.toString();
70 }
71 }