package org.activityinfo.server.endpoint.odk; import com.google.common.collect.Iterables; import org.activityinfo.model.resource.ResourceId; import org.activityinfo.io.xform.form.BindingType; import org.activityinfo.io.xform.form.BodyElement; import org.activityinfo.io.xform.form.Input; import java.util.Set; public class ReferenceBuilder implements OdkFormFieldBuilder { private final Set<ResourceId> range; public ReferenceBuilder(Set<ResourceId> range) { this.range = range; } @Override public BindingType getModelBindType() { return BindingType.STRING; } @Override public BodyElement createBodyElement(String ref, String label, String hint) { Input input = new Input(); input.setRef(ref); input.setLabel(label); input.setHint(hint); input.setQuery(String.format("instance('%s')/root/item[]", Iterables.getOnlyElement(range).asString())); return input; } }