/** * Returns the {@link GridType} representing the {@link Type}. * * @param type the Type that needs conversion * * @return the corresponding GridType */ public GridType convert(Type type) { if ( type instanceof CustomType ) { CustomType customType = (CustomType) type; if ( customType.getUserType() instanceof EnumType ) { EnumType enumType = (EnumType) customType.getUserType(); return ( new RedisHashEnumType( customType, enumType ) ); } } if ( type instanceof SerializableToBlobType ) { return new SerializableAsStringType( ( (SerializableToBlobType) type ).getJavaTypeDescriptor() ); } return conversionMap.get( type ); }
public RedisHashEnumType(CustomType customType, org.hibernate.type.EnumType enumType) { super( customType, enumType ); }
/** * Extract the value from the result set (which is assumed to already have been positioned to the apopriate row) * and wrp it in the appropriate Java numeric type. * * @param rs The result set from which to extract the value. * @param identifier The name of the identifier column * @param type The expected type of the value. * * @return The extracted value. * * @throws SQLException Indicates problems access the result set * @throws IdentifierGenerationException Indicates an unknown type. */ public static Serializable get(ResultSet rs, String identifier, Type type) throws SQLException, IdentifierGenerationException { if ( ResultSetIdentifierConsumer.class.isInstance( type ) ) { return ( ( ResultSetIdentifierConsumer ) type ).consumeIdentifier( rs ); } if ( CustomType.class.isInstance( type ) ) { final CustomType customType = (CustomType) type; if ( ResultSetIdentifierConsumer.class.isInstance( customType.getUserType() ) ) { return ( (ResultSetIdentifierConsumer) customType.getUserType() ).consumeIdentifier( rs ); } } Class clazz = type.getReturnedClass(); if (rs.getMetaData().getColumnCount() == 1) { if ( clazz == Long.class ) { return rs.getLong( 1 ); } else if ( clazz == Integer.class ) { return rs.getInt( 1 ); } else if ( clazz == Short.class ) { return rs.getShort( 1 ); } else if ( clazz == String.class ) { return rs.getString( 1 ); } else if ( clazz == BigInteger.class ) { return rs.getBigDecimal( 1 ).setScale( 0, BigDecimal.ROUND_UNNECESSARY ).toBigInteger(); } else if ( clazz == BigDecimal.class ) { return rs.getBigDecimal( 1 ).setScale( 0, BigDecimal.ROUND_UNNECESSARY ); } else { throw new IdentifierGenerationException( "unrecognized id type : " + type.getName() + " -> " + clazz.getName() ); } } else { if ( clazz == Long.class ) { return rs.getLong(identifier); } else if ( clazz == Integer.class ) { return rs.getInt(identifier); } else if ( clazz == Short.class ) { return rs.getShort(identifier); } else if ( clazz == String.class ) { return rs.getString(identifier); } else if ( clazz == BigInteger.class ) { return rs.getBigDecimal(identifier).setScale( 0, BigDecimal.ROUND_UNNECESSARY ).toBigInteger(); } else if ( clazz == BigDecimal.class ) { return rs.getBigDecimal(identifier).setScale( 0, BigDecimal.ROUND_UNNECESSARY ); } else { throw new IdentifierGenerationException( "unrecognized id type : " + type.getName() + " -> " + clazz.getName() ); } } }