package org.uva.ql.ast.value; public class StrValue extends Value { private final String value; public StrValue(String value) { this.value = value; } @Override public String value() { return value; } @Override public boolean equals(Object obj) { if (obj instanceof StrValue) { return value.equals(((StrValue) obj).value()); } else { throw new UnsupportedOperationException("StrValue is only compariable with another StrValue."); } } @Override public String toString() { return value; } @Override public Value equal(Value arg) { return arg.strEqual(this); } @Override public Value strEqual(StrValue arg) { return new BoolValue(arg.value().equals(value())); } @Override public Value notEqual(Value arg) { return arg.strNotEqual(this); } @Override public Value strNotEqual(StrValue arg) { return new BoolValue(!arg.value().equals(value())); } @Override public Value plus(Value arg) { return arg.StrPlus(this); } public Value StrPlus(StrValue arg) { return new StrValue(arg.value() + value()); } @Override public boolean isDefined() { return true; } }