package com.opower.updater.operation;
import com.opower.updater.LayoutUpdate;
import com.opower.updater.admin.LayoutUpdateTable;
import com.opower.updater.ddl.DDLRunner;
import org.kiji.schema.KijiMetaTable;
import java.io.IOException;
/**
* Class responsible for dropping an existing table.
*
* @author felix.trepanier
*/
public class TableDeleter extends TableOperator {
private static final String DROP_TABLE_DDL = "DROP TABLE %s;";
/**
* Constructor the {@link com.opower.updater.operation.TableDeleter}.
*
* @param ddlRunner The DDLRunner used to execute DDL statements.
* @param layoutUpdateTable The layout_update table.
* @param metaTable Kiji MetaTable
*/
public TableDeleter(DDLRunner ddlRunner,
LayoutUpdateTable layoutUpdateTable,
KijiMetaTable metaTable) {
super(ddlRunner, layoutUpdateTable, metaTable);
}
/**
* Drop an existing table.
*
* @param tableName The name of the table to drop.
* @throws IOException
*/
public void dropTable(String tableName) throws IOException {
checkTableExists(tableName);
checkTableIsNotLayoutUpdateTable(tableName);
String dropTableDDL = String.format(DROP_TABLE_DDL, tableName);
ddlRunner.execute(dropTableDDL);
layoutUpdateTable.insertLayoutUpdate(tableName, createDeleteLayoutUpdate(dropTableDDL));
}
private LayoutUpdate createDeleteLayoutUpdate(String dropTableStatement) {
return LayoutUpdate.newBuilder()
.setUpdateId(null)
.setAppliedDDL(dropTableStatement)
.setChecksum("")
.setValidationFunctionVersion(0)
.build();
}
}