On Feb 9, 2007, at 9:49 AM, John Siracusa wrote:
> This is a fine idea, but I think the correct approach is to make a new
> Manager class that uses the existing Manager class internally. That's
> a lot cleaner than trying to further augment the existing Manager.
This was ridiculously easy to implement to play around with as an
initial stab
the code is below , just to give you an idea.
i'll be playing around with this sort of stuff for a few days, then
pop something onto my svn if anyone wants to play around with it.
i really like this...
no, i ridiculously like this!
instead of passing results into various functions to handle maps,
foreach, and misc processing , I can just make a class for each
result list type, and toss my functions in there. plus with
inheritance chains, I can just inherit whatever methods i need from
other object classes.
this isn't for everyone -- in fact, it might be too OOP for most.
but i see A LOT of utility here :)
base-classes:
FindMeOn::Rose::DB::Object::ManagerResultProvider;
drop-in replacement
i just redefined get_objects -- so this wouldn't work with
make_manager_methods -- but I already call get_objects directly for
the performance boost :)
FindMeOn::Rose::DB::Object::ManagerResultList;
base result list class
application specific classes
FindMeOn::Rose::DB::Object::UseraccountFindmeon::ManagerList_A
has a sample routine
FindMeOn::Rose::DB::Object::UseraccountFindmeon::Manager
my $results= Rose::DB::Object::Manager->get_objects()
becomes
my $results= FindMeOn::Rose::DB::Object::ManagerResultProvider-
>get_objects( manager_result_class=>
'FindMeOn::Rose::DB::Object::UseraccountFindmeon::ManagerList_A' )
====================================================
package FindMeOn::Rose::DB::Object::ManagerResultProvider;
use Rose::DB::Object::Manager ();
our @ISA= qw(Rose::DB::Object::Manager);
use FindMeOn::Rose::DB::Object::ManagerResultList;
sub get_objects
{
my ($class, %kw_args)= @_;
my $objects= Rose::DB::Object::Manager::get_objects
( 'Rose::DB::Object::Manager' , %kw_args );
if ( defined $kw_args{'manager_result_class'} )
{
bless $objects , $kw_args{'manager_result_class'};
}
else
{
bless $objects , 'FindMeOn::Rose::DB::Object::ManagerResultList';
}
return $objects;
}
1;
====================================================
====================================================
package FindMeOn::Rose::DB::Object::ManagerResultList;
# null
1;
====================================================
====================================================
package FindMeOn::RoseDB::Object::UseraccountFindmeon::ManagerList_A;
use FindMeOn::RoseDB::Object::ManagerResultList();
our @ISA= qw(FindMeOn::RoseDB::Object::ManagerResultList);
sub first_item_id {
my ($self)= @_;
print STDERR "\n first_item_id = " . $self->[0]->id;
}
1;
====================================================
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Rose-db-object mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rose-db-object