@Override
    public boolean execute(HbaseAdminOperation hbaseAdminOperation) {
        TableDescriptor htd = buildDescriptor();
        ColumnFamilyDescriptor[] cfDescriptors = htd.getColumnFamilies();

        TableName tableName = htd.getTableName();
        TableDescriptor currentHtd = hbaseAdminOperation.getTableDescriptor(tableName);

        // Filter existing column families as column family modification is not supported.
        // We could use modifyTable(TableDescriptor) to add column families, but this deletes existing column families
        // if they are not specified in TableDescriptor and this may be dangerous.
        // Instead, use addColumn.
        boolean changesMade = false;
        for (ColumnFamilyDescriptor cf : cfDescriptors) {
            if (!currentHtd.hasColumnFamily(cf.getName())) {
                logger.info("Adding {} to {} table.", cf, tableName);
                hbaseAdminOperation.addColumn(tableName, cf);
                changesMade = true;
            }
        }
        return changesMade;
    }
This command is solely for adding new column families to an existing table.
Modification of table and column family configuration are not supported.

@author HyunGil Jeong
hbase/hbase-schema/src/main/java/com/navercorp/pinpoint/hbase/schema/core/command/ModifyTableCommand.java