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");
}
}