/** * Parts of SQL query as objects. */ package squill.query.cud; import static squill.functions.Operations.constant; import java.util.List; import squill.query.QueryContext; import squill.query.select.Column; import squill.query.select.SelectExpression; /** * One FIELD AND VALUE pair of insert. For example "name, 'John Smith'" in: * INSERT INTO customer (id,name,address) VALUES (17, 'John Smith', 'London 1, England') */ public class InsertFieldElement<OBJ> implements InsertElement { private final Column<?, OBJ> field; private final SelectExpression<?> insertExpr; public <FIELD> InsertFieldElement(Column<FIELD, OBJ> field, SelectExpression<FIELD> insertExpr) { this.field = field; this.insertExpr = insertExpr; } public <FIELD> InsertFieldElement(Column<FIELD, OBJ> field, FIELD insertField) { this(field, constant(insertField)); } public Column<?, OBJ> getField() { return field; } public String getDefaultSql() { return field.getDefaultSql(); } public String getValueSql() { return insertExpr.getDefaultSql(); } public List<Object> getSqlArguments() { return insertExpr.getSqlArguments(); } public void setQueryContext(QueryContext ctx) { field.setQueryContext(ctx); insertExpr.setQueryContext(ctx); } }