1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.rest.model;
21
22 import java.io.IOException;
23 import java.io.Serializable;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import javax.xml.bind.annotation.XmlAttribute;
28 import javax.xml.bind.annotation.XmlElement;
29 import javax.xml.bind.annotation.XmlRootElement;
30
31 import org.apache.hadoop.hbase.util.ByteStringer;
32 import org.apache.hadoop.hbase.classification.InterfaceAudience;
33 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
34 import org.apache.hadoop.hbase.rest.ProtobufMessageHandler;
35 import org.apache.hadoop.hbase.rest.protobuf.generated.TableInfoMessage.TableInfo;
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 @XmlRootElement(name="TableInfo")
51 @InterfaceAudience.Private
52 public class TableInfoModel implements Serializable, ProtobufMessageHandler {
53 private static final long serialVersionUID = 1L;
54
55 private String name;
56 private List<TableRegionModel> regions = new ArrayList<TableRegionModel>();
57
58
59
60
61 public TableInfoModel() {}
62
63
64
65
66
67 public TableInfoModel(String name) {
68 this.name = name;
69 }
70
71
72
73
74
75 public void add(TableRegionModel region) {
76 regions.add(region);
77 }
78
79
80
81
82
83 public TableRegionModel get(int index) {
84 return regions.get(index);
85 }
86
87
88
89
90 @XmlAttribute
91 public String getName() {
92 return name;
93 }
94
95
96
97
98 @XmlElement(name="Region")
99 public List<TableRegionModel> getRegions() {
100 return regions;
101 }
102
103
104
105
106 public void setName(String name) {
107 this.name = name;
108 }
109
110
111
112
113 public void setRegions(List<TableRegionModel> regions) {
114 this.regions = regions;
115 }
116
117
118
119
120 @Override
121 public String toString() {
122 StringBuilder sb = new StringBuilder();
123 for(TableRegionModel aRegion : regions) {
124 sb.append(aRegion.toString());
125 sb.append('\n');
126 }
127 return sb.toString();
128 }
129
130 @Override
131 public byte[] createProtobufOutput() {
132 TableInfo.Builder builder = TableInfo.newBuilder();
133 builder.setName(name);
134 for (TableRegionModel aRegion: regions) {
135 TableInfo.Region.Builder regionBuilder = TableInfo.Region.newBuilder();
136 regionBuilder.setName(aRegion.getName());
137 regionBuilder.setId(aRegion.getId());
138 regionBuilder.setStartKey(ByteStringer.wrap(aRegion.getStartKey()));
139 regionBuilder.setEndKey(ByteStringer.wrap(aRegion.getEndKey()));
140 regionBuilder.setLocation(aRegion.getLocation());
141 builder.addRegions(regionBuilder);
142 }
143 return builder.build().toByteArray();
144 }
145
146 @Override
147 public ProtobufMessageHandler getObjectFromMessage(byte[] message)
148 throws IOException {
149 TableInfo.Builder builder = TableInfo.newBuilder();
150 ProtobufUtil.mergeFrom(builder, message);
151 setName(builder.getName());
152 for (TableInfo.Region region: builder.getRegionsList()) {
153 add(new TableRegionModel(builder.getName(), region.getId(),
154 region.getStartKey().toByteArray(),
155 region.getEndKey().toByteArray(),
156 region.getLocation()));
157 }
158 return this;
159 }
160 }