package foundation.persist;
|
|
import java.util.Set;
|
|
import foundation.monitor.IMessager;
|
import foundation.variant.expression.VariantList;
|
import foundation.variant.expression.VariantSegment;
|
|
public abstract class SQLContext implements ISQLContext {
|
|
public void setParametersTo(NamedSQL namedSQL, IMessager messager) throws Exception {
|
VariantList variantMap = namedSQL.getVariantList();
|
Set<String> names = variantMap.keySet();
|
|
for (String name : names) {
|
VariantSegment variant = variantMap.get(name);
|
|
if (variant != null) {
|
if (!variant.isEmpty()) {
|
continue;
|
}
|
|
Object[] args = messager.getMessages().toArray(new String[messager.getMessages().size()]);
|
|
String value = getSqlString(name, args);
|
if (value == null) {
|
throw new Exception("can not get param: " + name);
|
}
|
|
variant.setValue(value);
|
}
|
}
|
}
|
|
public abstract String getSqlString(String name, Object... args) throws Exception;
|
|
public NamedSQL reassignNamedSQL(NamedSQL namedSQL, Object... args) throws Exception {
|
return namedSQL;
|
}
|
}
|