private static void sortFormClassFields(FormClass formClass, final Map<ResourceId, Integer> sortMap) { Collections.sort(formClass.getElements(), new Comparator<FormElement>() { @Override public int compare(FormElement o1, FormElement o2) { Integer c1 = sortMap.get(o1.getId()); Integer c2 = sortMap.get(o2.getId()); return c1 != null && c2 != null ? c1.compareTo(c2) : 0; } }); }
public List<FormSection> getSections() { final List<FormSection> sections = Lists.newArrayList(); collectFields(sections, getElements(), new Predicate<FormElement>() { @Override public boolean apply(@Nullable FormElement input) { return input instanceof FormSection; } }); return sections; }
public List<FormField> getFields() { final List<FormField> fields = Lists.newArrayList(); collectFields(fields, getElements(), new Predicate<FormElement>() { @Override public boolean apply(@Nullable FormElement input) { return input instanceof FormField; } }); return fields; }
/** * Previously, when forms were cloned, the 'period' field was cloned along with it but * given a new id in the form 'p34243423'. The routine above then added another field with the * id 'period'. This removes the extra field. * */ private static FormClass removeExtraSubFormPeriodField(FormClass formClass) { ListIterator<FormElement> it = formClass.getElements().listIterator(); while(it.hasNext()) { FormElement element = it.next(); if(element instanceof FormField) { FormField field = (FormField) element; if (field.getType().equals(formClass.getSubFormKind().getPeriodType()) && field.isKey() && !field.getId().equals(PERIOD_FIELD_ID) && field.getId().asString().startsWith("p")) { it.remove(); } } } return formClass; }
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)); }
private FormClass validateNewFormClass(FormClass formClass) { Map<ResourceId, FormField> fieldMap = new HashMap<>(); for (FormField field : formClass.getFields()) { fieldMap.put(field.getId(), field); } ResourceId partnerFieldId = CuidAdapter.partnerField(activityId); FormField partnerField = fieldMap.get(partnerFieldId); if(partnerField == null) { partnerField = new FormField(partnerFieldId); partnerField.setLabel("Partner"); partnerField.setVisible(true); partnerField.setRequired(true); formClass.getElements().add(0, partnerField); } // Ensure partner type is correct: partnerField.setType(new ReferenceType(Cardinality.SINGLE, CuidAdapter.partnerFormId(databaseId))); return formClass; }
private static FormClass ensureSubFormHasPeriodField(FormClass formClass) { Optional<FormField> period = formClass.getFieldIfPresent(PERIOD_FIELD_ID); if(period.isPresent()) { return formClass; } // Add period field FormField periodField = new FormField(ResourceId.valueOf("period")); periodField.setLabel(fieldName(formClass.getSubFormKind())); periodField.setType(formClass.getSubFormKind().getPeriodType()); periodField.setKey(true); periodField.setRequired(true); periodField.setVisible(true); formClass.getElements().add(0, periodField); return formClass; }
@Test public void deleteAttributeGroup() { FormClass formClass = assertResolves(locator.getFormClass(CuidAdapter.activityFormClass(1))); // Remove attribute ListIterator<FormElement> it = formClass.getElements().listIterator(); while(it.hasNext()) { FormElement element = it.next(); if(element.getLabel().equals("Cause")) { it.remove(); } } assertResolves(locator.persist(formClass)); // Ensure deleted ActivityFormDTO form = execute(new GetActivityForm(1)); assertTrue("Cause attribute is gone", form.getAttributeGroupById(1) == null); }
newField.setType(new EnumType(Cardinality.SINGLE, Arrays.asList(yes, no))); formClass.getElements().add(newField);
private void assertFormClass(FormClass sourceFormClass, FormClass targetFormClass) { assertNotEquals(sourceFormClass.getId(), targetFormClass.getId()); assertEquals(sourceFormClass.getLabel(), targetFormClass.getLabel()); assertEquals(sourceFormClass.getDescription(), targetFormClass.getDescription()); // fields for (FormField sourceField : sourceFormClass.getFields()) { FormField targetField = (FormField) elementByName(targetFormClass.getElements(), sourceField.getLabel()); assertNotEquals(sourceField.getId(), targetField.getId()); assertEquals(sourceField.getDescription(), targetField.getDescription()); assertEquals(sourceField.getCode(), targetField.getCode()); assertEquals(sourceField.getRelevanceConditionExpression(), targetField.getRelevanceConditionExpression()); assertEquals(sourceField.getType().getTypeClass(), targetField.getType().getTypeClass()); // todo if (sourceField.getType() instanceof ReferenceType) { // need something more sophisticated to check equality of ReferenceType } else if (sourceField.getType() instanceof EnumType) { // need something more sophisticated to check equality of ReferenceType } } // sections for (FormSection sourceSection : sourceFormClass.getSections()) { FormSection targetSection = (FormSection) elementByName(targetFormClass.getElements(), sourceSection.getLabel()); assertNotEquals(sourceSection.getId(), targetSection.getId()); assertEquals(sourceSection.getLabel(), targetSection.getLabel()); } }