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

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

package org.sfm.jooq;

import java.lang.reflect.Type;

import org.jooq.Record;
import org.sfm.jooq.getter.EnumRecordNamedGetter;
import org.sfm.jooq.getter.EnumRecordOrdinalGetter;
import org.sfm.jooq.getter.RecordGetter;
import org.sfm.jooq.getter.RecordGetterWithConverter;
import org.sfm.map.impl.GetterFactory;
import org.sfm.reflect.Getter;
import org.sfm.reflect.TypeHelper;
import org.sfm.utils.conv.Converter;
import org.sfm.utils.conv.ConverterFactory;

public class RecordGetterFactory implements
		GetterFactory {

	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public 

Getter newGetter(Type genericType, JooqFieldKey key) { Class

propretyClass = TypeHelper.toClass(genericType); if (Enum.class.isAssignableFrom(propretyClass)) { Class columnType = key.getField().getType(); if (TypeHelper.isNumber(columnType)) { return new EnumRecordOrdinalGetter(key, propretyClass); } else if (String.class.equals(columnType)){ return new EnumRecordNamedGetter(key, propretyClass); } else { return null; } } if (TypeHelper.areCompatible(propretyClass, key.getField().getType())) { return new RecordGetter(key.getIndex()); } else { return newRecordGetterWithConverter(key.getField().getType(), genericType, key.getIndex()); } } private Getter newRecordGetterWithConverter(Class inType, Type outType, int index) { Converter converter = ConverterFactory.getConverter(inType, outType); if (converter != null) { return new RecordGetterWithConverter(index, converter); } else { return null; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy