public BlankSubForm(GenericForm parentForm) { this.parentForm = parentForm; formClass = new FormClass(FORM_ID); formClass.setLabel("Blank Sub-Form"); formClass.setSubFormKind(SubFormKind.REPEATING); formClass.setParentFormId(parentForm.getFormId()); generator = new RecordGenerator(formClass) .parentForm(parentForm); }
public FormClass registerNewSubform(ResourceId formFieldId, SubFormKind subFormKind) { final FormClass formClass = new FormClass(ResourceId.generateId()); formClass.setDatabaseId(rootFormClass.getDatabaseId()); formClass.setSubFormKind(subFormKind); registerSubform(formFieldId, formClass); return formClass; }
public SimpleReferenceForm(Ids ids, TestForm referencedForm) { this.referencedForm = referencedForm; formClass = new FormClass(FORM_ID); formClass.setLabel("Simple Reference Form"); formClass.setDatabaseId(ids.databaseId()); refField = formClass.addField(REF_FIELD_ID) .setCode("REF") .setLabel("Reference Field") .setType(new ReferenceType(Cardinality.SINGLE, referencedForm.getFormId())) .setRequired(true) .setVisible(true); generator = new RecordGenerator(formClass) .distribution(REF_FIELD_ID, new RefGenerator(referencedForm)); }
public ClinicSubForm(Ids ids, TestForm parentForm, int recordCount) { formClass = new FormClass(ids.formId("CLINIC_MONTHLY")); formClass.setParentFormId(parentForm.getFormId()); formClass.setSubFormKind(SubFormKind.MONTHLY); formClass.setDatabaseId(ids.databaseId()); formClass.setLabel("Monthly statistics"); consultsField = new FormField(ids.fieldId("F1")); consultsField.setLabel("Number of consultations"); consultsField.setCode("NUM_CONSULT"); consultsField.setRequired(true); consultsField.setType(new QuantityType("patients")); formClass.addElement(consultsField); generator = new RecordGenerator(formClass); generator.parentForm(parentForm); generator.distribution(consultsField.getId(), new IntegerGenerator(50, 250, 0.0)); records = new LazyRecordList(generator, recordCount); }
@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 invalidFormSchema() { FormClass formClass = new FormClass(ResourceId.valueOf("XYZ")); formClass.addField(ResourceId.valueOf("F1")) .setCode("A") .setLabel("Field A1") .setType(TextType.SIMPLE); formClass.addField(ResourceId.valueOf("F2")) .setCode("A") .setLabel("Field A2") .setType(TextType.SIMPLE); TestBatchFormClassProvider formProvider = new TestBatchFormClassProvider(); formProvider.add(formClass); FormTreeBuilder formTreeBuilder = new FormTreeBuilder(formProvider); FormTree formTree = formTreeBuilder.queryTree(formClass.getId()); FormulaValidator validator = new FormulaValidator(formTree); assertFalse(validator.validate(FormulaParser.parse("A"))); assertThat(validator.getErrors(), hasSize(1)); }
@Ignore @Test public void doNotPersistFormClassWithStaleSubformReference() { setupForms(); FormClass formClass = new FormClass(ResourceId.generateId()); formClass.setDatabaseId(DATABASE_ID); FormClass subform = new FormClass(ResourceId.generateId()); subform.setDatabaseId(DATABASE_ID); FormField subformOwnerField = formClass.addField(CuidAdapter.generateIndicatorId()); subformOwnerField.setType(new SubFormReferenceType(subform.getId())); locator.persist(formClass).then(new AsyncCallback<Void>() { @Override public void onFailure(Throwable caught) { // expected result } @Override public void onSuccess(Void result) { throw new RuntimeException("FormClass is persisted with stale (non-existent) SubFormClass reference."); } }); }
@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 BioDataForm(IntakeForm intakeForm) { this.intakeForm = intakeForm; formClass = new FormClass(FORM_ID); formClass.setLabel("Confidential BioData"); codeField = formClass.addField(PROTECTION_CODE_FIELD_ID) .setCode("PCODE") .setLabel("Protection Code") .setType(new ReferenceType(Cardinality.SINGLE, intakeForm.getFormId())) .setRequired(true) .setKey(true) .setVisible(true); generator = new RecordGenerator(formClass) .distribution(PROTECTION_CODE_FIELD_ID, new RefKeyGenerator(intakeForm)); }
public FormMetadataProviderStub(FormClass... forms) { for (FormClass form : forms) { map.put(form.getId(), form); } }
private FormClass getFormClass(SourceRow row) { String name = formName.get(row); FormClass formClass = formMap.get(name); if (formClass == null) { formClass = new FormClass(CuidAdapter.activityFormClass(keyGenerator.generateInt())); formClass.setDatabaseId(databaseId); formClass.setLabel(name); formMap.put(name, formClass); } return formClass; }
@Test public void serializationTest() throws IOException, ClassNotFoundException { // Large form class FormClass formClass = new FormClass(ResourceId.generateId()); formClass.setLabel("Widget survey"); for (int i = 0; i < 1000; i++) { formClass.addField(ResourceId.generateId()) .setLabel("How many widgets?") .setType(new QuantityType("people")); } assertTrue(formClass.toJsonString().length() > 0xFFFF); Activity activity = new Activity(); activity.serializedFormClass = new Activity.FormClassHolder(); activity.serializedFormClass.value = formClass; ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(activity); // Re-read ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray())); Activity reread = (Activity) ois.readObject(); assertThat(reread.getSerializedFormClass().toJsonString(), equalTo(formClass.toJsonString())); }
private Optional<FormField> findReferenceKey(FormClass formClass) { for (FormField formField : formClass.getFields()) { if(formField.isKey() && formField.getType() instanceof ReferenceType) { return Optional.of(formField); } } return Optional.absent(); }
private Optional<FormField> findKeyField(FormClass formClass) { if(formClass.isSubForm() && formClass.getSubFormKind().isPeriod()) { for (FormField formField : formClass.getFields()) { if(formField.getType() instanceof PeriodType && formField.isKey()) { return Optional.of(formField); } } } return Optional.empty(); }
private void givenRootForm(String label, FormField... fields) { if(rootFormClass != null) { throw new IllegalStateException("Root Form Class already set"); } rootFormClass = new FormClass(ResourceId.valueOf(label)); rootFormClass.setLabel(label); rootFormClass.getElements().addAll(Arrays.asList(fields)); }