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

org.simpleflatmapper.jooq.SelectQueryMapperFactory Maven / Gradle / Ivy

The newest version!
package org.simpleflatmapper.jooq;

import org.simpleflatmapper.jdbc.ResultSetGetterFactory;
import org.simpleflatmapper.map.FieldKey;
import org.simpleflatmapper.map.context.MappingContextFactoryBuilder;
import org.simpleflatmapper.map.getter.ContextualGetter;
import org.simpleflatmapper.map.getter.ContextualGetterFactory;
import org.simpleflatmapper.map.mapper.AbstractColumnDefinitionProvider;
import org.simpleflatmapper.map.mapper.AbstractColumnNameDiscriminatorMapperFactory;
import org.simpleflatmapper.map.mapper.AbstractMapperFactory;
import org.simpleflatmapper.map.mapper.FieldMapperColumnDefinitionProviderImpl;
import org.simpleflatmapper.map.property.FieldMapperColumnDefinition;
import org.simpleflatmapper.reflect.property.SpeculativeObjectLookUpProperty;
import org.simpleflatmapper.util.ConstantPredicate;

import java.lang.reflect.Type;
import java.sql.ResultSet;

import static org.simpleflatmapper.jooq.JooqJdbcMapperBuilder.toJdbcColumnKey;

public class SelectQueryMapperFactory
        extends AbstractColumnNameDiscriminatorMapperFactory {

    public static SelectQueryMapperFactory newInstance() {
        return new SelectQueryMapperFactory();
    }

    public static SelectQueryMapperFactory newInstance(
            AbstractMapperFactory config) {
        return new SelectQueryMapperFactory(config);
    }


    private SelectQueryMapperFactory() {
        super(new FieldMapperColumnDefinitionProviderImpl(), FieldMapperColumnDefinition.identity(), adapt(ResultSetGetterFactory.INSTANCE));
        addColumnProperty(ConstantPredicate.truePredicate(), SpeculativeObjectLookUpProperty.INSTANCE);
    }



    private SelectQueryMapperFactory(AbstractMapperFactory config) {
        super(config);
        addColumnProperty(ConstantPredicate.truePredicate(), SpeculativeObjectLookUpProperty.INSTANCE);
    }

    private SelectQueryMapperFactory(AbstractColumnDefinitionProvider columnDefinitions, FieldMapperColumnDefinition identity) {
        super(columnDefinitions, identity, adapt(ResultSetGetterFactory.INSTANCE));
        addColumnProperty(ConstantPredicate.truePredicate(), SpeculativeObjectLookUpProperty.INSTANCE);
    }

    private static ContextualGetterFactory adapt(final ResultSetGetterFactory instance) {
        return new ContextualGetterFactory() {
            @Override
            public 

ContextualGetter newGetter(Type target, JooqFieldKey key, MappingContextFactoryBuilder> mappingContextFactoryBuilder, Object... properties) { return instance.newGetter(target, toJdbcColumnKey(key), mappingContextFactoryBuilder, properties); } }; } public SelectQueryMapper newMapper(Class clazz) { return new SelectQueryMapper(getReflectionService().getClassMeta(clazz), mapperConfig(clazz)); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy