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

org.sfm.jooq.JooqMapperBuilder Maven / Gradle / Ivy

There is a newer version: 9.0.2
Show newest version
package org.sfm.jooq;

import org.jooq.Record;
import org.sfm.map.Mapper;
import org.sfm.map.MapperBuildingException;
import org.sfm.map.MapperConfig;
import org.sfm.map.mapper.FieldMapperMapperBuilder;
import org.sfm.map.mapper.MapperSource;
import org.sfm.map.column.FieldMapperColumnDefinition;
import org.sfm.map.context.MappingContextFactoryBuilder;
import org.sfm.map.mapper.MapperSourceImpl;
import org.sfm.reflect.ReflectionService;
import org.sfm.reflect.meta.ClassMeta;

import java.lang.reflect.Type;


public class JooqMapperBuilder {

	public static final MapperSource FIELD_MAPPER_SOURCE = new MapperSourceImpl(Record.class, new RecordGetterFactory());

	private final FieldMapperMapperBuilder fieldMapperMapperBuilder;

	public JooqMapperBuilder(final Type target) throws MapperBuildingException {
		this(target, ReflectionService.newInstance());
	}

	@SuppressWarnings("unchecked")
	public JooqMapperBuilder(final Type target, ReflectionService reflectService) throws MapperBuildingException {
		this(reflectService.getClassMeta(target), new JooqMappingContextFactoryBuilder());
	}

	public JooqMapperBuilder(final ClassMeta classMeta,
							 MappingContextFactoryBuilder mappingContextFactoryBuilder) throws MapperBuildingException {
		this(classMeta, mappingContextFactoryBuilder, MapperConfig.fieldMapperConfig());
	}

	public JooqMapperBuilder(final ClassMeta classMeta,
							 MappingContextFactoryBuilder mappingContextFactoryBuilder,
							 MapperConfig> mapperConfig) throws MapperBuildingException {
		fieldMapperMapperBuilder =
				new FieldMapperMapperBuilder(
						FIELD_MAPPER_SOURCE,
						classMeta,
						mapperConfig,
						mappingContextFactoryBuilder);
	}

		public JooqMapperBuilder addField(JooqFieldKey key) {
		fieldMapperMapperBuilder.addMapping(key, FieldMapperColumnDefinition.identity());
		return this;
	}

	public Mapper mapper() {
		return fieldMapperMapperBuilder.mapper();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy