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.master.handler;
21
22 import java.io.IOException;
23 import java.util.List;
24
25 import org.apache.hadoop.hbase.HColumnDescriptor;
26 import org.apache.hadoop.hbase.HRegionInfo;
27 import org.apache.hadoop.hbase.HTableDescriptor;
28 import org.apache.hadoop.hbase.InvalidFamilyOperationException;
29 import org.apache.hadoop.hbase.Server;
30 import org.apache.hadoop.hbase.master.MasterServices;
31
32
33
34
35 public class TableAddFamilyHandler extends TableEventHandler {
36
37 private final HColumnDescriptor familyDesc;
38
39 public TableAddFamilyHandler(byte[] tableName, HColumnDescriptor familyDesc,
40 Server server, final MasterServices masterServices) throws IOException {
41 super(EventType.C_M_ADD_FAMILY, tableName, server, masterServices);
42 HTableDescriptor htd = getTableDescriptor();
43 if (htd.hasFamily(familyDesc.getName())) {
44 throw new InvalidFamilyOperationException("Family '" +
45 familyDesc.getNameAsString() + "' already exists so cannot be added");
46 }
47 this.familyDesc = familyDesc;
48 }
49
50 @Override
51 protected void handleTableOperation(List<HRegionInfo> hris)
52 throws IOException {
53
54 this.masterServices.getMasterFileSystem().addColumn(tableName, familyDesc);
55 }
56 @Override
57 public String toString() {
58 String name = "UnknownServerName";
59 if(server != null && server.getServerName() != null) {
60 name = server.getServerName().toString();
61 }
62 String family = "UnknownFamily";
63 if(familyDesc != null) {
64 family = familyDesc.getNameAsString();
65 }
66 return getClass().getSimpleName() + "-" + name + "-" +
67 getSeqid() + "-" + tableNameStr + "-" + family;
68 }
69
70 }