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.XmlElementRef;
28 import javax.xml.bind.annotation.XmlRootElement;
29
30 import org.apache.hadoop.hbase.classification.InterfaceAudience;
31 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
32 import org.apache.hadoop.hbase.rest.ProtobufMessageHandler;
33 import org.apache.hadoop.hbase.rest.protobuf.generated.TableListMessage.TableList;
34
35
36
37
38 @XmlRootElement(name="TableList")
39 @InterfaceAudience.Private
40 public class TableListModel implements Serializable, ProtobufMessageHandler {
41
42 private static final long serialVersionUID = 1L;
43
44 private List<TableModel> tables = new ArrayList<TableModel>();
45
46
47
48
49 public TableListModel() {}
50
51
52
53
54
55 public void add(TableModel table) {
56 tables.add(table);
57 }
58
59
60
61
62
63 public TableModel get(int index) {
64 return tables.get(index);
65 }
66
67
68
69
70 @XmlElementRef(name="table")
71 public List<TableModel> getTables() {
72 return tables;
73 }
74
75
76
77
78 public void setTables(List<TableModel> tables) {
79 this.tables = tables;
80 }
81
82
83
84
85 @Override
86 public String toString() {
87 StringBuilder sb = new StringBuilder();
88 for(TableModel aTable : tables) {
89 sb.append(aTable.toString());
90 sb.append('\n');
91 }
92 return sb.toString();
93 }
94
95 @Override
96 public byte[] createProtobufOutput() {
97 TableList.Builder builder = TableList.newBuilder();
98 for (TableModel aTable : tables) {
99 builder.addName(aTable.getName());
100 }
101 return builder.build().toByteArray();
102 }
103
104 @Override
105 public ProtobufMessageHandler getObjectFromMessage(byte[] message)
106 throws IOException {
107 TableList.Builder builder = TableList.newBuilder();
108 ProtobufUtil.mergeFrom(builder, message);
109 for (String table: builder.getNameList()) {
110 this.add(new TableModel(table));
111 }
112 return this;
113 }
114 }