org.meridor.perspective.sql.BaseQueryPart Maven / Gradle / Ivy
package org.meridor.perspective.sql;
import java.util.*;
import java.util.function.BiFunction;
public class BaseQueryPart implements QueryPart {
private final StringBuilder sb = new StringBuilder();
private final Map parameters = new LinkedHashMap<>();
@Override
public String getSql() {
return sb.toString();
}
@Override
public List getParameters() {
return new ArrayList<>(parameters.values());
}
protected void addToSql(String str) {
sb.append(str);
}
protected Parameter addParameter(String name, String value) {
String parameterName = name;
int index = 1;
while (parameters.containsKey(parameterName)) {
parameterName = name + index;
index++;
}
Parameter parameter = new Parameter();
parameter.setName(parameterName);
parameter.setValue(value);
parameters.put(parameterName, parameter);
return parameter;
}
protected static T joinWith(Map> columnValues, BiFunction matchingFunction, Runnable keyJoiningOperation, Runnable valueJoiningOperation, T returnValue) {
boolean isFirstColumn = true;
for (String columnName : columnValues.keySet()) {
if (!isFirstColumn) {
keyJoiningOperation.run();
}
Collection values = columnValues.get(columnName);
boolean isFirstValue = true;
for (String value : values) {
if (!isFirstValue) {
valueJoiningOperation.run();
}
matchingFunction.apply(columnName, value);
isFirstValue = false;
}
isFirstColumn = false;
}
return returnValue;
}
protected static T joinCollectionWith(Map> columnValues, BiFunction, T> matchingFunction, Runnable joiningOperation, T returnValue) {
int position = 0;
for (String columnName : columnValues.keySet()) {
Collection values = columnValues.get(columnName);
matchingFunction.apply(columnName, values);
if (position > 0) {
joiningOperation.run();
}
position++;
}
return returnValue;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy