package fm.liu.timo.manager.handler;
import java.util.ArrayList;
import fm.liu.timo.manager.ManagerConnection;
import fm.liu.timo.manager.parser.ManagerParseShow;
import fm.liu.timo.manager.response.ResponseUtil;
import fm.liu.timo.manager.response.ResponseUtil.Head;
import fm.liu.timo.manager.response.ShowCollation;
import fm.liu.timo.manager.response.ShowVariables;
/**
*
* @author liuhuanting
*
*/
public abstract class ShowHandler {
public abstract String getInfo();
public abstract ArrayList<Head> getHeads();
public abstract ArrayList<Object[]> getRows();
public static void handle(String stmt, ManagerConnection c, int offset) {
int rs = ManagerParseShow.parse(stmt, offset);
switch (rs & 0xff) {
case ManagerParseShow.COLLATION:
new ShowCollation().execute(c);
break;
case ManagerParseShow.VARIABLES:
new ShowVariables().execute(c);
break;
default:
String table = stmt.substring(stmt.lastIndexOf('@') + 1).trim().toLowerCase();
ShowHandler handler = DescHandler.map.get(table);
if (handler != null) {
handler.execute(c);
} else {
ResponseUtil.error(c);
}
}
}
public void execute(ManagerConnection c) {
ResponseUtil.write(c, getHeads(), getRows());
}
}