ConverterStaticStatement.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.element.ExecutableElement;
import javax.lang.model.type.TypeMirror;
import java.util.Objects;

import static io.kaumei.jdbc.anno.ctx.JavaModelUtils.getQualifiedClassName;

final class ConverterStaticStatement extends Java2JdbcConverter {

    private final String qualifiedTypeName;
    private final String methodName;

    ConverterStaticStatement(TypeMirror type, SourceDV source, ExecutableElement method) {
        super(type, source);
        this.qualifiedTypeName = getQualifiedClassName(method).toString();
        this.methodName = method.getSimpleName().toString();
    }

    //need vor basic converter
    ConverterStaticStatement(TypeMirror type, SourceDV source, String qualifiedTypeName, String methodName) {
        super(type, source);
        this.qualifiedTypeName = Objects.requireNonNull(qualifiedTypeName);
        this.methodName = Objects.requireNonNull(methodName);
    }

    @Override
    public void setParameter(TargetMethod builder, CodeBlock paramAccess, CodeBlock columnIndex, OptionalFlag optional) {
        builder.addComment("ConverterStaticStatement", "type", this.type(), "optional", optional);
        builder.addStatement("$L.$N(stmt, $L, $L)",
                this.qualifiedTypeName, this.methodName, columnIndex,
                KaumeiLib.nullCheck(optional, this.type(), paramAccess));
    }

}