package net.sourceforge.pain.logic.event.console.command.builder; import net.sourceforge.pain.data.prototype.*; import net.sourceforge.pain.db.*; import net.sourceforge.pain.logic.fn.*; import net.sourceforge.pain.network.console.*; import net.sourceforge.pain.util.*; /** * PAiN Date: 05.06.2003 Time: 1:40:02 */ public final class BC_Show extends BuilderCommand { private static final String spacer = " "; private static String header = null; public void processBuilderCommand(BuilderShell p, String args) throws Exception { final Prototype role = p.builder.getEditedRole(); if (role == null) { MessageOutFn.outln(p.console, "No active role found!"); } else { final DbClass clazz = role.getDbClass(); final int nFields = clazz.getNumberOfFields(); if (header == null) { header = "{cName" + spacer.substring(4); header += "Type" + spacer.substring(4); header += "Value{x"; } Log.debug(header); MessageOutFn.outln(p.console, header); for (int fid = 2; fid < nFields; fid++) { //fid = 0 is Ref to Root String name = clazz.getFieldName(fid); name += addSpaces(name); final int type = clazz.getFieldType(fid); final String value; switch (type) { case DbType.BOOLEAN: value = "" + role.getBoolean(fid); break; case DbType.BYTE: value = "" + role.getByte(fid); break; case DbType.CHAR: value = "" + role.getChar(fid); break; case DbType.DOUBLE: value = "" + role.getDouble(fid); break; case DbType.FLOAT: value = "" + role.getFloat(fid); break; case DbType.INT: value = "" + role.getInt(fid); break; case DbType.LONG: value = "" + role.getLong(fid); break; case DbType.SHORT: value = "" + role.getShort(fid); break; case DbType.STRING: value = ""+role.getString(fid); break; default: value = "unparsed"; } String typeStr = DbType.name(type); typeStr += addSpaces(typeStr); MessageOutFn.outln(p.console, name + typeStr + value); } } } private String addSpaces(String value) { if (value.length() > spacer.length()) { return ""; } return spacer.substring(value.length()); } public void showHelp(Console console) { MessageOutFn.outln(console, "Builder command SHOW shows field names, field types and values for edited prototypes role"); MessageOutFn.outln(console, "Usage: show"); } }