Projekt

Allgemein

Profil

Herunterladen (1,78 KB) Statistiken
| Zweig: | Markierung: | Revision:
package SL::Clipboard::RequirementSpecPicture;

use strict;

use parent qw(SL::Clipboard::Base);

use SL::Common;
use SL::Locale::String;
use MIME::Base64;

sub dump {
my ($self, $object) = @_;

$self->reload_object($object);

my $tree = $self->as_tree($object, exclude => sub { ref($_[0]) !~ m/::RequirementSpecPicture$/ });
$tree->{$_} = encode_base64($tree->{$_}, '') for $self->_binary_column_names('SL::DB::RequirementSpecPicture');

return $tree;
}

sub describe {
my ($self) = @_;

return t8('Requirement spec picture "#1"', $self->content->{description} ? $self->content->{description} . ' (' . $self->content->{picture_file_name} . ')' : $self->content->{picture_file_name});
}

sub _fix_object {
my ($self, $object) = @_;

$object->$_(undef) for qw(number);
$object->$_(decode_base64($object->$_)) for $self->_binary_column_names('SL::DB::RequirementSpecPicture');

return $object;
}

1;
__END__

=pod

=encoding utf8

=head1 NAME

SL::Clipboard::RequirementSpecPicture - Clipboard specialization for
SL::DB::RequirementSpecPicture

=head1 NOTES

The underlying RDBO model contains binary columns, but binary data
cannot be dumped as YAML. Therefore the binary content is encoded in
Base64 in L</dump> and decoded back to binary form in L</_fix_object>.

=head1 FUNCTIONS

=over 4

=item C<describe>

Returns a human-readable description including the title and an
excerpt of its content.

=item C<dump $object>

This specialization reloads C<$object> from the database, and dumps
it. Binary columns are dumped encoded in Base64.

=item C<_fix_object $object>

Fixes C<$object> by clearing certain columns like the number. Also
decodes binary columns from Base64 back to binary.

=back

=head1 BUGS

Nothing here yet.

=head1 AUTHOR

Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>

=cut
(3-3/4)