
org.sfm.querydsl.QueryDslMapperBuilder Maven / Gradle / Ivy
package org.sfm.querydsl;
import com.mysema.query.Tuple;
import com.mysema.query.types.Expression;
import org.sfm.map.GetterFactory;
import org.sfm.map.Mapper;
import org.sfm.map.MapperBuildingException;
import org.sfm.map.MappingContextFactoryBuilder;
import org.sfm.map.impl.*;
import org.sfm.reflect.ReflectionService;
import org.sfm.reflect.meta.ClassMeta;
import java.lang.reflect.Type;
public final class QueryDslMapperBuilder {
public static final MapperSource FIELD_MAPPER_SOURCE =
new MapperSource() {
@Override
public Class source() {
return Tuple.class;
}
@Override
public GetterFactory getterFactory() {
return new TupleGetterFactory();
}
};
private final FieldMapperMapperBuilder fieldMapperMapperBuilder;
public QueryDslMapperBuilder(final Type target) throws MapperBuildingException {
this(target, ReflectionService.newInstance());
}
@SuppressWarnings("unchecked")
public QueryDslMapperBuilder(final Type target, ReflectionService reflectService) throws MapperBuildingException {
this(reflectService.getClassMeta(target), new QueryDslMappingContextFactoryBuilder());
}
public QueryDslMapperBuilder(final ClassMeta classMeta, MappingContextFactoryBuilder parentBuilder) throws MapperBuildingException {
fieldMapperMapperBuilder =
new FieldMapperMapperBuilder(
FIELD_MAPPER_SOURCE,
classMeta,
MapperConfig.fieldMapperConfig(),
parentBuilder);
}
public QueryDslMapperBuilder addMapping(Expression> expression, int i) {
fieldMapperMapperBuilder.addMapping(new TupleElementKey(expression, i), FieldMapperColumnDefinition.identity());
return this;
}
public Mapper mapper() {
return fieldMapperMapperBuilder.mapper();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy