boolean appendSpace = true;
if (argOrValue == null) {
throw new SQLException("argument for '" + fieldType.getFieldName() + "' is null");
} else if (argOrValue instanceof ArgumentHolder) {
sb.append('?');
ArgumentHolder argHolder = (ArgumentHolder) argOrValue;
argHolder.setMetaInfo(columnName, fieldType);
argList.add(argHolder);
} else if (argOrValue instanceof ColumnArg) {
ColumnArg columnArg = (ColumnArg) argOrValue;
String tableName = columnArg.getTableName();
if (tableName != null) {
databaseType.appendEscapedEntityName(sb, tableName);
sb.append('.');
}
databaseType.appendEscapedEntityName(sb, columnArg.getColumnName());
} else if (fieldType.isArgumentHolderRequired()) {
sb.append('?');
ArgumentHolder argHolder = new SelectArg();
argHolder.setMetaInfo(columnName, fieldType);
// conversion is done when the getValue() is called
argHolder.setValue(argOrValue);
argList.add(argHolder);
} else if (fieldType.isForeign() && fieldType.getType().isAssignableFrom(argOrValue.getClass())) {
/*
* If we have a foreign field and our argument is an instance of the foreign object (i.e. not its id), then
* we need to extract the id. We allow super-classes of the field but not sub-classes.