package org.activityinfo.model.type.primitive;
import org.activityinfo.model.type.FieldTypeClass;
import org.activityinfo.model.type.FieldValue;
public class TextValue implements FieldValue, HasStringValue {
private final String value;
private TextValue(String value) {
this.value = value;
}
/**
* Returns a {@code TextValue} object, or {@code null} if
* {@code value} is {@code null} or empty.
*/
public static TextValue valueOf(String value) {
if(value == null || value.isEmpty()) {
return null;
} else {
return new TextValue(value);
}
}
@Override
public FieldTypeClass getTypeClass() {
return TextType.TYPE_CLASS;
}
public String asString() {
return value;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
TextValue textValue = (TextValue) o;
if (!value.equals(textValue.value)) {
return false;
}
return true;
}
@Override
public int hashCode() {
return value.hashCode();
}
@Override
public String toString() {
return value;
}
}