1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.client;
20
21 import java.util.ArrayList;
22 import java.util.List;
23 import java.util.Map;
24 import java.util.Set;
25 import java.util.TreeMap;
26
27 import org.apache.hadoop.hbase.classification.InterfaceAudience;
28 import org.apache.hadoop.hbase.HConstants;
29 import org.apache.hadoop.hbase.util.Bytes;
30
31
32
33
34
35 @InterfaceAudience.Private
36 public final class MultiAction<R> {
37
38
39
40 public Map<byte[], List<Action<R>>> actions =
41 new TreeMap<byte[], List<Action<R>>>(Bytes.BYTES_COMPARATOR);
42
43 private long nonceGroup = HConstants.NO_NONCE;
44
45 public MultiAction() {
46 super();
47 }
48
49
50
51
52
53
54 public int size() {
55 int size = 0;
56 for (List<?> l : actions.values()) {
57 size += l.size();
58 }
59 return size;
60 }
61
62
63
64
65
66
67
68
69
70 public void add(byte[] regionName, Action<R> a) {
71 List<Action<R>> rsActions = actions.get(regionName);
72 if (rsActions == null) {
73 rsActions = new ArrayList<Action<R>>();
74 actions.put(regionName, rsActions);
75 }
76 rsActions.add(a);
77 }
78
79
80
81
82
83
84
85
86
87 public void add(byte[] regionName, List<Action<R>> a) {
88 List<Action<R>> rsActions = actions.get(regionName);
89 if (rsActions == null) {
90 rsActions = new ArrayList<Action<R>>(a.size());
91 actions.put(regionName, rsActions);
92 }
93 rsActions.addAll(a);
94 }
95
96 public void setNonceGroup(long nonceGroup) {
97 this.nonceGroup = nonceGroup;
98 }
99
100 public Set<byte[]> getRegions() {
101 return actions.keySet();
102 }
103
104
105
106
107 public List<Action<R>> allActions() {
108 List<Action<R>> res = new ArrayList<Action<R>>();
109 for (List<Action<R>> lst : actions.values()) {
110 res.addAll(lst);
111 }
112 return res;
113 }
114
115 public boolean hasNonceGroup() {
116 return nonceGroup != HConstants.NO_NONCE;
117 }
118
119 public long getNonceGroup() {
120 return this.nonceGroup;
121 }
122 }