package nl.uva.polyql.ast.values; import nl.uva.polyql.ast.Question; import nl.uva.polyql.ast.expressions.operations.BinaryOperator; import nl.uva.polyql.ast.expressions.operations.UnaryOperator; import nl.uva.polyql.view.QuestionView; import nl.uva.polyql.view.StringValueView; public class StringValue extends Value<String> { public StringValue(final String value) { super(value); } @Override public Type getType() { return Type.STRING; } @Override public QuestionView getView(final Question question) { return new StringValueView(question); } @Override public void setViewValue(final QuestionView view) { view.setComponentValue(this); } @Override public Value<?> performOperationOnLeft(final BinaryOperator operator, final Value<?> rightValue) { return rightValue.performOperationOnRight(this, operator); } @Override public Value<?> performOperationOnRight(final NumberValue leftValue, final BinaryOperator operator) { return operator.performOperation(leftValue, this); } @Override public Value<?> performOperationOnRight(final StringValue leftValue, final BinaryOperator operator) { return operator.performOperation(leftValue, this); } @Override public Value<?> performUnaryOperation(final UnaryOperator operator) { return operator.performOperation(this); } /** * Parses the given user input as a string. * * @param input * The user input * * @return The string value */ public static StringValue parse(final String input) { return new StringValue(input.substring(1, input.length() - 1)); } }