All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.simpleflatmapper.sql2o.SfmResultSetHandlerFactoryBuilder Maven / Gradle / Ivy

Go to download

Java library to map flat record - ResultSet, csv - to java object with minimum configuration and low footprint.

There is a newer version: 8.2.3
Show newest version
package org.simpleflatmapper.sql2o;

import org.simpleflatmapper.jdbc.DynamicJdbcMapper;
import org.simpleflatmapper.jdbc.JdbcMapperFactory;
import org.simpleflatmapper.map.PropertyNameMatcherFactory;
import org.simpleflatmapper.map.mapper.DefaultPropertyNameMatcherFactory;
import org.simpleflatmapper.util.Function;
import org.sql2o.DefaultResultSetHandlerFactoryBuilder;
import org.sql2o.ResultSetHandlerFactory;

import java.util.Map;

public class SfmResultSetHandlerFactoryBuilder extends DefaultResultSetHandlerFactoryBuilder {


    private final Function, JdbcMapperFactory> jdbcMapperFactoryFactory;

    public SfmResultSetHandlerFactoryBuilder() {
        this(JdbcMapperFactory.newInstance());
    }

    public SfmResultSetHandlerFactoryBuilder(final JdbcMapperFactory jdbcMapperFactory) {
        this(new Function, JdbcMapperFactory>() {
            @Override
            public JdbcMapperFactory apply(Class aClass) {
                return jdbcMapperFactory;
            }
        });
    }

    public SfmResultSetHandlerFactoryBuilder(Function, JdbcMapperFactory> jdbcMapperFactoryFactory) {
        this.jdbcMapperFactoryFactory = jdbcMapperFactoryFactory;
    }

    @Override
    public  ResultSetHandlerFactory newFactory(Class aClass) {

        boolean exactMatch = !isAutoDeriveColumnNames();

        JdbcMapperFactory jdbcMapperFactory = jdbcMapperFactoryFactory.apply(aClass);

        PropertyNameMatcherFactory propertyNameMatcherFactory =
                jdbcMapperFactory.mapperConfig(aClass).propertyNameMatcherFactory();
        if (propertyNameMatcherFactory instanceof DefaultPropertyNameMatcherFactory) {
            propertyNameMatcherFactory  =
                    ((DefaultPropertyNameMatcherFactory)propertyNameMatcherFactory).exactMatch(exactMatch).caseSensitive(isCaseSensitive());
        }
        jdbcMapperFactory.propertyNameMatcherFactory(propertyNameMatcherFactory);

        Map columnMappings = getColumnMappings();
        if (columnMappings != null) {
            jdbcMapperFactory.addAliases(columnMappings);
        }

        DynamicJdbcMapper dynamicJdbcMapper = (DynamicJdbcMapper) jdbcMapperFactory.newMapper(aClass);

        return new SfmResultSetHandlerFactory(dynamicJdbcMapper);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy