package org.uva.student.calinwouter.qlqls.ql.types; import org.uva.student.calinwouter.qlqls.ql.interfaces.IAllowTypeChecker; import org.uva.student.calinwouter.qlqls.ql.interfaces.ITypeCallback; import org.uva.student.calinwouter.qlqls.ql.interfaces.ITypeDescriptor; public class StringValue extends Value { public static final ITypeDescriptor STRING_VALUE_TYPE_DESCRIPTOR = new ITypeDescriptor() { public void callTypeMethod(final ITypeCallback typeCallback) { typeCallback.usesString(); } public StringValue getDefaultValue() { return new StringValue(""); } public boolean isAllowed(IAllowTypeChecker allowTypeChecker) { return allowTypeChecker.allowsStringValue(); } public boolean equals(final Object obj) { if (!(obj instanceof ITypeDescriptor)) { return false; } final ITypeDescriptor otherType = (ITypeDescriptor) obj; final Value otherDefaultValue = otherType.getDefaultValue(); final Value thisDefaultValue = getDefaultValue(); final BooleanValue equalityComparisonValue = otherDefaultValue.valueEquals(thisDefaultValue); return equalityComparisonValue.isTrue(); } @Override public String toString() { return "String"; } }; @Override public void apply(ITypeCallback typeCallback) { typeCallback.usesString(); } public StringValue(String value) { super(value); } }