package org.activityinfo.model.type.expr; import org.activityinfo.model.resource.IsRecord; import org.activityinfo.model.resource.Record; import org.activityinfo.model.type.FieldTypeClass; import org.activityinfo.model.type.FieldValue; /** * A FieldValue containing a symbolic expression such as "A + B" */ public class ExprValue implements FieldValue, IsRecord { private final String expression; public ExprValue(String expression) { this.expression = expression; } public String getExpression() { return expression; } @Override public FieldTypeClass getTypeClass() { return ExprFieldType.TYPE_CLASS; } @Override public Record asRecord() { return new Record() .set(FieldValue.TYPE_CLASS_FIELD_NAME, getTypeClass().getId()) .set("value", expression); } public static ExprValue valueOf(String value) { return new ExprValue(value); } public static ExprValue fromRecord(Record record) { return new ExprValue(record.getString("value")); } }