Bug 4450 Use more consistent error returns in C4/Creators/*

A lot of routines were defaulting to return -1 in error conditions
but calling code was expecting a ref or object
use return with explicit undef (or emptyness in array context)
for these cases. Extended this to cases where return was not tested
( -1 might in some cases be legit data).

Signed-off-by: Chris Nighswonger <cnighswonger@foundations.edu>
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
Colin Campbell 2010-05-06 13:13:36 -04:00 committed by Galen Charlton
parent 5f7946e4d8
commit 5cf2b78b6f
6 changed files with 53 additions and 51 deletions

View file

@ -152,10 +152,12 @@ sub retrieve {
push (@{$self->{'items'}}, {$number_type => $record->{$number_type}, label_id => $record->{'label_id'}});
$record_flag = 1; # true if one or more rows were retrieved
}
return -2 if $record_flag == 0; # a hackish sort of way of indicating no such record exists
if ($record_flag == 0) {
return; # no such record exists return undef
}
if ($sth->err) {
warn sprintf('Database returned the following error on attempted SELECT: %s', $sth->errstr);
return -1;
return;
}
$self->{'batch_stat'} = 1;
bless ($self, $type);
@ -263,12 +265,12 @@ This module provides methods for creating, and otherwise manipulating batch obje
=head2 C4::Labels::Batch->retrieve(batch_id => $batch_id)
Invoking the I<retrieve> method constructs a new batch object containing the current values for batch_id. The method returns a new object upon success and 1 upon failure.
Invoking the I<retrieve> method constructs a new batch object containing the current values for batch_id. The method returns a new object upon success and undefined upon failure.
Errors are logged to the Apache log.
examples:
my $batch = C4::Labels::Batch->retrieve(batch_id => 1); # Retrieves batch 1 and returns an object containing the record
my $batch = C4::Labels::Batch->(batch_id => 1); # Retrieves batch 1 and returns an object containing the record
=head2 delete()

View file

@ -63,7 +63,7 @@ sub new {
my $invocant = shift;
my $self = '';
if (_check_params(@_) eq 1) {
return -1;
return;
}
my $type = ref($invocant) || $invocant;
if (grep {$_ eq 'Labels'} @_) {
@ -101,7 +101,7 @@ sub retrieve {
$sth->execute($opts{'layout_id'}, $opts{'creator'});
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
my $self = $sth->fetchrow_hashref;
bless ($self, $type);
@ -136,6 +136,7 @@ sub delete {
warn sprintf('Database returned the following error on attempted DELETE: %s', $sth->errstr);
return -1;
}
return; # return no error code on success
}
sub save {
@ -156,7 +157,7 @@ sub save {
$sth->execute(@params);
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
return $self->{'layout_id'};
}
@ -178,7 +179,7 @@ sub save {
$sth->execute(@params);
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
my $sth1 = C4::Context->dbh->prepare("SELECT MAX(layout_id) FROM creator_layouts;");
$sth1->execute();
@ -191,22 +192,19 @@ sub save {
sub get_attr {
my $self = shift;
if (_check_params(@_) eq 1) {
return -1;
return;
}
my ($attr) = @_;
if (exists($self->{$attr})) {
return $self->{$attr};
}
else {
return -1;
}
return;
}
sub set_attr {
my $self = shift;
if (_check_params(@_) eq 1) {
return -1;
return;
}
my %attrs = @_;
foreach my $attrib (keys(%attrs)) {
@ -389,7 +387,7 @@ R = Right
=head2 get_attr($attribute)
Invoking the I<get_attr> method will return the value of the requested attribute or -1 on errors.
Invoking the I<get_attr> method will return the value of the requested attribute or undef on error.
example:
C<my $value = $layout->get_attr($attribute);>

View file

@ -135,7 +135,7 @@ my $output_formats = [
=head2 C4::Creators::Lib::get_all_templates()
This function returns a reference to a hash containing all templates upon success and 1 upon failure. Errors are logged to the Apache log.
This function returns a reference to a hash containing all templates upon success and undefined upon failure. Errors are logged to the Apache log.
examples:
@ -152,7 +152,7 @@ sub get_all_templates {
$sth->execute();
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
ADD_TEMPLATES:
while (my $template = $sth->fetchrow_hashref) {
@ -163,7 +163,7 @@ sub get_all_templates {
=head2 C4::Creators::Lib::get_all_layouts()
This function returns a reference to a hash containing all layouts upon success and 1 upon failure. Errors are logged to the Apache log.
This function returns a reference to a hash containing all layouts upon success and undefined upon failure. Errors are logged to the Apache log.
examples:
@ -180,7 +180,7 @@ sub get_all_layouts {
$sth->execute();
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
ADD_LAYOUTS:
while (my $layout = $sth->fetchrow_hashref) {
@ -191,7 +191,7 @@ sub get_all_layouts {
=head2 C4::Creators::Lib::get_all_profiles()
This function returns an arrayref whose elements are hashes containing all profiles upon success and 1 upon failure. Errors are logged
This function returns an arrayref whose elements are hashes containing all profiles upon success and undefined upon failure. Errors are logged
to the Apache log. Two parameters are accepted. The first limits the field(s) returned. This parameter should be string of comma separted
fields. ie. "field_1, field_2, ...field_n" The second limits the records returned based on a string containing a valud SQL 'WHERE' filter.
@ -214,7 +214,7 @@ sub get_all_profiles {
$sth->execute();
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
ADD_PROFILES:
while (my $profile = $sth->fetchrow_hashref) {
@ -235,7 +235,7 @@ sub get_all_image_names {
$sth->execute();
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
grep {push @$image_names, {type => $$_[0], name => $$_[0], selected => 0}} @{$sth->fetchall_arrayref([0])};
return $image_names;
@ -266,7 +266,7 @@ sub get_batch_summary {
$sth->execute($params{'creator'});
if ($sth->err) {
warn sprintf('Database returned the following error on attempted SELECT: %s', $sth->errstr);
return -1;
return;
}
ADD_BATCHES:
while (my $batch = $sth->fetchrow_hashref) {
@ -275,7 +275,7 @@ sub get_batch_summary {
$sth1->execute($batch->{'batch_id'}, $params{'creator'});
if ($sth1->err) {
warn sprintf('Database returned the following error on attempted SELECT count: %s', $sth1->errstr);
return -1;
return;
}
my $count = $sth1->fetchrow_arrayref;
$batch->{'_item_count'} = @$count[0];
@ -315,7 +315,7 @@ sub get_label_summary {
$sth->execute($item->{'item_number'}, $params{'batch_id'});
if ($sth->err) {
warn sprintf('Database returned the following error on attempted SELECT: %s', $sth->errstr);
return -1;
return;
}
my $record = $sth->fetchrow_hashref;
my $label_summary;
@ -361,7 +361,7 @@ sub get_card_summary {
$sth->execute($item->{'borrower_number'});
if ($sth->err) {
warn sprintf('Database returned the following error on attempted SELECT: %s', $sth->errstr);
return -1;
return;
}
my $record = $sth->fetchrow_hashref;
my $card_summary->{'_card_number'} = $card_number;
@ -535,7 +535,10 @@ sub get_table_names {
sub html_table {
my $headers = shift;
my $data = shift;
return undef if scalar(@$data) == 0; # no need to generate a table if there is not data to display
# no need to generate a table if there is not data to display
unless ( @{$data} ) {
return;
}
my $table = [];
my $fields = [];
my @table_columns = ();

View file

@ -152,8 +152,8 @@ sub Jpeg {
sub prAltJpeg
{ my ($iData, $iWidth, $iHeight, $iFormat,$aiData, $aiWidth, $aiHeight, $aiFormat) = @_;
my ($namnet, $utrad);
if (! $PDF::Reuse::pos) # If no output is active, it is no use to continue
{ return undef;
if (! $PDF::Reuse::pos) { # If no output is active, it is no use to continue
return;
}
prJpegBlob($aiData, $aiWidth, $aiHeight, $aiFormat);
my $altObjNr = $PDF::Reuse::objNr;
@ -182,8 +182,8 @@ sub prAltJpeg
sub prJpegBlob
{ my ($iData, $iWidth, $iHeight, $iFormat, $altArrayObjNr) = @_;
my ($iLangd, $namnet, $utrad);
if (! $PDF::Reuse::pos) # If no output is active, it is no use to continue
{ return undef;
if (! $PDF::Reuse::pos) { # If no output is active, it is no use to continue
return;
}
my $checkidOld = $PDF::Reuse::checkId;
if (!$iFormat)

View file

@ -57,8 +57,8 @@ sub _conv_points {
sub new {
my $invocant = shift;
if (_check_params(@_) eq 1) {
return -1;
if (_check_params(@_) == 1) {
return;
}
my $type = ref($invocant) || $invocant;
my $self = {
@ -85,7 +85,7 @@ sub retrieve {
$sth->execute($opts{'profile_id'}, $opts{'creator'});
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
my $self = $sth->fetchrow_hashref;
$self = _conv_points($self) if ($opts{convert} && $opts{convert} == 1);
@ -122,6 +122,7 @@ sub delete {
warn sprintf('Database returned the following error on attempted DELETE: %s', $sth->errstr);
return -1;
}
return;
}
sub save {
@ -142,7 +143,7 @@ sub save {
$sth->execute(@params);
if ($sth->err) {
warn sprintf('Database returned the following error on attempted UPDATE: %s', $sth->errstr);
return -1;
return;
}
return $self->{'profile_id'};
}
@ -164,7 +165,7 @@ sub save {
$sth->execute(@params);
if ($sth->err) {
warn sprintf('Database returned the following error on attempted INSERT: %s', $sth->errstr);
return -1;
return;
}
my $sth1 = C4::Context->dbh->prepare("SELECT MAX(profile_id) FROM printers_profile;");
$sth1->execute();
@ -176,7 +177,7 @@ sub save {
sub get_attr {
my $self = shift;
if (_check_params(@_) eq 1) {
return -1;
return;
}
my ($attr) = @_;
if (exists($self->{$attr})) {
@ -184,7 +185,7 @@ sub get_attr {
}
else {
warn sprintf('%s is currently undefined.', $attr);
return -1;
return;
}
}
@ -278,14 +279,14 @@ CM = SI Centimeters (28.3464567 points per)
=head2 save()
Invoking the I<save> method attempts to insert the profile into the database if the profile is new and update the existing profile record if the profile exists. The method returns
the new record profile_id upon success and -1 upon failure (This avoids conflicting with a record profile_id of 1). Errors are logged to the Apache log.
the new record profile_id upon success and undef upon failure (This avoids conflicting with a record profile_id of 1). Errors are logged to the Apache log.
example:
C<my $exitstat = $profile->save(); # to save the record behind the $profile object>
=head2 get_attr($attribute)
Invoking the I<get_attr> method will return the value of the requested attribute or -1 on errors.
Invoking the I<get_attr> method will return the value of the requested attribute or undef on errors.
example:
C<my $value = $profile->get_attr($attribute);>

View file

@ -89,7 +89,7 @@ sub new {
my $invocant = shift;
my $type = ref($invocant) || $invocant;
if (_check_params(@_) eq 1) {
return -1;
return;
}
my $self = {
profile_id => 0,
@ -124,7 +124,7 @@ sub retrieve {
$sth->execute($opts{'template_id'}, $opts{'creator'});
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
my $self = $sth->fetchrow_hashref;
$self = _conv_points($self) if (($opts{convert} && $opts{convert} == 1) || $opts{profile_id});
@ -152,7 +152,7 @@ sub delete {
if (scalar(@query_params) < 2) { # If there is no template id or creator type then we cannot delete it
warn sprintf('%s : Cannot delete template as the template id is invalid or non-existant.', $call_type) if !$query_params[0];
warn sprintf('%s : Cannot delete template as the creator type is invalid or non-existant.', $call_type) if !$query_params[1];
return -1;
return;
}
my $query = "DELETE FROM " . $opts{'table_name'} . " WHERE template_id = ? AND creator = ?";
my $sth = C4::Context->dbh->prepare($query);
@ -178,7 +178,7 @@ sub save {
$sth->execute(@params);
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
$self->{'template_stat'} = 1;
return $self->{'template_id'};
@ -202,7 +202,7 @@ sub save {
$sth->execute(@params);
if ($sth->err) {
warn sprintf('Database returned the following error: %s', $sth->errstr);
return -1;
return;
}
my $sth1 = C4::Context->dbh->prepare("SELECT MAX(template_id) FROM " . $opts{'table_name'} . ";");
$sth1->execute();
@ -216,21 +216,19 @@ sub save {
sub get_attr {
my $self = shift;
if (_check_params(@_) eq 1) {
return -1;
return;
}
my ($attr) = @_;
if (exists($self->{$attr})) {
return $self->{$attr};
}
else {
return -1;
}
return;
}
sub set_attr {
my $self = shift;
if (_check_params(@_) eq 1) {
return -1;
return;
}
my %attrs = @_;
foreach my $attrib (keys(%attrs)) {
@ -374,7 +372,7 @@ CM = SI Centimeters (28.3464567 points per)
=head2 save()
Invoking the I<save> method attempts to insert the template into the database if the template is new and update the existing template record if
the template exists. The method returns the new record template_id upon success and -1 upon failure (This avoids template_ids conflicting with a
the template exists. The method returns the new record template_id upon success and undef upon failure (This avoids template_ids conflicting with a
record template_id of 1). Errors are logged to the Apache log.
example:
@ -382,7 +380,7 @@ CM = SI Centimeters (28.3464567 points per)
=head2 get_attr($attribute)
Invoking the I<get_attr> method will return the value of the requested attribute or -1 on errors.
Invoking the I<get_attr> method will return the value of the requested attribute or undef on errors.
example:
C<my $value = $template->get_attr($attribute);>