
com.xlrit.gears.engine.data.DynamicJpaTupleInfo Maven / Gradle / Ivy
package com.xlrit.gears.engine.data;
import com.xlrit.gears.engine.meta.BasicTypes;
import com.xlrit.gears.engine.meta.MetaManager;
import com.xlrit.gears.engine.meta.TypeInfo;
import jakarta.persistence.Tuple;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
class DynamicJpaTupleInfo extends AbstractJpaTupleInfo {
private final MetaManager metaManager;
private TypeInfo[] elementTypes;
@Override
protected TypeInfo getTypeInfo(Tuple tuple, int index) {
if (elementTypes == null) {
elementTypes = new TypeInfo[tuple.getElements().size()];
}
TypeInfo typeInfo = elementTypes[index];
if (typeInfo != null) return typeInfo;
Object elementValue = tuple.get(index);
if (elementValue == null) return BasicTypes.NULL;
TypeInfo elementType = metaManager.requireTypeInfo(elementValue);
elementTypes[index] = elementType;
return elementType;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy