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

com.undefinedlabs.scope.rules.sql.provider.internal.PreparedStatementQueryUtils Maven / Gradle / Ivy

package com.undefinedlabs.scope.rules.sql.provider.internal;

import com.undefinedlabs.scope.rules.sql.model.PreparedStatementQueryParameter;
import com.undefinedlabs.scope.sender.internal.serializers.ObjectMapperFactory;
import com.undefinedlabs.scope.deps.org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.util.Map;

public enum PreparedStatementQueryUtils {

    INSTANCE;

    public String generateParamKey(final int sqlParamIndex) {
        return "?".concat(String.valueOf(sqlParamIndex));
    }

    public String extractSqlMethod(final String sqlStatement) {
        if (StringUtils.isEmpty(sqlStatement)) {
            return null;
        }

        final String[] chuncks = sqlStatement.split(" ", 2);
        return chuncks.length > 0 ? chuncks[0] : null;
    }

    public String generateSqlParamsAsString(final Map map) {
        if (map == null || map.isEmpty()) {
            return null;
        }

        try {
            return ObjectMapperFactory.newConfiguredObjectMapper().writeValueAsString(map);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public String buildSql(String sqlStatement, Map parametersMap) {
        if (StringUtils.isEmpty(sqlStatement)) {
            return null;
        }

        if (parametersMap == null || parametersMap.isEmpty()) {
            return sqlStatement;
        }

        String sql = sqlStatement;
        for (PreparedStatementQueryParameter sqlParam : parametersMap.values()) {
            sql = sql.replaceFirst("\\?", sqlParam.getValue());
        }


        return sql;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy