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

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