package net.sourceforge.mayfly.evaluation.command; import net.sourceforge.mayfly.datastore.Cell; import net.sourceforge.mayfly.datastore.Column; import net.sourceforge.mayfly.datastore.Columns; import net.sourceforge.mayfly.datastore.Row; import net.sourceforge.mayfly.evaluation.Expression; import net.sourceforge.mayfly.evaluation.condition.Condition; import net.sourceforge.mayfly.parser.Location; public class SetClause { private final String column; private final Expression value; /** * @param value The expression to set to, or null for the default expression. */ public SetClause(String column, Expression value) { this.column = column; this.value = value; } public Column column(Columns columns) { return columns.columnFromName(column); } public Cell value(Row row, String table, Column column) { if (value == null) { return column.coerce(column.defaultValue(), Location.UNKNOWN); } else { return column.coerce(value.evaluate(row, table), value.location); } } public void rejectAggregates(String context) { if (value != null) { Condition.rejectAggregates(value.firstAggregate(), context); } } }