/** * @see org.openmrs.module.htmlformentry.action.FormSubmissionControllerAction#validateSubmission(org.openmrs.module.htmlformentry.FormEntryContext, * javax.servlet.http.HttpServletRequest) */ @Override public Collection<FormSubmissionError> validateSubmission(FormEntryContext context, HttpServletRequest submission) { List<FormSubmissionError> ret = new ArrayList<FormSubmissionError>(); try { if (dateWidget != null) { Date date = dateWidget.getValue(context, submission); if (date != null) { if (OpenmrsUtil.compare(date, new Date()) > 0) { ret.add(new FormSubmissionError(dateWidget, Context.getMessageSourceService().getMessage( "htmlformentry.error.cannotBeInFuture"))); } } } } catch (Exception ex) { ret.add(new FormSubmissionError(dateWidget, ex.getMessage())); } return ret; }
/** * Returns a fragment of javascript that will display any error widgets that had errors on the * last submission. */ public String getLastSubmissionErrorJavascript() { if (context.getMode() == Mode.VIEW) { // in VIEW mode there are no error widgets return ""; } StringBuilder sb = new StringBuilder(); List<FormSubmissionError> errs = submissionController.getLastSubmissionErrors(); if (errs != null && errs.size() > 0) { for (FormSubmissionError error : errs) { if (error.getSourceWidget() != null) sb.append("showError('" + context.getErrorFieldId(error.getSourceWidget()) + "', '" + error.getError() + "');\n"); else sb.append("showError('" + error.getId() + "', '" + error.getError() + "');\n"); } } return sb.toString(); }
@Override public void testResults(SubmissionResults results) { results.assertErrors(1); FormSubmissionError error = results.getValidationErrors().get(0); assertThat(error.getError(), is("htmlformentry.error.cannotBeInFuture")); } }.run();
@Test public void testValidateSubmission_shouldCallAllRegisteredActions() { TestRepeatControllerAction action = new TestRepeatControllerAction(); final int NUM_ACTIONS = 5; for (int i = 0; i < NUM_ACTIONS; i++) { action.addAction(new TestAction(i)); } Collection<FormSubmissionError> errors = action.validateSubmission(formEntryContext, new MockHttpServletRequest()); // Validate all returned errors are merged together int i = 0; for (FormSubmissionError error : errors) { Assert.assertEquals(String.valueOf(i), error.getId()); i++; } Assert.assertEquals(NUM_ACTIONS, errors.size()); // Validate all validation functions are called Assert.assertEquals(NUM_ACTIONS, validationCalledActionIds.size()); action.handleSubmission(formEntrySession, new MockHttpServletRequest()); // Validate all submission functions are called Assert.assertEquals(NUM_ACTIONS, submissionCalledActionIds.size()); } }
@Override public void testResults(SubmissionResults results) { results.assertErrors(1); List<FormSubmissionError> errors = results.getValidationErrors(); for(FormSubmissionError error : errors){ Assert.assertEquals("w12", error.getId().trim()); Assert.assertEquals("htmlformentry.error.required", error.getError().trim()); } }
@Override public Collection<FormSubmissionError> validateSubmission( FormEntryContext context, HttpServletRequest submission) { List<FormSubmissionError> ret = new ArrayList<FormSubmissionError>(); Object value = null; try { value = valueWidget.getValue(context, submission); } catch (Exception ex) { ret.add(new FormSubmissionError(valueWidget, ex.getMessage())); } if (required) { if (value == null) { ret.add(new FormSubmissionError(valueWidget, Context.getMessageSourceService().getMessage("htmlformentry.error.required"))); } else if (value instanceof String) { String valueStr = (String) value; if (StringUtils.isEmpty(valueStr)) { ret.add(new FormSubmissionError(valueWidget, Context.getMessageSourceService().getMessage("htmlformentry.error.required"))); } } } return ret; }
@Override public void testEditedResults(SubmissionResults results){ results.assertErrors(1); List<FormSubmissionError> errors = results.getValidationErrors(); for(FormSubmissionError error : errors){ Assert.assertEquals("w8", error.getId().trim()); Assert.assertEquals("htmlformentry.error.required", error.getError().trim()); } }
@Override public Collection<FormSubmissionError> validateSubmission(FormEntryContext context, HttpServletRequest submission) { validationCalledActionIds.add(id); List<FormSubmissionError> errors = new ArrayList<FormSubmissionError>(); errors.add(new FormSubmissionError(String.valueOf(id), "")); return errors; }
@Override public void testResults(SubmissionResults results) { results.assertErrors(1); List<FormSubmissionError> errors = results.getValidationErrors(); for(FormSubmissionError error : errors){ Assert.assertEquals("w14", error.getId().trim()); Assert.assertEquals("htmlformentry.error.required", error.getError().trim()); } }
private boolean validateMandatoryField(FormEntryContext context, HttpServletRequest request, Widget widget, ErrorWidget errorWidget, List<FormSubmissionError> ret) { try { if (widget != null) { Object obj = widget.getValue(context, request); if (obj == null || (obj instanceof String && !StringUtils.hasText((String) obj))) { throw new Exception("htmlformentry.error.required"); } } } catch (Exception ex) { ret.add(new FormSubmissionError(context.getFieldName(errorWidget), Context.getMessageSourceService().getMessage(ex.getMessage()))); return false; } return true; }
@Override public void testEditedResults(SubmissionResults results){ results.assertErrors(1); List<FormSubmissionError> errors = results.getValidationErrors(); for(FormSubmissionError error : errors){ Assert.assertEquals("w10", error.getId().trim()); Assert.assertEquals("htmlformentry.error.required" , error.getError().trim()); } }
ret.add(new FormSubmissionError(valueWidget, ex.getMessage())); ret.add(new FormSubmissionError(dateWidget, ex.getMessage())); ret.add(new FormSubmissionError(valueWidget, Context.getMessageSourceService().getMessage( "htmlformentry.error.dateWithoutValue"))); ret.add(new FormSubmissionError(dateWidget, Context.getMessageSourceService().getMessage( "htmlformentry.error.cannotBeInFuture"))); ret.add(new FormSubmissionError(valueWidget, Context.getMessageSourceService().getMessage( "htmlformentry.error.cannotBeInFuture"))); ret.add(new FormSubmissionError(valueWidget, Context.getMessageSourceService().getMessage( "htmlformentry.error.required"))); } else if (value instanceof String) { String valueStr = (String) value; if (StringUtils.isEmpty(valueStr)) { ret.add(new FormSubmissionError(valueWidget, Context.getMessageSourceService().getMessage( "htmlformentry.error.required")));
@Test public void testPatientIdentifierValidation() throws Exception { // <patient field="identifier" identifierTypeId="1" /> FormEntryContext context = new FormEntryContext(FormEntryContext.Mode.ENTER); Map<String, String> attributes = new HashMap<String, String>(); attributes.put("field", "identifier"); attributes.put("identifierTypeId", "1"); PatientDetailSubmissionElement element = new PatientDetailSubmissionElement(context, attributes); String html = element.generateHtml(context); MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("w1", "invalid-identifier"); request.addParameter("w3", "1"); // this is the hidden input for identifier type Collection<FormSubmissionError> errors = element.validateSubmission(context, request); assertThat(errors.size(), is(1)); assertThat(errors.iterator().next().getId(), is("w2")); // the error widget for w1 assertThat(errors.iterator().next().getError(), is("PatientIdentifier.error.unallowedIdentifier")); request.setParameter("w1", "1-1"); errors = element.validateSubmission(context, request); assertThat(errors.size(), is(1)); assertThat(errors.iterator().next().getId(), is("w2")); // the error widget for w1 assertThat(errors.iterator().next().getError(), is("PatientIdentifier.error.checkDigitWithParameter")); request.setParameter("w1", "1-8"); // TODO make sure this is a valid identifier with check digit errors = element.validateSubmission(context, request); assertThat(errors.size(), is(0)); }
/** * @see org.openmrs.module.htmlformentry.action.FormSubmissionControllerAction#validateSubmission(org.openmrs.module.htmlformentry.FormEntryContext, javax.servlet.http.HttpServletRequest) */ @Override public Collection<FormSubmissionError> validateSubmission(FormEntryContext context, HttpServletRequest submission) { if (!required) { return null; } EncounterRole role = encounterRole; Provider provider = null; List<FormSubmissionError> ret = new ArrayList<FormSubmissionError>(); if (roleWidget != null) { role = (EncounterRole) roleWidget.getValue(context, submission); if (role == null) ret.add(new FormSubmissionError(roleWidget, Context.getMessageSourceService().getMessage("htmlformentry.error.required"))); } boolean atLeastOneProviderSpecified = false; for (Widget providerWidget : providerWidgets) { if (providerWidget != null) { provider = (Provider) providerWidget.getValue(context, submission); if (provider != null) { atLeastOneProviderSpecified = true; } } } if (!atLeastOneProviderSpecified) { ret.add(new FormSubmissionError(providerWidgets.get(0), Context.getMessageSourceService().getMessage("htmlformentry.error.required"))); } return ret; }
/** * @should return validation errors if value is not filled in and required * @see org.openmrs.module.htmlformentry.action.FormSubmissionControllerAction#validateSubmission(org.openmrs.module.htmlformentry.FormEntryContext, javax.servlet.http.HttpServletRequest) */ @Override public Collection<FormSubmissionError> validateSubmission(FormEntryContext context, HttpServletRequest submission) { List<FormSubmissionError> ret = new ArrayList<FormSubmissionError>(); try { if (personWidget != null) { if (required && !relationshipWidget.isAllRelationshipsFullfilled() && (personWidget.getValue(context, submission) == null || personWidget.getValue(context, submission).toString().trim().length() == 0)) { throw new Exception("htmlformentry.error.required"); } } if (personStubWidget != null) { if (required && !relationshipWidget.isAllRelationshipsFullfilled() && (personStubWidget.getValue(context, submission) == null || personStubWidget.getValue(context, submission).toString().trim().length() == 0)) { throw new Exception("htmlformentry.error.required"); } } } catch (Exception ex) { ret.add(new FormSubmissionError(context .getFieldName(personErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); } return ret; }
ret.add(new FormSubmissionError(context .getFieldName(startDateErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context .getFieldName(discontinuedDateErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context .getFieldName(discontinuedReasonErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage())));
ret.add(new FormSubmissionError(context.getFieldName(dateErrorWidget), Context.getMessageSourceService() .getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context.getFieldName(providerErrorWidget), Context.getMessageSourceService() .getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context.getFieldName(locationErrorWidget), Context.getMessageSourceService() .getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context.getFieldName(encounterTypeErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage())));
PersonName personName = nameWidget.getValue(context, request); if(!StringUtils.hasText(personName.getGivenName()) || !StringUtils.hasText(personName.getFamilyName())){ ret.add(new FormSubmissionError(context.getFieldName(nameErrorWidget), Context.getMessageSourceService().getMessage("htmlformentry.error.name.required"))); ret.add(new FormSubmissionError(context.getFieldName(ageErrorWidget), e.getMessage())); if (birthDateWidget.getValue(context, request) != null && OpenmrsUtil.compare((Date) birthDateWidget.getValue(context, request), new Date()) > 0) { ret.add(new FormSubmissionError(context.getFieldName(birthDateErrorWidget), Context.getMessageSourceService().getMessage( "htmlformentry.error.cannotBeInFuture"))); ret.add(new FormSubmissionError(context.getFieldName(birthDateErrorWidget), e.getMessage())); ret.add(new FormSubmissionError(context.getFieldName(ageErrorWidget), Context.getMessageSourceService().getMessage( "Person.birthdate.required"))); ret.add(new FormSubmissionError(context.getFieldName(identifierTypeValueErrorWidget), e.getMessage()));
throw new IllegalArgumentException("htmlformentry.error.cannotChooseADrugHeader"); } catch (Exception ex){ ret.add(new FormSubmissionError(context .getFieldName(drugErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context .getFieldName(doseErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context .getFieldName(startDateErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context .getFieldName(discontinuedDateErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context .getFieldName(discontinuedReasonErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage()))); ret.add(new FormSubmissionError(context .getFieldName(orderDurationErrorWidget), Context .getMessageSourceService().getMessage(ex.getMessage())));