Changes for version 0.65 - 2002-08-21
- Overall:
- Build process will now run without intervention; DBI and LDAP tests require environment variables being set or running the process manually (perl Makefile.PL MANUAL=1). See 'README' for the environment variables used.
- Fixed and added lots of documentation on relationships and multifield primary keys, Thanks to Gert Thiel (thiel@baerkatalog.de) for pointing out deficiencies and inconsistencies.
- Added lots of tests
- Cleaned up some items from the base SPOPS class
- Individual:
- doc/Manual/Error.pod:
- Deleted all content with pointer to SPOPS::Manual::Exception. This doc will be removed in a near future release.
- doc/Manual/Object.pod:
- Clarified what to use with multifield primary keys.
- doc/Manual/Relationships.pod:
- Added tons of documentation and examples. Some of it was pulled from other locations, but most is new.
- Makefile.PL:
- Lots of changes so the build process will run without intervention. You can skip the DBI/LDAP tests or specify the relevant information in environment variables. (See 'README' for the environment variables to use.) This should make acme happy :-)
- SPOPS.pm:
- Removed the timestamp methods. They never did anything, were marked for removal, and the functionality can be added as a pre_save rule.
- Added a set_global_debug() method so we can programmatically set debugging.
- Added documentation for set_global_debug() as well as the _w() and _wm() debugging methods.
- Remove Storable from ISA and instead create methods 'store', 'retrieve' and 'nstore' which just act as delegates for the Storable methods.
- Rename fetch_determine_limit() to SPOPS::Utility->determine_limit() and modify all uses in the library.
- All objects returned from new() now have the 'changed' flag explicitly set and the and the 'saved' flag explicitly cleared.
- Be able to turn on strict field checking for individual objects (pass a 'strict_field => true' to new())
- SPOPS/ClassFactory/DBI.pm:
- Enable fetch() to use either an arrayref or a string with multifield primary keys. Thanks to Gert Thiel <thiel@baerkatalog.de> for prompting the change.
- SPOPS/ClassFactory/DefaultBehavior.pm:
- Add brief documentation for the different methods.
- SPOPS/DBI.pm:
- Update field_update() so it can operate as a class method, and add documentation to match. Thanks to Ray Zimmerman for noting the tangential reference to class method usage in previous docs.
- Add SET_DEBUG_FETCH() and SET_DEBUG_SAVE() to programmatically set debugging levels.
- SPOPS/SQLInterface.pm:
- Add SET_DEBUG_SELECT(), SET_DEBUG_INSERT(), SET_DEBUG_UPDATE() and SET_DEBUG_DELETE() to programmatically set debugging levels.
- SPOPS/Tool/CreateOnly.pm:
- Issue a die() rather than a warn() on a save/update.
- SPOPS/Tool/ReadOnly.pm:
- Issue a die() rather than a warn() on a save() or remove()
- t/00_base.t:
- Add tests for the base SPOPS methods (metadata, constructor, cloning, etc.)
- t/20_gdbm.t:
- Separate the tests that were combining different tests in one.
- t/30_dbi.t:
- Add tests for field_update() as a class method
- t/32_dbi_inline_config.t:
- Add tests for SPOPS::Tool::DBI::Datasource
- t/33_dbi_discover_field.t:
- Add tests for SPOPS::Tool::DBI::DiscoverField
- t/34_dbi_find_defaults.t;
- Add tests for SPOPS::Tool::DBI::FindDefaults
- t/50_rule_create_only.t:
- Add tests for SPOPS::Tool::CreateOnly
- t/51_rule_read_only.t:
- Add tests for SPOPS::Tool::ReadOnly
- doc/Manual/Error.pod:
Documentation
User Guide and Reference Manual for SPOPS
How SPOPS builds classes
Description of variables used in the SPOPS configuration process
Recipes for SPOPS usage
SPOPS datasource use and how you can customize
Error handling in SPOPS
Moving data (and more) with SPOPS
Introduction and overview of SPOPS
Shows how you interact with SPOPS objects.
Use rules to give your object custom behavior
SPOPS object relationships
SPOPS security system and how you can customize
How SPOPS serializes objects
Perform tests on a DBD driver to see if it may work with SPOPS
Modules
Simple Perl Object Persistence with Security
Create SPOPS classes from configuration and code
Define additional configuration methods
Default configuration methods called from SPOPS.pm
Create relationships among LDAP objects
DEPRECATED
DEPRECATED
DEPRECATED
Implement SPOPS class, serializing into a DBI database
InterBase-specific routines for the SPOPS::DBI
MySQL-specific code for DBI collections
Oracle-specific routines for the SPOPS::DBI
PostgreSQL-specific routines for the SPOPS::DBI
SQLite-specific code for DBI collections
Sybase-specific routines for the SPOPS::DBI
(DEPRECATED) Centralized error messages from all SPOPS objects.
Base class for exceptions in SPOPS
SPOPS exception with extra DBI parameters
SPOPS exception with extra LDAP parameters
SPOPS exception with extra security parameters
Export SPOPS objects to various formats
Export SPOPS objects as data for importing directly into a DBI table
Dump SPOPS objects to a portable format
Dump SPOPS objects to a pure serialized Perl format
Export SPOPS objects as a series of SQL statements
Export SPOPS objects in XML format
Store SPOPS objects in a GDBM database
Implement as objects files containing perl hashrefs dumped to text
Factory and parent for importing SPOPS objects
Import raw data to a DBI table
Import a DBI table structure
Factory class for database-specific transformations
Import SPOPS objects
Provide methods for initializing groups of SPOPS objects at once
Class to cycle through results and return SPOPS objects
Implementation of SPOPS::Iterator for SPOPS::DBI
Implementation of SPOPS::Iterator for SPOPS::LDAP
SPOPS::Iterator wrapper around object lists
Retrieve an auto-increment value from a DBI statement or database handle
Retrieve IDENTITY values from a supported DBI database
Retrieves ID field information from a pool
Retrieve sequence values from a supported DBI database
Creates a random alphanumeric code for the ID field
Creates a Universally Unique ID (UUID) as a key
Implement object persistence in an LDAP datastore
SPOPS::LDAP functionality but fetching objects from multiple datasources
Simple SPOPS class used for testing rules and other goodies
Generic routines for DBI database interaction
Implement security across one or more classes of SPOPS objects
Define hierarchical security
Simple class implementing tied hash with some goodies
Enable field checking for SPOPS objects
Make a particular object create-only -- it cannot be updated
Embed the parameters for a DBI handle in object configuration
SPOPS::ClassFactory rule implementing autofield discovery
Load default values from a particular record
Embed the parameters for a LDAP handle in object configuration
Make a particular object read-only
Provide automatic UTF-8 conversion
Utility methods for SPOPS objects
Provides
in SPOPS/Import/DBI/TableTransform/InterBase.pm
in SPOPS/Import/DBI/TableTransform/MySQL.pm
in SPOPS/Import/DBI/TableTransform/Oracle.pm
in SPOPS/Import/DBI/TableTransform/Pg.pm
in SPOPS/Import/DBI/TableTransform/SQLite.pm
in SPOPS/Import/DBI/TableTransform/Sybase.pm
in SPOPS/HashFile.pm
Examples
- eg/My/Common.pm
- eg/My/Doodad.pm
- eg/My/Group.pm
- eg/My/LDAPConnect.pm
- eg/README
- eg/datasource_configure.pl
- eg/datasource_configure_ldap.pl
- eg/export_doodads.pl
- eg/fetch_all.pl
- eg/fetch_doodads.pl
- eg/find_defaults_demo.pl
- eg/ldap_multidatasource.pl
- eg/stock_doodads.pl
- eg/stock_user_group.pl
- eg/users_groups_clear.sql
- eg/users_groups_clear_interbase.sql
- eg/users_groups_clear_oracle.sql
- eg/users_groups_clear_pgsql.sql
- eg/users_groups_interbase.sql
- eg/users_groups_mysql.sql
- eg/users_groups_oracle.sql
- eg/users_groups_pgsql.sql
- eg/users_groups_sqlite.pl
- eg/users_groups_tsql.sql