private static void verifyIsRecordTable(HTableDescriptor htableDescriptor) { if (!isRecordTableDescriptor(htableDescriptor)) { throw new IllegalArgumentException(htableDescriptor.getNameAsString() + " is not a valid record table"); } }
public Map<String, byte[]> getDefaultTimestampReusingTables() { Map<String, byte[]> defaultTables = Maps.newHashMap(DEFAULT_TIMESTAMP_REUSING_TABLES); try { HBaseAdmin hbaseAdmin = new HBaseAdmin(conf); HTableDescriptor[] descriptors = hbaseAdmin.listTables(); hbaseAdmin.close(); if (descriptors != null) { for (HTableDescriptor descriptor : descriptors) { if (LilyHBaseSchema.isRecordTableDescriptor(descriptor)) { defaultTables.put(descriptor.getNameAsString(), Bytes.toBytes("data")); } } } } catch (Exception e) { throw new RuntimeException("Error listing repository tables", e); } return Collections.unmodifiableMap(defaultTables); }
@Override public void dropTable(String tableName) throws InterruptedException, IOException { if (Table.RECORD.name.equals(tableName)) { throw new IllegalArgumentException("Can't delete the default record table"); } HBaseAdmin hbaseAdmin = new HBaseAdmin(configuration); String hbaseTableName = RepoAndTableUtil.getHBaseTableName(repositoryName, tableName); try { if (hbaseAdmin.tableExists(hbaseTableName) && LilyHBaseSchema.isRecordTableDescriptor(hbaseAdmin.getTableDescriptor(Bytes.toBytes(hbaseTableName)))) { hbaseAdmin.disableTable(hbaseTableName); hbaseAdmin.deleteTable(hbaseTableName); } else { throw new IllegalArgumentException( String.format("Table '%s' is not a valid record table (HBase table name: '%s')", tableName, hbaseTableName)); } } finally { hbaseAdmin.close(); } }
@Override public List<RepositoryTable> getTables() throws InterruptedException, IOException { HBaseAdmin hbaseAdmin = new HBaseAdmin(configuration); List<RepositoryTable> recordTables = Lists.newArrayList(); try { for (HTableDescriptor tableDescriptor : hbaseAdmin.listTables()) { if (LilyHBaseSchema.isRecordTableDescriptor(tableDescriptor) && RepoAndTableUtil.belongsToRepository(tableDescriptor.getNameAsString(), repositoryName)) { String name = RepoAndTableUtil.extractLilyTableName(repositoryName, tableDescriptor.getNameAsString()); recordTables.add(new RepositoryTableImpl(repositoryName, name)); } } } finally { hbaseAdmin.close(); } return recordTables; }