package org.activityinfo.model.type.enumerated; import org.activityinfo.model.legacy.CuidAdapter; import org.activityinfo.model.legacy.KeyGenerator; import org.activityinfo.model.resource.IsRecord; import org.activityinfo.model.resource.Record; import org.activityinfo.model.resource.ResourceId; public class EnumItem implements IsRecord { private ResourceId id; private String label; private String code; public EnumItem(ResourceId id, String label) { this.id = id; this.label = label; } public ResourceId getId() { return id; } public void setId(ResourceId id) { this.id = id; } public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public static EnumItem fromRecord(Record record) { return new EnumItem(ResourceId.valueOf(record.getString("id")), record.getString("label")) .setCode(record.isString("code")); } public String getCode() { return code; } public EnumItem setCode(String code) { this.code = code; return this; } @Override public String toString() { return id + ":" + label; } @Override public Record asRecord() { return new Record() .set("label", label) .set("code", code) .set("id", id.asString()); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; EnumItem enumItem = (EnumItem) o; if (id != null ? !id.equals(enumItem.id) : enumItem.id != null) return false; return true; } @Override public int hashCode() { return id != null ? id.hashCode() : 0; } public static ResourceId generateId() { KeyGenerator generator = new KeyGenerator(); return CuidAdapter.attributeField(generator.generateInt()); } }