@Override
    public final Class<?> findJdbcType(Map<String, Class<?>> sqlTypeMapping, ColumnMetaData md) {
        // Firstly, check if we have any rule for this type.
        final Optional<Class<?>> ruled = rules.stream()
            .map(r -> r.findJdbcType(sqlTypeMapping, md))
            .filter(Optional::isPresent)
            .map(Optional::get)
            .findFirst();
        
        if (ruled.isPresent()) {
            return ruled.get();
        } else {
            // Secondly, try  md.getTypeName()
            final String typeName = md.getTypeName();
            final Class<?> innerType = inner.get(typeName);
            if (innerType != null) return innerType;

            Class<?> result = sqlTypeMapping.get(typeName);
            if (result == null) {

                // Type (int) according to java.sql.Types (e.g. 4) that
                // we got from the ColumnMetaData
                final int type = md.getDataType();

                // Variable name (String) according to java.sql.Types (e.g. INTEGER)
                final Optional<String> oTypeName = TypeInfoMetaData.lookupJavaSqlType(type);
                if (oTypeName.isPresent()) {
                    final String typeName2 = oTypeName.get();
                    // Thirdly, try the corresponding name using md.getDataType()
                    // and then lookup java.sql.Types name
                    result = sqlTypeMapping.get(typeName2);
                }
            }

            return result;
        }
    }
Sets up the java type map for this database type

@param installer  the installer
@see <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/mapping.html">Official Mappings</a>
runtime-parent/runtime-core/src/main/java/com/speedment/runtime/core/internal/db/JavaTypeMapImpl.java