package org.activityinfo.model.form; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import org.activityinfo.model.resource.Record; import org.activityinfo.model.resource.ResourceId; import javax.validation.constraints.NotNull; import java.util.List; /** * A logical group of {@code FormElements} * */ public class FormSection extends FormElement implements FormElementContainer { private final ResourceId id; private String label; private final List<FormElement> elements = Lists.newArrayList(); public FormSection(ResourceId id) { Preconditions.checkNotNull(id); this.id = id; } public ResourceId getId() { return id; } @NotNull public String getLabel() { return label; } public FormSection setLabel(String label) { this.label = label; return this; } public List<FormElement> getElements() { return elements; } @Override public FormSection addElement(FormElement element) { elements.add(element); return this; } @Override public Record asRecord() { Record record = new Record(); record.set("id", id.asString()); record.set("label", label); record.set("type", "section"); record.set("elements", asRecordList(getElements())); return record; } @Override public String toString() { return "FormSection{" + "id=" + id + ", label=" + label + '}'; } }