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

com.yesql4j.spring.InParameters Maven / Gradle / Ivy

There is a newer version: 0.1.8-beta
Show newest version
package com.yesql4j.spring;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public final class InParameters {

    public static boolean hasListParam(List params) {
        return params.stream().anyMatch(p -> (p instanceof Collection));
    }

    public static String addListParams(String query, List paramsIndexes, List params) {
        StringBuilder updatedQuery = new StringBuilder(query);
        int offset = 0;
        for (int i = 0; i < params.size(); i++) {
            Integer index = paramsIndexes.get(i);
            Object param = params.get(i);
            if (param instanceof Collection) {
                int size = ((Collection) param).size();
                String updated = String.join(",", Collections.nCopies(size, "?"));
                updatedQuery.replace(index + offset, index + offset + 1, updated);
                offset += updated.length() - 1;
            }
        }
        return updatedQuery.toString();
    }

    public static List flattenParams(List params) {
        ArrayList res = new ArrayList<>();
        for (Object paramValue : params) {
            if (paramValue instanceof Collection) {
                ((Collection) paramValue).forEach(res::add);
            } else {
                res.add(paramValue);
            }
        }
        return res;
    }
}