Example usage for org.springframework.integration.jdbc.config JdbcTypesEnum getCode

List of usage examples for org.springframework.integration.jdbc.config JdbcTypesEnum getCode

Introduction

In this page you can find the example usage for org.springframework.integration.jdbc.config JdbcTypesEnum getCode.

Prototype

public int getCode() 

Source Link

Document

Get the numerical representation of the JDBC Type enum.

Usage

From source file:org.springframework.integration.jdbc.config.StoredProcParserUtils.java

/**
 * @param storedProcComponent/*from w  w w  .ja v a 2s .co m*/
 * @param parserContext
 */
public static ManagedList<BeanDefinition> getSqlParameterDefinitionBeanDefinitions(Element storedProcComponent,
        ParserContext parserContext) {
    List<Element> sqlParameterDefinitionChildElements = DomUtils.getChildElementsByTagName(storedProcComponent,
            "sql-parameter-definition");
    ManagedList<BeanDefinition> sqlParameterList = new ManagedList<BeanDefinition>();

    for (Element childElement : sqlParameterDefinitionChildElements) {

        String name = childElement.getAttribute("name");
        String sqlType = childElement.getAttribute("type");
        String direction = childElement.getAttribute("direction");
        String scale = childElement.getAttribute("scale");
        String typeName = childElement.getAttribute("type-name");
        String returnType = childElement.getAttribute("return-type");

        if (StringUtils.hasText(typeName) && StringUtils.hasText(scale)) {
            parserContext.getReaderContext().error("'type-name' and 'scale' attributes are mutually exclusive "
                    + "for 'sql-parameter-definition' element.", storedProcComponent);
        }

        if (StringUtils.hasText(returnType) && StringUtils.hasText(scale)) {
            parserContext.getReaderContext().error("'returnType' and 'scale' attributes are mutually exclusive "
                    + "for 'sql-parameter-definition' element.", storedProcComponent);
        }

        final BeanDefinitionBuilder parameterBuilder;

        if ("OUT".equalsIgnoreCase(direction)) {
            parameterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SqlOutParameter.class);
        } else if ("INOUT".equalsIgnoreCase(direction)) {
            parameterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SqlInOutParameter.class);
        } else {
            parameterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SqlParameter.class);
            if (StringUtils.hasText(returnType)) {
                parserContext.getReaderContext().error("'return-type' attribute can't be provided "
                        + "for IN 'sql-parameter-definition' element.", storedProcComponent);
            }
        }

        if (StringUtils.hasText(name)) {
            parameterBuilder.addConstructorArgValue(name);
        } else {
            parserContext.getReaderContext().error(
                    "The 'name' attribute must be set for the Sql parameter element.", storedProcComponent);
        }

        if (StringUtils.hasText(sqlType)) {

            JdbcTypesEnum jdbcTypeEnum = JdbcTypesEnum.convertToJdbcTypesEnum(sqlType);

            if (jdbcTypeEnum != null) {
                parameterBuilder.addConstructorArgValue(jdbcTypeEnum.getCode());
            } else {
                parameterBuilder.addConstructorArgValue(sqlType);
            }

        } else {
            parameterBuilder.addConstructorArgValue(Types.VARCHAR);
        }

        if (StringUtils.hasText(typeName)) {
            parameterBuilder.addConstructorArgValue(typeName);
        } else if (StringUtils.hasText(scale)) {
            parameterBuilder.addConstructorArgValue(new TypedStringValue(scale, Integer.class));
        } else {
            parameterBuilder.addConstructorArgValue(null);
        }

        if (StringUtils.hasText(returnType)) {
            parameterBuilder.addConstructorArgReference(returnType);
        }

        sqlParameterList.add(parameterBuilder.getBeanDefinition());
    }
    return sqlParameterList;
}