X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/660c7e5312f7fae7766b731f7001e5e8197c6887..bc0e2edad8e8f94f85f2a59ceb784b8eb0cda97c:/SL/DB/Object.pm diff --git a/SL/DB/Object.pm b/SL/DB/Object.pm index 3304ed9b6..c258761d1 100755 --- a/SL/DB/Object.pm +++ b/SL/DB/Object.pm @@ -12,6 +12,7 @@ use SL::DB; use SL::DB::Helper::Attr; use SL::DB::Helper::Metadata; use SL::DB::Helper::Manager; +use SL::DB::Helper::Presenter; use SL::DB::Object::Hooks; use base qw(Rose::DB::Object); @@ -238,6 +239,32 @@ sub clone_and_reset { return $clone; } +sub presenter { + my ($class_or_self) = @_; + + if (ref $class_or_self) { + my $class = ref $class_or_self; + $class =~ s{^SL::DB::}{SL::Presenter::}; + return SL::DB::Helper::Presenter->new($class, $class_or_self); + } else { + $class_or_self =~ s{^SL::DB::}{SL::Presenter::}; + return $class_or_self; + } +} + +sub as_debug_info { + my ($self) = @_; + + return { + map { + my $column_name = $_->name; + my $value = $self->$column_name; + $value = !defined($value) ? undef : "${value}"; + ($_ => $value) + } $self->meta->columns + }; +} + 1; __END__ @@ -361,6 +388,20 @@ The difference between Rose's and this function is that this function will also skip setting the following fields if such columns exist for C<$self>: C, C. +=item C + +Returns a proxy wrapper that will dispatch all method calls to the presenter +with the same name as the class of the involking object. + +For the full documentation about its capabilites see +L + +=item C + +Returns a hash containing solely the essentials for dumping it with +L. The returned hash consists of the column names with +associated column values in stringified form. + =back =head1 AUTHOR