======================================================================= iEat Release Notes @VERSION@ @BUILD_DATE@ ======================================================================= Major new features: - Background job to automatically remove "stale" user registrations. - Search by ingredients (kitchen search). - Recipe ratings: rate any recipe from 1-5 stars, displays average rating for all users. - "Forgot my password" support. - Import/export RecipeML data; export plain text recipes. - Pagination support on recipe and user index views. ======================================================================= NOTE: the database schema has changed since the last release. You will need to recreate your iEat database as described in the README file. You should be able to export your existing database data, recreate the database, and import the data back in without difficulty as only new tables have been added. ======================================================================= Changes since last release: - Added Xalan and Xerces JARs to binary release build. - Added delete cascade notion to meal recipe DB schema so when deleting a meal the corresponding meal recipes are deleted, too. - Fixed problem where some error messages could be displayed twice. - Added validation for alter size form. - Simplified webapp configuration by extending parent bean definitions. - Implemented Quartz job for removing "stale" user registrations (users registered but not confirmed for 14 days). - Fixed bug with DynamicInitializerRequestDataBinder that prevented some forms from properly binding. - Implemented search-by-ingredient (kitchen search). - Implemented recipe ratings (DB schema change). Also added support for recipe comments (to be implemented in the future). - Save recipe search form in session so previous search criteria available when navigating between search and other pages. - Cleaned up much XHTML output so that nearly all pages validate as XHTML 1.0 strict. - Implemented global XSTL layout template which greatly simplifies individual XSLT view implementations and standardizes all page views. - Properly handle error condition when attempting to create a new user with a login/email that already exists. - Fixed database transaction declarations so additional operations occur within a transaction. - Implemented "Forgot my password" functionality. - Tweaked RecipeIngredient schema order of elements so that XML "reads" more naturally. - Upgraded to JAXB 1.0.4 (JWSDP 1.5). - Fixed build script JAXB generation target so as to not delete the Hibernate mapping files when generating domain objects. - Added new business interface for import/export of recipe data. Implemented importing of RecipeML recipes and export of RecipeML and plain text. - Implemented a Spring view resolver DefaultXSLTViewResolver which greatly simplifies the handling of XSLT views and reduces the size of the views.xml configuration file. - Removed unused "ordering" attributes from domain object schema. - Cache the JAXBContext for better performance of view transforms. - Use and key() to display internationalized messages in XSLT views (instead of using explicit selectors) to simplify XSLT and boost performance. - Update to Hibernate 2.1.8. - Altered the Recipe Hibernate mapping slightly to work with string types instead of text, discovered during testing with PostgreSQL 8. - Now index Unit data to aid recipe import process of mapping imported units to iEat units. - Fixed issues with incremental indexing so they occur outside the scope of any database transaction and thus no longer attempt to index objects before they have been committed to the database. - Implemented new XwebJaxbView to replace XwebView; this implementation renders output via a direct transform from JAXB to the output stream, bypassing the former step of creating a DOM Document and then transforming that to the output stream. This should increase the performance of the view transforms. - Made JAXB domain objects implement Serializable so can be cached and stored in session. - Implemented 100% Lucene-based search business interface implementation, removing previous reliance on database queries. Now recipe and user index views are generated via Lucene searches. This removes two of the most complex custom SQL queries used by iEat, helping towards the goal of having a single Hibernate SQL query definition file instead of multiple ones per database (as currently need different configurations for PostgreSQL versus MySQL). - Added caching aspect for the recipe and user index view business methods; now index view data is cached to help performance of these expensive operations. - Added 'xslt.cache' environment property so don't need to have different versions of ieat-servlet.xml configuration files to enable/disable XSLT caching. - Implemented pagination UI support for recipe and user index views. - Updated view implementation to handle directly the MessagesSource resource bundle object, removing the need for individual controller implementations to pass this to the view.