protected List<RegistrationSectionData> getRegistrationData( List<AppDescriptor> regAppDescriptors, final DataContextWrapper dataContext) { if (CollectionUtils.isEmpty(regAppDescriptors)) { throw new APIException("No Registration App instance enabled."); // TODO Check what REALLY happens by default when there are no reg apps around. } if (regAppDescriptors.size() > 1) { // TODO Check whether this is possible throw new APIException("Multiple Registration App instances enabled at the same time."); } final AppDescriptor regAppDesc = regAppDescriptors.get(0); List<RegistrationSectionData> sections = new ArrayList<RegistrationSectionData>(); // First: filling the registration data structure RegistrationDataHelper dataHelper = new RegistrationDataHelper(); try { sections = dataHelper.getSectionsFromConfig(regAppDesc.getConfig()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // Second: fetching the registration data for (RegistrationSectionData section : sections) { section.fetchData(dataContext); Extension linkExtension = new Extension(); linkExtension.setLabel("general.edit"); linkExtension.setType("link"); linkExtension.setUrl( "registrationapp/editSection.page?patientId={{patient.patientId}}§ionId=" + section.getId() + "&appId=" + regAppDesc.getId()); /* * We don't allow edit links for sections where obs-type fields are involved. * This is because registration app's editSection.gsp doesn't handle them * and it doesn't actually fail on them either, giving the impression that everything was saved as expected. */ if (!section.isWithObs()) { section.setLinkExtension(linkExtension); } } return sections; }
private void validate(Extension extension) { Set<ConstraintViolation<Extension>> constraintViolations = validator.validate(extension); if (!constraintViolations.isEmpty()) throw new IllegalArgumentException(constraintViolations.iterator().next().getMessage()); if (this.extensions.contains(extension)) throw new IllegalArgumentException("Extension already exists: " + extension.getId()); }