Module: Exception::Lite durch Exception::Class ersetzt
[kivitendo-erp.git] / SL / DB / Helper / Metadata.pm
1 package SL::DB::Helper::Metadata;
2
3 use strict;
4 use SL::X;
5
6 use Rose::DB::Object::Metadata;
7 use SL::DB::Helper::ConventionManager;
8
9 use base qw(Rose::DB::Object::Metadata);
10
11 sub convention_manager_class {
12   return 'SL::DB::Helper::ConventionManager';
13 }
14
15 sub default_manager_base_class {
16   return 'SL::DB::Helper::Manager';
17 }
18
19 sub initialize {
20   my $self = shift;
21   $self->make_attr_auto_helpers unless $self->is_initialized;
22   $self->SUPER::initialize(@_);
23 }
24
25 sub make_attr_helpers {
26   my ($self, %params) = @_;
27   SL::DB::Helper::Attr::make($self->class, %params);
28 }
29
30 sub make_attr_auto_helpers {
31   my ($self) = @_;
32   SL::DB::Helper::Attr::auto_make($self->class);
33 }
34
35 sub handle_error {
36   my($self, $object) = @_;
37
38   # these are used as Rose internal canaries, don't wrap them
39   die $object->error if UNIVERSAL::isa($object->error, 'Rose::DB::Object::Exception');
40
41   SL::X::DBRoseError->throw(
42     db_error   => $object->error,
43     class      => ref($object),
44     metaobject => $self,
45     object     => $object,
46   );
47 }
48
49 1;