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

org.simpleflatmapper.map.mapper.AbstractColumnNameDiscriminatorMapperFactory 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: 9.0.2
Show newest version
package org.simpleflatmapper.map.mapper;

import org.simpleflatmapper.map.CaseInsensitiveFieldKeyNamePredicate;
import org.simpleflatmapper.map.FieldKey;
import org.simpleflatmapper.map.getter.ContextualGetterFactory;
import org.simpleflatmapper.util.CheckedBiFunction;
import org.simpleflatmapper.util.Consumer;
import org.simpleflatmapper.util.Predicate;

import java.lang.reflect.Type;

public class AbstractColumnNameDiscriminatorMapperFactory<
        K extends FieldKey,
        MF extends AbstractColumnNameDiscriminatorMapperFactory, S> extends AbstractMapperFactory {
    private final DiscriminatorNamedGetterFactory columnNameGetterFactory;
    public AbstractColumnNameDiscriminatorMapperFactory(AbstractMapperFactory config, DiscriminatorNamedGetterFactory columnNameGetterFactory) {
        super(config);
        this.columnNameGetterFactory = columnNameGetterFactory;
    }

    public AbstractColumnNameDiscriminatorMapperFactory(AbstractColumnDefinitionProvider columnDefinitions, ColumnDefinition identity, DiscriminatorNamedGetterFactory columnNameGetterFactory, ContextualGetterFactory getterFactory) {
        super(columnDefinitions, identity, getterFactory);
        this.columnNameGetterFactory = columnNameGetterFactory;
    }

    /**
     * @deprecated use {@link AbstractMapperFactory#discriminator(Type)} dsl
     */
    @Deprecated
    public  MF discriminator(Class commonType, String discriminatorColumn, Consumer> consumer) {
        return discriminator((Type)commonType, discriminatorColumn, consumer);
    }

    /**
     * @deprecated use {@link AbstractMapperFactory#discriminator(Type)} dsl
     */
    public  MF discriminator(Type commonType, String discriminatorColumn, Consumer> consumer) {
        return discriminator(commonType, discriminatorColumn, Object.class, consumer);
    }

    /**
     * @deprecated use {@link AbstractMapperFactory#discriminator(Type)} dsl
     */
    public  MF discriminator(Class commonType, String discriminatorColumn, Class discriminatorType, Consumer> consumer) {
        return discriminator((Type)commonType, discriminatorColumn, discriminatorType, consumer);
    }

    /**
     * @deprecated use {@link AbstractMapperFactory#discriminator(Type)} dsl
     */
    public  MF discriminator(Type commonType, String discriminatorColumn, final Class discriminatorType, Consumer> consumer) {
        return this.discriminator(commonType).onColumn(discriminatorColumn, discriminatorType).with(consumer);
    }


    public interface DiscriminatorNamedGetterFactory {
         DiscriminatorNamedGetter newGetter(Class type);
    }

    public interface DiscriminatorNamedGetter {
        T get(S s, String discriminatorColumn) throws Exception;
    }
    
}