public void addIndicatorOrAttributeField(ActivityField field) { formClass.addElement(field.getFormField()); }
public void addUnmappedField(FormField field) { if(fieldIds.contains(field.getId())) { throw new IllegalArgumentException("Duplicate field id " + field.getId()); } fieldIds.add(field.getId()); formClass.addElement(field); }
public void add(FieldMapping fieldMapping) { if(fieldIds.contains(fieldMapping.getFieldId())) { throw new IllegalArgumentException("Duplicate field id " + fieldMapping.getFieldId()); } fieldIds.add(fieldMapping.getFieldId()); formClass.addElement(fieldMapping.getFormField()); mappings.add(fieldMapping); }
@Override public FormClass getFormClass() { FormClass formClass = new FormClass(resourceId); formClass.setLabel(featureSource.getName().getLocalPart()); List<AttributeDescriptor> attributes = featureSource.getSchema().getAttributeDescriptors(); for (int i = 0; i < attributes.size(); i++) { AttributeDescriptor attribute = attributes.get(i); formClass.addElement(toField(i, attribute)); } return formClass; }
public Forms() { village = form("village"); village.addElement(textField("name")); village.addElement(textField("code")); school = form("school"); school.addElement(textField("name")); school.addElement(textField("schoolId")); school.addElement(referenceField("village", village)); student = form("student"); student.addElement(textField("name")); student.addElement(textField("studentId")); student.addElement(referenceField("school", school)); formClassProvider = FormClassProviders.of(village, school, student); }
public void addComments(){ FormField commentsField = new FormField(field(classId, COMMENT_FIELD)) .setLabel("Comments") .setCode("comments") .setType(NarrativeType.INSTANCE) .setRequired(false); formClass.addElement(commentsField); addComments(commentsField); }
private FormClass formClass(String id, FormField... fields) { FormClass formClass = new FormClass(ResourceId.valueOf(id)); formClass.setLabel(id); for (FormField field : fields) { formClass.addElement(field); } return formClass; }
public void addPartnerField() { FormField partnerField = new FormField(field(classId, PARTNER_FIELD)) .setLabel("Partner") .setCode("partner") .setType(ReferenceType.single(activity.getPartnerFormClassId())) .setRequired(true); formClass.addElement(partnerField); addPartnerField(partnerField); }
public void addSiteField() { FormField siteField = new FormField(field(classId, SITE_FIELD)); siteField.setLabel("Site"); siteField.setCode("site"); siteField.setType(ReferenceType.single(CuidAdapter.activityFormClass(activity.getId()))); siteField.setRequired(true); formClass.addElement(siteField); mappings.add(new FieldMapping(siteField, "siteId", new ReferenceConverter(activity.getSiteFormClassId(), SITE_DOMAIN))); }
public void addLocationField() { FormField locationField = new FormField(field(classId, LOCATION_FIELD)); locationField.setLabel(activity.getLocationTypeName()); locationField.setCode("location"); locationField.setType(ReferenceType.single(activity.getLocationFormClassIds())); locationField.setRequired(true); formClass.addElement(locationField); // TODO: how do we deal with this?? addLocationField(locationField); }
public void addProjectField() { // For new "beta" forms, we build the form class exactly once, // and at this stage we hide the project field by default. FormField projectField = new FormField(field(classId, PROJECT_FIELD)) .setLabel("Project") .setCode("project") .setType(ReferenceType.single(activity.getProjectFormClassId())) .setVisible(activity.isClassicView()) .setRequired(false); formClass.addElement(projectField); addProjectField(projectField); }
private FormField addField(FormClass formClass, FieldTypeClass typeClass, SourceRow row) { FormField field = new FormField(ResourceId.generateFieldId(typeClass)); field.setLabel(fieldName.getOrThrow(row)); field.setCode(fieldCode.get(row)); field.setDescription(fieldDescription.get(row)); field.setRequired(isTruthy(fieldRequired.get(row))); field.setVisible(true); formClass.addElement(field); return field; }
@Test public void validQuantity() throws JsonMappingException { ResourceId fieldId = ResourceId.valueOf("Q1"); FormClass formClass = new FormClass(ResourceId.valueOf("XYZ123")); formClass.addElement(new FormField(fieldId).setType(new QuantityType("meters"))); JsonValue fields = createObject(); fields.put("Q1", 41.3); JsonValue change = createObject(); change.put("recordId", "A"); change.put("formId", "XYZ123"); change.put("fields", fields); TypedRecordUpdate update = Updater.parseChange(formClass, change, userId); assertThat(update.getChangedFieldValues().get(fieldId), equalTo((FieldValue)new Quantity(41.3))); }
private FormClass addAttachmentField(FormClass formClass, ResourceId attachmentFieldId) { formClass.addElement(new FormField(attachmentFieldId) .setLabel("Attachment") .setType(AttachmentType.TYPE_CLASS.createType()) .setVisible(true)); assertResolves(locator.persist(formClass)); return assertResolves(locator.getFormClass(formClass.getId())); // re-fetch }
@Test public void serializationWithMissingLabel() { FormClass formClass = new FormClass(ResourceId.generateId()); formClass.setLabel("Form"); FormField field = new FormField(ResourceId.generateId()); field.setType(TextType.SIMPLE); formClass.addElement(field); JsonValue jsonObject = formClass.toJson(); FormClass reform = FormClass.fromJson(jsonObject); assertThat(reform.getFields(), hasSize(1)); }
@Test public void barcodes() { FormClass formClass = assertResolves(locator.getFormClass(CuidAdapter.activityFormClass(11218))); ResourceId barcodeId = ResourceId.generateFieldId(BarcodeType.TYPE_CLASS); formClass.addElement(new FormField(barcodeId) .setLabel("HH ID") .setType(BarcodeType.INSTANCE) .setVisible(true)); assertResolves(locator.persist(formClass)); FormClass formClass2 = assertResolves(locator.getFormClass(CuidAdapter.activityFormClass(11218))); FormField field = findFieldByLabel(formClass2.getFields(), "HH ID"); assertThat(field.getType(), instanceOf(BarcodeType.class)); }
@Test public void missingValue() throws JsonMappingException { ResourceId fieldId = ResourceId.valueOf("Q1"); FormClass formClass = new FormClass(ResourceId.valueOf("XYZ123")); formClass.addElement(new FormField(fieldId).setType(new QuantityType("meters"))); JsonValue fields = createObject(); fields.put("Q1", Json.createNull()); JsonValue change = createObject(); change.put("recordId", "A"); change.put("formId", "XYZ123"); change.put("fields", fields); TypedRecordUpdate update = Updater.parseChange(formClass, change, userId); assertTrue(update.getChangedFieldValues().containsKey(fieldId)); }
@Test(expected = InvalidUpdateException.class) public void invalidParsedQuantity() throws JsonMappingException { ResourceId fieldId = ResourceId.valueOf("Q1"); FormClass formClass = new FormClass(ResourceId.valueOf("XYZ123")); formClass.addElement(new FormField(fieldId).setType(new QuantityType("meters"))); JsonValue fields = createObject(); fields.put("Q1", "4.1.3"); JsonValue change = createObject(); change.put("recordId", "A"); change.put("formId", "XYZ123"); change.put("fields", fields); Updater.parseChange(formClass, change, userId); }
@Test(expected = InvalidUpdateException.class) public void invalidQuantity() throws JsonMappingException { ResourceId fieldId = ResourceId.valueOf("Q1"); FormClass formClass = new FormClass(ResourceId.valueOf("XYZ123")); formClass.addElement(new FormField(fieldId).setType(new QuantityType("meters"))); JsonValue fields = createObject(); fields.put("Q1", "Hello World"); JsonValue change = createObject(); change.put("recordId", "A"); change.put("formId", "XYZ123"); change.put("fields", fields); Updater.parseChange(formClass, change, userId); }
@Test @OnDataSet("/dbunit/invalid-relevance.db.xml") public void invalidExpr() throws Exception { setUser(USER_ID); FormClass formClass = resourceLocator.getFormClass(CuidAdapter.activityFormClass(ACTIVITY_ID)); FormField field = new FormField(ResourceId.generateFieldId(QuantityType.TYPE_CLASS)); field.setLabel("Question"); field.setType(new QuantityType()); field.setRelevanceConditionExpression("DELETED_FIELD=1"); formClass.addElement(field); resourceLocator.persist(formClass); Response form = this.formResource.form(ACTIVITY_ID); validate(form); }