protected Object getObjectInternal()

in openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java [423:530]


    protected Object getObjectInternal(Object obj, int metaTypeCode, Object arg, Joins joins)
        throws SQLException {
        if (metaTypeCode == -1 && obj instanceof Column)
            metaTypeCode = ((Column) obj).getJavaType();

        boolean isClob = (obj instanceof Column) ? ((Column) obj).getType() == Types.CLOB && !((Column) obj).isXML()
                : false;
        obj = translate(obj, joins);

        Object val = null;
        switch (metaTypeCode) {
            case JavaTypes.BOOLEAN:
            case JavaTypes.BOOLEAN_OBJ:
                val = (getBooleanInternal(obj, joins)) ? Boolean.TRUE
                    : Boolean.FALSE;
                break;
            case JavaTypes.BYTE:
            case JavaTypes.BYTE_OBJ:
                val = getByteInternal(obj, joins);
                break;
            case JavaTypes.CHAR:
            case JavaTypes.CHAR_OBJ:
                val = getCharInternal(obj, joins);
                break;
            case JavaTypes.DOUBLE:
            case JavaTypes.DOUBLE_OBJ:
                val = getDoubleInternal(obj, joins);
                break;
            case JavaTypes.FLOAT:
            case JavaTypes.FLOAT_OBJ:
                val = getFloatInternal(obj, joins);
                break;
            case JavaTypes.INT:
            case JavaTypes.INT_OBJ:
                val = getIntInternal(obj, joins);
                break;
            case JavaTypes.LONG:
            case JavaTypes.LONG_OBJ:
                val = getLongInternal(obj, joins);
                break;
            case JavaTypes.SHORT:
            case JavaTypes.SHORT_OBJ:
                val = getShortInternal(obj, joins);
                break;
            case JavaTypes.STRING:
                return getStringInternal(obj, joins, isClob);
            case JavaTypes.OBJECT:
                return _dict
                    .getBlobObject(_rs, ((Number) obj).intValue(), _store);
            case JavaTypes.DATE:
                return getDateInternal(obj, joins);
            case JavaTypes.CALENDAR:
                return getCalendarInternal(obj, joins);
            case JavaTypes.LOCAL_DATE:
                return getLocalDateInternal(obj, joins);
            case JavaTypes.LOCAL_TIME:
                return getLocalTimeInternal(obj, joins);
            case JavaTypes.LOCAL_DATETIME:
                return getLocalDateTimeInternal(obj, joins);
            case JavaTypes.OFFSET_TIME:
                return getOffsetTimeInternal(obj, joins);
            case JavaTypes.OFFSET_DATETIME:
                return getOffsetDateTimeInternal(obj, joins);
            case JavaTypes.BIGDECIMAL:
                return getBigDecimalInternal(obj, joins);
            case JavaTypes.NUMBER:
                return getNumberInternal(obj, joins);
            case JavaTypes.BIGINTEGER:
                return getBigIntegerInternal(obj, joins);
            case JavaTypes.LOCALE:
                return getLocaleInternal(obj, joins);
            case JavaSQLTypes.SQL_ARRAY:
                return getArrayInternal(obj, joins);
            case JavaSQLTypes.ASCII_STREAM:
                return getAsciiStreamInternal(obj, joins);
            case JavaSQLTypes.BINARY_STREAM:
                return getBinaryStreamInternal(obj, joins);
            case JavaSQLTypes.BLOB:
                return getBlobInternal(obj, joins);
            case JavaSQLTypes.BYTES:
                return getBytesInternal(obj, joins);
            case JavaSQLTypes.CHAR_STREAM:
                return getCharacterStreamInternal(obj, joins);
            case JavaSQLTypes.CLOB:
                return getClobInternal(obj, joins);
            case JavaSQLTypes.SQL_DATE:
                return getDateInternal(obj, (Calendar) arg, joins);
            case JavaSQLTypes.SQL_OBJECT:
                return getSQLObjectInternal(obj, (Map) arg, joins);
            case JavaSQLTypes.REF:
                return getRefInternal(obj, (Map) arg, joins);
            case JavaSQLTypes.TIME:
                return getTimeInternal(obj, (Calendar) arg, joins);
            case JavaSQLTypes.TIMESTAMP:
                return getTimestampInternal(obj, (Calendar) arg, joins);
            default:
                if (obj instanceof Column) {
                    Column col = (Column) obj;
                    if (col.getType() == Types.BLOB
                        || col.getType() == Types.VARBINARY) {
                        return _dict
                            .getBlobObject(_rs, col.getIndex(), _store);
                    }
                }
                return _dict.getObject(_rs, ((Number) obj).intValue(), null);
        }
        return (_rs.wasNull()) ? null : val;
    }