/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.web; import java.text.NumberFormat; import java.util.Date; import org.openmrs.Cohort; import org.openmrs.Concept; import org.openmrs.ConceptAnswer; import org.openmrs.ConceptAttributeType; import org.openmrs.ConceptClass; import org.openmrs.ConceptDatatype; import org.openmrs.ConceptMapType; import org.openmrs.ConceptName; import org.openmrs.ConceptNumeric; import org.openmrs.ConceptReferenceTerm; import org.openmrs.ConceptSource; import org.openmrs.Drug; import org.openmrs.Encounter; import org.openmrs.Form; import org.openmrs.Location; import org.openmrs.LocationAttributeType; import org.openmrs.LocationTag; import org.openmrs.Order; import org.openmrs.Patient; import org.openmrs.PatientIdentifierType; import org.openmrs.Person; import org.openmrs.PersonAttribute; import org.openmrs.PersonAttributeType; import org.openmrs.Privilege; import org.openmrs.Program; import org.openmrs.ProgramWorkflow; import org.openmrs.ProgramWorkflowState; import org.openmrs.Provider; import org.openmrs.Role; import org.openmrs.User; import org.openmrs.Visit; import org.openmrs.VisitType; import org.openmrs.api.context.Context; import org.openmrs.propertyeditor.CohortEditor; import org.openmrs.propertyeditor.ConceptAnswerEditor; import org.openmrs.propertyeditor.ConceptAttributeTypeEditor; import org.openmrs.propertyeditor.ConceptClassEditor; import org.openmrs.propertyeditor.ConceptDatatypeEditor; import org.openmrs.propertyeditor.ConceptEditor; import org.openmrs.propertyeditor.ConceptMapTypeEditor; import org.openmrs.propertyeditor.ConceptNameEditor; import org.openmrs.propertyeditor.ConceptNumericEditor; import org.openmrs.propertyeditor.ConceptReferenceTermEditor; import org.openmrs.propertyeditor.ConceptSourceEditor; import org.openmrs.propertyeditor.DateOrDatetimeEditor; import org.openmrs.propertyeditor.DrugEditor; import org.openmrs.propertyeditor.EncounterEditor; import org.openmrs.propertyeditor.FormEditor; import org.openmrs.propertyeditor.LocationAttributeTypeEditor; import org.openmrs.propertyeditor.LocationEditor; import org.openmrs.propertyeditor.LocationTagEditor; import org.openmrs.propertyeditor.OrderEditor; import org.openmrs.propertyeditor.PatientEditor; import org.openmrs.propertyeditor.PatientIdentifierTypeEditor; import org.openmrs.propertyeditor.PersonAttributeEditor; import org.openmrs.propertyeditor.PersonAttributeTypeEditor; import org.openmrs.propertyeditor.PersonEditor; import org.openmrs.propertyeditor.PrivilegeEditor; import org.openmrs.propertyeditor.ProgramEditor; import org.openmrs.propertyeditor.ProgramWorkflowEditor; import org.openmrs.propertyeditor.ProgramWorkflowStateEditor; import org.openmrs.propertyeditor.ProviderEditor; import org.openmrs.propertyeditor.RoleEditor; import org.openmrs.propertyeditor.UserEditor; import org.openmrs.propertyeditor.VisitEditor; import org.openmrs.propertyeditor.VisitTypeEditor; import org.springframework.beans.propertyeditors.CustomNumberEditor; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.support.WebBindingInitializer; import org.springframework.web.context.request.WebRequest; /** * Shared WebBindingInitializer that allows all OpenMRS annotated controllers to use our custom * editors. */ public class OpenmrsBindingInitializer implements WebBindingInitializer { /** * @see org.springframework.web.bind.support.WebBindingInitializer#initBinder(org.springframework.web.bind.WebDataBinder, * org.springframework.web.context.request.WebRequest) */ @Override public void initBinder(WebDataBinder wdb, WebRequest request) { wdb.registerCustomEditor(Cohort.class, new CohortEditor()); wdb.registerCustomEditor(Concept.class, new ConceptEditor()); wdb.registerCustomEditor(ConceptAnswer.class, new ConceptAnswerEditor()); wdb.registerCustomEditor(ConceptClass.class, new ConceptClassEditor()); wdb.registerCustomEditor(ConceptDatatype.class, new ConceptDatatypeEditor()); wdb.registerCustomEditor(ConceptName.class, new ConceptNameEditor()); wdb.registerCustomEditor(ConceptNumeric.class, new ConceptNumericEditor()); wdb.registerCustomEditor(ConceptSource.class, new ConceptSourceEditor()); wdb.registerCustomEditor(Drug.class, new DrugEditor()); wdb.registerCustomEditor(Encounter.class, new EncounterEditor()); wdb.registerCustomEditor(Form.class, new FormEditor()); wdb.registerCustomEditor(Location.class, new LocationEditor()); wdb.registerCustomEditor(LocationTag.class, new LocationTagEditor()); wdb.registerCustomEditor(LocationAttributeType.class, new LocationAttributeTypeEditor()); wdb.registerCustomEditor(Order.class, new OrderEditor()); wdb.registerCustomEditor(Patient.class, new PatientEditor()); wdb.registerCustomEditor(PatientIdentifierType.class, new PatientIdentifierTypeEditor()); wdb.registerCustomEditor(PersonAttribute.class, new PersonAttributeEditor()); wdb.registerCustomEditor(PersonAttributeType.class, new PersonAttributeTypeEditor()); wdb.registerCustomEditor(Person.class, new PersonEditor()); wdb.registerCustomEditor(Privilege.class, new PrivilegeEditor()); wdb.registerCustomEditor(Program.class, new ProgramEditor()); wdb.registerCustomEditor(ProgramWorkflow.class, new ProgramWorkflowEditor()); wdb.registerCustomEditor(ProgramWorkflowState.class, new ProgramWorkflowStateEditor()); wdb.registerCustomEditor(Provider.class, new ProviderEditor()); wdb.registerCustomEditor(Role.class, new RoleEditor()); wdb.registerCustomEditor(User.class, new UserEditor()); wdb.registerCustomEditor(java.lang.Integer.class, new CustomNumberEditor(java.lang.Integer.class, NumberFormat .getInstance(Context.getLocale()), true)); wdb.registerCustomEditor(Date.class, new DateOrDatetimeEditor()); wdb.registerCustomEditor(PatientIdentifierType.class, new PatientIdentifierTypeEditor()); wdb.registerCustomEditor(ConceptMapType.class, new ConceptMapTypeEditor()); wdb.registerCustomEditor(ConceptSource.class, new ConceptSourceEditor()); wdb.registerCustomEditor(ConceptReferenceTerm.class, new ConceptReferenceTermEditor()); wdb.registerCustomEditor(ConceptAttributeType.class, new ConceptAttributeTypeEditor()); wdb.registerCustomEditor(VisitType.class, new VisitTypeEditor()); wdb.registerCustomEditor(Visit.class, new VisitEditor()); // can't really do this because PropertyEditors are not told what type of class they are changing :-( //wdb.registerCustomEditor(OpenmrsObject.class, new OpenmrsObjectByUuidEditor()); } }