use SL::DB::MetaSetup::RequirementSpec;
use SL::DB::Manager::RequirementSpec;
+use SL::DB::Helper::LinkedRecords;
use SL::Locale::String;
use SL::Util qw(_hashify);
class => 'SL::DB::RequirementSpecOrder',
column_map => { id => 'requirement_spec_id' },
},
+ parts => {
+ type => 'one to many',
+ class => 'SL::DB::RequirementSpecPart',
+ column_map => { id => 'requirement_spec_id' },
+ },
);
__PACKAGE__->meta->initialize;
return \@copies;
}
+sub parts_sorted {
+ my ($self, @rest) = @_;
+
+ croak "This sub is not a writer" if @rest;
+
+ return [ sort { $a->position <=> $b->position } @{ $self->parts } ];
+}
+
sub create_copy {
my ($self, %params) = @_;
my %paste_template_result;
# Clone text blocks and pictures.
- my $clone_picture = sub {
- my ($picture) = @_;
- my $cloned = Rose::DB::Object::Helpers::clone_and_reset($picture);
+ my $clone_and_reset_position = sub {
+ my ($src_obj) = @_;
+ my $cloned = Rose::DB::Object::Helpers::clone_and_reset($src_obj);
$cloned->position(undef);
return $cloned;
};
my ($text_block) = @_;
my $cloned = Rose::DB::Object::Helpers::clone_and_reset($text_block);
$cloned->position(undef);
- $cloned->pictures([ map { $clone_picture->($_) } @{ $text_block->pictures_sorted } ]);
+ $cloned->pictures([ map { $clone_and_reset_position->($_) } @{ $text_block->pictures_sorted } ]);
return $cloned;
};
$self->add_text_blocks($paste_template_result{text_blocks});
}
+ # Clone additional parts.
+ $paste_template_result{parts} = [ map { $clone_and_reset_position->($_) } @{ $source->parts } ];
+ my $accessor = $params->{paste_template} ? "add_parts" : "parts";
+ $self->$accessor($paste_template_result{parts});
+
# Save new object -- we need its ID for the items.
$self->save;
);
}
+sub compare_to {
+ my ($self, $other) = @_;
+
+ return $self->id <=> $other->id;
+}
+
1;
__END__
given then only the text blocks belonging to that C<output_position>
are returned.
+=item C<parts_sorted>
+
+Returns an array reference of additional parts sorted by their
+positional column in ascending order.
+
=item C<validate>
Validate values before saving. Returns list or human-readable error