*.hbm.xml: (and same for all the other hbm.xml files) * name properties should all have not-null="true" liquibase-update-to-latest.xml * Decide on the correct length for the name columns. (Darius proposes 1024, but you may want to discuss over email.) HibernateConceptDAO * line 460 should be either: * (option 1) crit.add(Expression.eq("name", name)) * (option 2) crit.add(Expression.sql("name = ?", name, Hibernate.STRING)); HibernateEncounterDAO * same as HibernateConceptDAO * getAllEncounterTypes * use MetadataComparator (and use this anywhere that you sort) * findEncounterTypes * line 208, don't escape the delimiter * line 210, remove Order clause * get rid of the 'if' for optimization * use MetadataComparator for sort HibernateUtil * Explore creating utility methods for getAllXyz, getXyz(String), findXyz(String) * Delegate directly to these methods from the DAOs (each changed DAO method should just be a one-line delegation to a common utility method) * findMetadatasExactlyByLocalizedColumn * apply Burke's comments from email * findMetadatasFuzzilyByLocalizedColumn * apply Burke's comments from email * Need @shoulds and unit tests on these methods (particularly if daos don't directly delegate to them) Unit Testing * Need more unit testing on all new and changed objects Code Reuse (not necessarily Lu's responsibility, but might make his implementation easier to do): * All Metadata Validators should have common logic moved into a new OpenmrsMetadataValidator superclass which they extend * All Metadata Form Controllers should have common logic moved into a new OpenmrsMetadataFormController superclass which they extend