Rosetta-Engine-Generic ---------------------------------------------------------------------- 2005-09-08 Darren Duncan * Rosetta-Engine-Generic Release 0.21.0. * New code file versions are: Generic.pm v0.21.0 and en.pm v0.13.0. * Updated external dependencies on Rosetta to v0.48.0 and on SQL::Routine::SQLBuilder to v0.21.0 and on SQL::Routine::SQLParser to v0.2.0. * From now on, if the minimum Perl version that this distribution depends on (currently 5.008001) comes bundled with a satisfactory version of a module that we have a dependency on, then we will no longer specify any version number when referring to said module. An example of such is Test::More. * Converted every distribution file to use indentations composed of space characters (4 spaces per indentation level) rather than tab characters. * Updated all files containing POD (*.pm, *.pod) to re-order some POD sections. Now all of the POD is after all of the code, rather than that being mostly true but for a bit of POD before most of the code. The 'NAME' POD has been moved to just above the 'SYNOPSIS'. The 'DEPENDENCIES' has been moved to just above the 'SEE ALSO'. Any 'BUGS' and 'CAVEATS' have been moved to just below the 'SEE ALSO'. The 'COPYRIGHT AND LICENSE' has been moved to the very end of the file, except that any 'CREDITS' have been moved below that. Also updated the ReadMe file to move the 'CREDITS' below the 'COPYRIGHT AND LICENSE'. There were zero changes to the content of any POD sections, and no new POD sections were added or existing ones removed, except for those explicitly listed below. * Updated all files containing POD: Deleted the 'SYNTAX' section, whose value was dubious, from any files that had one. Renamed 'COPYRIGHT AND LICENSE' to 'LICENCE AND COPYRIGHT', and added a new 'AUTHOR' section just above it. Renamed 'CREDITS' to 'ACKNOWLEDGEMENTS' in any files that had one. COPYRIGHT and CREDITS were likewise renamed in the ReadMe file. * Updated the POD in all *.pm files: Added a new 'VERSION' section, which appears just below the 'NAME'. Added a new 'INCOMPATIBILITIES' section, which appears just below 'DEPENDENCIES'. Renamed and/or merged any 'BUGS' and 'CAVEATS' sections into a single 'BUGS AND LIMITATIONS' section, and added that section to any files lacking its predecessors. Rewrote the 'DEPENDENCIES' into a new paragraph-resembling format that specifies where each dependency is, such as bundled with perl, or bundled with the current distribution, or available on CPAN; also rewrote the ReadMe file version. * Updated all *.pm files to add a new external dependency on the 'version' module, which has core-like functionality but isn't yet bundled with Perl; all 'our $VERSION' declarations were changed to qv-wrapped three-part format from floating point format; likewise, updated the *_00_Compile.t file to use 'version', and also changed the tests for expected module versions to be performed by is() rather than cmp_ok(). * Updated Generic.pm and Rosetta_Engine_Generic.t to add a new external dependency on the 'only' module, which has core-like functionality but isn't yet bundled with Perl; all "use Foo N.NN" statements were changed to three-part format and now look like "use only 'Foo' => 'N.N.N-'". 2005-09-01 Darren Duncan * Rosetta-Engine-Generic Release 0.20. * New code file versions are: Generic.pm v0.20. * Updated external dependencies on Rosetta to v0.47 and on SQL::Routine::SQLBuilder to v0.20. * Added a new main title to this Changes file that matches the ReadMe file. * Rewrote the documentation section KEEPING UP TO DATE in the ReadMe file. * Corrected an oversight from release 0.19; added a 'Changes' file paragraph concerning the added Generic.pm classes and constructor wrapper methods. * Updated Generic.pm to retain compatability with changes made in SQL::Routine v0.66; one can no longer straight compare two SRT Node or Container objects to determine their equivalence, since they are now interfaces over a shared storage object. Updated the Generic.pm method build_perl_declare_cx_conn() to use the new SQL::Routine method get_self_id() instead of the straight comparisons. * Updated Rosetta_Engine_Generic.t to retain compatibility with Rosetta::Validator v0.47, which has the old Rosetta::Utility::EasyBake merged into it. * Updated Generic.pm to retain compatability with changes made in SQL::Routine v0.69; replaced all invocations of the Node methods [get|clear|set]_[literal|enumerated|node_ref]_attribute[|s]() with invocations of [get|clear_set]_attribute[|s](). 2005-07-07 Darren Duncan * Rosetta-Engine-Generic Release 0.19. * New code file versions are: Generic.pm v0.19 and en.pm v0.12. * Updated external dependencies on Rosetta to v0.46 and on SQL::Routine::SQLBuilder to v0.19. * This release is primarily to retain compatability with multiple other distributions' recent updates; very little was changed besides this. * Added new external dependency on SQL::Routine::SQLParser v0.01; this module will be used by Generic.pm's schema reverse-engineering facility in the future, though at present it isn't actually used for anything, as is also still the case with SQL::Routine::SQLBuilder. * Updated all files in this distribution that display the physical address of the Free Software Foundation, Inc. so it uses their current address of "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA" rather than their previous address of "59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"; this affects every COPYRIGHT AND LICENSE statement in the core files and the 'ReadMe' file, plus any 'GPL' or 'LGPL' license file. * Updated the INSTALL file so that it is more generic, and all of my distributions now use an identical copy of it. * Updated the main heading in the ReadMe file to state the distribution's name rather than a terse description of it. * Corresponding to a recent SQL::Routine::SQLBuilder update, replaced the Engine Configuration Option 'delim_ident' with a different 'ident_style' option, which affected the srtn_catalog_open() method, and also rewrote half of the related documentation. Likewise updated t_setup.pl to invoke the new option in place of the old one. * Corresponding to a Rosetta change where execute() now invokes a same-named Engine function, and the Interface no longer stores a Perl closure for the Engine, added new Generic method execute() and new property 'prep routine'; also updated new() to declare the property and prepare() to set it. Also renamed any $routine method variables to $prep_routine. * Removed the destroy() method since Rosetta Interface objects can now auto-destruct, and they will no longer invoke it. * Replaced all tests on an Interface's "interface type" property with tests on the Interface's class name, since the Rosetta Interface class was thus split into multiple classes and the property is gone. * Removed the routine_source_code() method, since no Interface method exists any more that will call it. * Updated _throw_error_message() to use more descriptive argument names. * Updated prepare() and build_perl_routine() so that now only routines that are direct children of an 'application' Node can be externally invoked; if one wants to invoke a 'schema' routine now, they must do so within an 'application' routine; previously, only inner routines of other routines could not be invoked. * Following that Rosetta's new_*_interface() methods will now create their own Engine object for the new Interfaces rather than taking them as arguments, updated these Generic methods so they use that Engine object for setting properties of rather than making their own: prepare(), build_perl_routine(), build_perl_declare_cx_conn(), srtn_catalog_list(). * Following that Rosetta now has 2 alternate parent/child trees (by-creation vs by-context), replaced any single or double-chained invocations of get_parent_interface() with single get_parent_by_[creation|context]_interface() invocations; these methods were updated: get_[env|conn|curs]_cx_e_and_i(), srtn_catalog_open(). * Updated these methods to pass the alternate "parent interface" arguments to new_*_interface(): build_perl_declare_cx_conn(). * Renamed any get_srt_node() Interface method calls with one of the following: get_app_inst_node(), get_link_prod_node(), get_routine_node(); it affected these methods: build_perl_declare_cx_conn(), srtn_catalog_[list|open|close](). * Added new constructor functions, a different one for each Interface type that an Engine backs, following that the Rosetta core now expects to invoke them rather than new(): new_*_engine where * is one of environment, connection, cursor, literal, preparation. Added 5 mew class declarations, that currently subclass Rosetta::Engine::Generic but don't add any properties or methods: Rosetta::Engine::Generic::* where * is one of Environment, Connection, Cursor, Literal, Preparation. * Updated Rosetta_Engine_Generic.t, and the en.pm SYNOPSIS, to add 'SQL::Routine::SQLBuilder::L::' to the Translator Sets list, following that SQL::Routine::SQLBuilder v0.19+ can throw its own (localized) exceptions. Likewise added 'SQL::Routine::SQLParser::L::' to both files. Just Generic.t also had 'Rosetta::Utility::EasyBake::L::' added, since that is now used by Rosetta::Validator. * This distribution also had a few other minor changes and fixes. 2005-05-13 Darren Duncan * Rosetta-Engine-Generic Release 0.18. * New code file versions are: Generic.pm v0.18 and en.pm v0.11. * Updated external dependencies on Rosetta to v0.45 and on SQL::Routine::SQLBuilder to v0.18. * Added explicit external dependency on Rosetta::Validator v0.45 to the Makefile.PL and ReadMe, for the test suite, just in case that dependency implicity defined by the requirement of Rosetta v0.45 wasn't sufficient. * Updated every instance of the COPYRIGHT AND LICENSE documentation in this distribution to correct the declared date range in which the core Rosetta::Engine::Generic files were created. The new dates are 2002 thru 2005, which is when I actually committed documentation describing or code implementing what became the Rosetta::Engine::Generic core. The old dates were 1999 thru 2005, which goes back to the time that I started conceiving a larger project which the aforementioned module started out being related to; however, those earlier years did not contain any work on what specifically became the aforementioned module, so they are now excluded. * Updated every instance of the COPYRIGHT AND LICENSE documentation in this distribution so that you may now choose between licensing it under the GPL version 2 or any later GPL version, rather than only under version 2. * Renamed the "LICENSE" file to "GPL", and correspondingly updated all references to it in this distribution, most of them being in COPYRIGHT AND LICENSE statements. This change was made to reduce user confusion in situations where files from this distribution may be aggregated with other files that have different licenses; the old name was too generic. * Updated Generic.pm to remain compatible with a recent SQL::Routine change such that Nodes now always live in Containers. Updated make_srt_node() and make_child_srt_node() so they now invoke new_node() with 3 arguments rather than that method plus set_node_id() and put_in_container() each with 1. * Updated Rosetta_Engine_Generic.t to add 4 new tests at the top; 2 of these use Test::More's use_ok() function to cleanly test that the 2 core modules will load without errors; 2 of these test, with cmp_ok(), that the 2 core modules are of the correct versions. Before this change, the original test script would simply die without any ok/not ok if the core modules were missing. The total test count is now 10, up from 6. Also removed function print_message() plus its two invocations. Also a minor update to 2 warnings so they lead with a '#' rather than '--', as Test::More tends to do. * Renamed this file to 'Changes' from 'ChangeLog'; the new name is more descriptive to its free-form structure, and more consistent with CPAN (which uses both names but 'Changes' seems to be more common these days). Also truncated this Changes file to remove all detail entries for releases v0.01 thru v0.17; in their place was added a change summary for releases v0.01 thru v0.17 that mainly just said what the names and versions of all the predecessor distributions and modules are. 2005-04-03 Darren Duncan * Rosetta-Engine-Generic Release 0.17, containing Rosetta::Engine::Generic 0.17, was released on CPAN. 2005-03-19 Darren Duncan * Rosetta-Engine-Generic Release 0.16, containing Rosetta::Engine::Generic 0.16, was released on CPAN; this is the first release of the Rosetta-Engine-Generic distribution. This is the first release for this module where it explicitly has a version number matching its distribution. 2005-03-18 Darren Duncan * Rosetta-Extensions Release 0.15, containing Rosetta::Engine::Generic 0.12, was released on CPAN; this is the last release of the Rosetta-Extensions distribution. This is the last release for this module where it does not explicitly have a version number matching its distribution. 2004-08-16 Darren Duncan * Rosetta-Extensions Release 0.07, containing Rosetta::Engine::Generic 0.04, was released on CPAN. This is the first release of Rosetta::Engine::Generic following its merger with Rosetta::Engine::GenericAC. 2004-08-06 Darren Duncan * Rosetta-Extensions Release 0.06, containing Rosetta::Engine::Generic 0.03 and Rosetta::Engine::GenericAC 0.01, was released on CPAN. This is the last release of those 2 modules prior to their merger with each other. This is the first release of any distribution to contain Rosetta::Engine::GenericAC. 2004-04-10 Darren Duncan * Rosetta-Extensions Release 0.01, containing Rosetta::Engine::Generic 0.01, was released on CPAN; this is the first release of the Rosetta-Extensions distribution. This is the first release of any distribution to contain Rosetta::Engine::Generic. This is the first release of any distribution for which some of the existing work that became the Rosetta-Engine-Generic distribution was in the form of executable code, and not just design documentation. 2004-03-25 Darren Duncan * Rosetta Release 0.29 was released on CPAN. This is the last release of any distribution for which all of the existing work that became the Rosetta-Engine-Generic distribution was purely in the form of design documentation, without executable code of any kind. 2004-03-21 Darren Duncan * Rosetta Release 0.27 was released on CPAN. This is the first release of any distribution where the proposal documentation for Rosetta::Engine::Generic uses that name for it; it was also the first proposal to contain mention of such a module that is specifically generic to cover any DBI-supported database product; previously, the nearest thing proposed was a separate Engine module for each database product. 2003-01-27 Darren Duncan * Rosetta Release 0.02 was released on CPAN; this is the first release of the Rosetta distribution. Early versions of the design documentation that became the Rosetta-Engine-Generic distribution were included. 2003-01-05 Darren Duncan * DBIx-Portable Release 0.01 was released on CPAN; this is the only release of the DBIx-Portable distribution. This is the first release of any distribution to contain design documentation that became the Rosetta-Engine-Generic distribution. 2002-11-12 Darren Duncan * Began development on the modules which became the Rosetta-Engine-Generic distribution as their own entity that is separate from my application, for open-source distribution on CPAN. The modules were to comprise an RDBMS-generic DB framework for any application to use. * Modules based on a template created by h2xs 1.18. 2002-07-28 * Posted the first significant update to the second prototype, which added an index or cache for data that was expensive to calculate for each page request, and involved rewriting about a fourth of the perl code. 2002-06-07 * Posted to my website the second public prototype demo of the new self-proprietary database driven application, whose database schema, user interface, feature set, and Perl application code was almost completely rewritten. The new version explicitly had separate modules for database communication and the web interface logic, with MySQL-specific code and database generic or data dictionary code in separate files, and separate files for parts of the web interface. The program used the same generic CPAN modules as in the first prototype, DBI/MySQL and CGI::Portable. * This is when I started writing self-contained code components that were explicitly designed to enable external code that used them to work seamlessly on multiple database products, and hence 2002 is the start of my declared copyright date range for Rosetta::Engine::Generic. 2001-11-24 * Posted the last update to the first prototype. 2001-07-12 * Posted to my website the first public prototype demo of a new self-proprietary database driven application, which is like a cross between a multimedia metadata catalogue and a repository for historical or genealogical data. This application contained the first prototypes of code that ended up in these modules. All of this application's code, for database communication and web interface logic, was situated in a single module, with the rest of the program being more generic CPAN modules like DBI (and DBD for MySQL) and CGI::Portable. 2000-05-17 * Requested MySQL database privileges on my web host so I have something to start developing, testing and deploying database driven applications on.