ConverterJdbcStatement.java
/*
* SPDX-FileCopyrightText: 2025 kaumei.io
* SPDX-License-Identifier: Apache-2.0
*/
package io.kaumei.jdbc.anno.java2jdbc;
import com.palantir.javapoet.CodeBlock;
import io.kaumei.jdbc.anno.gen.KaumeiLib;
import io.kaumei.jdbc.anno.gen.TargetMethod;
import io.kaumei.jdbc.anno.model.OptionalFlag;
import io.kaumei.jdbc.anno.store.SourceDV;
import javax.lang.model.type.TypeMirror;
import java.util.Objects;
final class ConverterJdbcStatement extends Java2JdbcConverter {
private final boolean isPrimitive;
private final String methodName;
ConverterJdbcStatement(TypeMirror type, SourceDV source, String methodName) {
super(type, source);
this.isPrimitive = type.getKind().isPrimitive();
this.methodName = Objects.requireNonNull(methodName);
}
@Override
public void setParameter(TargetMethod builder, CodeBlock paramAccess, CodeBlock columnIndex, OptionalFlag optional) {
builder.addComment("ConverterJdbcStatement", "type", this.type(), "optional", optional);
if (optional.isNonNull()) {
if (isPrimitive) {
builder.addStatement("stmt.$N($L, $L)", methodName, columnIndex, paramAccess);
} else {
builder.addStatement("stmt.$N($L, $L)", methodName, columnIndex, KaumeiLib.requireNonNull(paramAccess));
}
} else if (isPrimitive) { // sanity-check
throw new IllegalArgumentException("primitive must always be non-null"); // sanity-check
} else {
builder.addStatement("stmt.$N($L, $L)", methodName, columnIndex, paramAccess);
}
}
}