io.ebeaninternal.server.expression.RawExpressionBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ebean Show documentation
Show all versions of ebean Show documentation
composite of common runtime dependencies for all platforms
package io.ebeaninternal.server.expression;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
class RawExpressionBuilder {
private static final String BP_1 = "?1";
private static final String[] BP = {BP_1, "?2", "?3", "?4", "?5", "?6", "?7", "?8",
"?9", "?10", "?11", "?12", "?13", "?14", "?15", "?16", "?17", "?18", "?19", "?20"};
/**
* Build RawExpression taking into account parameter expansion.
*/
static RawExpression buildSingle(String raw, Object value) {
if (isExpand(value, raw, BP_1)) {
Collection val = (Collection) value;
raw = raw.replace(BP_1, expand(val));
return new RawExpression(raw, val.toArray());
}
return new RawExpression(raw, new Object[]{value});
}
/**
* Build RawExpression for multiple bind values taking into account parameter expansion.
*/
static RawExpression build(String raw, Object[] values) {
for (int i = 0; i < values.length; i++) {
if (isExpand(values[i], raw, match(i))) {
return new RawExpressionBuilder(raw, values).build();
}
}
return new RawExpression(raw, values);
}
/**
* Return true if this value is a collection that should be expanded.
*/
private static boolean isExpand(Object value, String raw, String bindMatch) {
return value instanceof Collection && raw.contains(bindMatch);
}
private static String match(int i) {
if (i < 20) {
return BP[i];
}
return "?" + (i + 1);
}
private static String expand(Collection values) {
StringBuilder sqlExpand = new StringBuilder(values.size() * 2);
for (int i = 0; i < values.size(); i++) {
if (i > 0) {
sqlExpand.append(",");
}
sqlExpand.append("?");
}
return sqlExpand.toString();
}
private final String expanded;
private final List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy