package org.activityinfo.model.type.barcode;
import com.google.common.base.Strings;
import org.activityinfo.model.resource.IsRecord;
import org.activityinfo.model.resource.Record;
import org.activityinfo.model.type.FieldTypeClass;
import org.activityinfo.model.type.FieldValue;
import org.activityinfo.model.type.primitive.HasStringValue;
public class BarcodeValue implements FieldValue, IsRecord, HasStringValue {
private final String code;
public static BarcodeValue valueOf(String code) {
if(Strings.isNullOrEmpty(code)) {
return null;
} else {
return new BarcodeValue(code);
}
}
private BarcodeValue(String code) {
this.code = code;
}
public String getCode() {
return code;
}
@Override
public String asString() {
return code;
}
@Override
public FieldTypeClass getTypeClass() {
return BarcodeType.TYPE_CLASS;
}
@Override
public Record asRecord() {
return new Record()
.set(TYPE_CLASS_FIELD_NAME, getTypeClass().getId())
.set("code", code);
}
public static BarcodeValue fromRecord(Record record) {
return new BarcodeValue(record.getString("code"));
}
}