package com.opower.updater.admin; import com.opower.updater.admin.loader.ResourceUpdateLoader; import com.opower.updater.ddl.DDLRunner; import com.opower.updater.ddl.KijiDDLRunner; import org.kiji.schema.Kiji; import org.kiji.schema.shell.api.Client; import java.io.IOException; /** * Helper method to enforce the presence of the 'layout_update' table in the kiji instance. * * @author felix.trepanier */ public final class KijiLayoutUpdateTableUtils { private KijiLayoutUpdateTableUtils() { } /** * Create the layout_update table if it does not exist. * * @param kiji The kiji instance. * @return Returns true if the table was created, false otherwise. * @throws IOException */ public static boolean ensureLayoutUpdateTableExists(Kiji kiji) throws IOException { if (!kiji.getMetaTable().tableExists(LayoutUpdateTable.TABLE_NAME)) { Client client = Client.newInstance(kiji.getURI()); try { Update initialUpdate = ResourceUpdateLoader.DEFAULT.loadCreateTable(LayoutUpdateTable.TABLE_NAME); DDLRunner runner = new KijiDDLRunner(client); LayoutUpdateTableCreator creator = new LayoutUpdateTableCreator(runner, kiji); creator.createLayoutUpdateTable(initialUpdate); } finally { client.close(); } return true; } else { return false; } } }