/
codebase/src/net/sourceforge/pain/admin/console/command/
codebase/src/net/sourceforge/pain/data/role/
codebase/src/net/sourceforge/pain/network/console/telnet/
codebase/src/net/sourceforge/pain/network/guitool/
codebase/src/net/sourceforge/pain/plugin/
codebase/src/net/sourceforge/pain/util/
db/src/net/sourceforge/pain/util/
gui/
gui/lib/
gui/src/net/sourceforge/pain/tools/guitool/dbbrowse/
gui/src/net/sourceforge/pain/tools/guitool/dialog/
gui/src/net/sourceforge/pain/tools/guitool/menu/
gui/src/net/sourceforge/pain/tools/guitool/resources/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/explorer/
mudlibs/tinylib/
mudlibs/tinylib/area/
mudlibs/tinylib/etc/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/data/affect/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/data/prototype/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/data/trigger/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/affect/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/deploy/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/guitool/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/guitool/event/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/fn/util/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/trigger/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/trigger/impl/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/command/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/reset/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/shutdown/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/social/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/util/
tests/
tests/src/
tests/src/net/sourceforge/pain/db/data/
package net.sourceforge.pain.tools.guitool.dbbrowse;

import net.sourceforge.pain.db.*;

/**
 * User: fmike  Date: Feb 24, 2004  Time: 1:20:06 AM
 */
public class FieldInfo {
    String name;
    int type;
    Object value;
    boolean detailedView = false;

    public FieldInfo(String name, int type, Object value) {
        this.name = name;
        this.type = type;
        this.value = value;
    }

    public String getTypeName() {
        return DbType.name(type);
    }

    public int getValueArrLength() {
        if (value == null) {
            return 0;
        }
        if (type == DbType.ARRAY_OF_BYTE) {
            return ((byte[]) value).length;
        } else if (type == DbType.ARRAY_OF_CHAR) {
            return ((char[]) value).length;
        } else if (type == DbType.ARRAY_OF_INT) {
            return ((int[]) value).length;
        } else if (type == DbType.ARRAY_OF_STRING) {
            return ((String[]) value).length;
        }
        throw new RuntimeException("not array!");
    }

    public boolean isArray() {
        return DbType.isArray(type);
    }

    public String getValueArrElement(int i) {
        if (type == DbType.ARRAY_OF_BYTE) {
            return "" + ((byte[]) value)[i];
        } else if (type == DbType.ARRAY_OF_CHAR) {
            return "" + ((char[]) value)[i];
        } else if (type == DbType.ARRAY_OF_INT) {
            return "" + ((int[]) value)[i];
        } else if (type == DbType.ARRAY_OF_STRING) {
            return "" + ((String[]) value)[i];
        }
        throw new RuntimeException("not array!");
    }

    public Object getCollectionElement1(int i) {
        Object[] v = (Object[]) value;
        if (type == DbType.REFERENCE_SET || type == DbType.STRING_SET || type == DbType.LINKED_LIST || type == DbType.ARRAY_LIST) {
              return  v[i];
        } else {
            return  ((Object[]) v[0])[i];
        }
    }

    public Object getCollectionElement2(int i) {
        Object[] v = (Object[]) value;
        if (type == DbType.REFERENCE_SET || type == DbType.STRING_SET || type == DbType.LINKED_LIST || type == DbType.ARRAY_LIST) {
            return  v[i];
        } else {
            return ((Object[]) v[1])[i];
        }
    }

    public int getValueCollectionLength() {
        if (value == null) {
            return 0;
        }
        if (type == DbType.REFERENCE_SET || type == DbType.STRING_SET || type == DbType.LINKED_LIST || type == DbType.ARRAY_LIST) {
            return ((Object[]) value).length;
        } else {
            return ((Object[]) ((Object[]) value)[0]).length;
        }
    }

    public boolean isCollection() {
        return DbType.isCollection(type);
    }


}