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

org.simpleflatmapper.map.mapper.MapperBiFunctionAdapter Maven / Gradle / Ivy

package org.simpleflatmapper.map.mapper;

import org.simpleflatmapper.map.Mapper;
import org.simpleflatmapper.map.MappingContext;
import org.simpleflatmapper.util.BiFunction;
import org.simpleflatmapper.util.Predicate;

import static org.simpleflatmapper.util.Asserts.requireNonNull;

public final class MapperBiFunctionAdapter implements BiFunction, P> {

	private final Mapper mapper;
    private final Predicate nullChecker;
    private final int valueIndex;
	
	public MapperBiFunctionAdapter(Mapper mapper, Predicate nullChecker, int valueIndex) {
		this.mapper = requireNonNull("jdbcMapper", mapper);
        this.nullChecker = requireNonNull("nullChecker", nullChecker);
        this.valueIndex = valueIndex;
    }

    @Override
    public String toString() {
        return "MapperBiFunctionAdapter{" +
                "jdbcMapper=" + mapper +
                '}';
    }

    @Override
    public P apply(S s, MappingContext mappingContext) {
        if (nullChecker.test(s)){
            return null;
        }
        P value = mapper.map(s, mappingContext);
        if (mappingContext != null) {
            mappingContext.setCurrentValue(valueIndex, value);
        }
        return value;
    }
}