]> wagnertech.de Git - mfinanz.git/blobdiff - SL/DB/RequirementSpec.pm
Pflichtenhefttextblöcke (DB): Spalte "is_flagged"
[mfinanz.git] / SL / DB / RequirementSpec.pm
index 99bf11631cd8d35ffc4a9e5a55a5c6fda9301924..3a3f4ccf42687721a36271e5c56518007df3bb29 100644 (file)
@@ -2,7 +2,10 @@ package SL::DB::RequirementSpec;
 
 use strict;
 
+use Carp;
+
 use SL::DB::MetaSetup::RequirementSpec;
+use SL::DB::Manager::RequirementSpec;
 use SL::Locale::String;
 
 __PACKAGE__->meta->add_relationship(
@@ -18,11 +21,10 @@ __PACKAGE__->meta->add_relationship(
   },
 );
 
-# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
-__PACKAGE__->meta->make_manager_class;
-
 __PACKAGE__->meta->initialize;
 
+__PACKAGE__->before_save('_before_save_initialize_not_null_columns');
+
 sub validate {
   my ($self) = @_;
 
@@ -32,4 +34,33 @@ sub validate {
   return @errors;
 }
 
+sub _before_save_initialize_not_null_columns {
+  my ($self) = @_;
+
+  $self->previous_section_number(0) if !defined $self->previous_section_number;
+  $self->previous_fb_number(0)      if !defined $self->previous_fb_number;
+
+  return 1;
+}
+
+sub text_blocks_for_position {
+  my ($self, $output_position) = @_;
+
+  return [ sort { $a->position <=> $b->position } grep { $_->output_position == $output_position } @{ $self->text_blocks } ];
+}
+
+sub sections {
+  my ($self, @rest) = @_;
+
+  croak "This sub is not a writer" if @rest;
+
+  return [ sort { $a->position <=> $b->position } grep { !$_->parent_id } @{ $self->items } ];
+}
+
+sub displayable_name {
+  my ($self) = @_;
+
+  return sprintf('%s: "%s"', $self->type->description, $self->title);
+}
+
 1;