From 6ef194b277a89ecf514a4ae7633f022d344a8f5c Mon Sep 17 00:00:00 2001 From: Dan Wells Date: Tue, 2 Jul 2013 11:55:21 -0400 Subject: [PATCH] Solidify caption/holding relationship This commit: - Makes sure that holding data is valid for the given caption for new holding objects - Teaches field_values() to fall back to '*' (unknown marker) when a holding is missing data - Allows the caption() method to be a setter Signed-off-by: Dan Wells --- Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm b/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm index 920bfd2a20..d5571d1a14 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm @@ -42,6 +42,9 @@ sub new { if (exists($self->{_mfhdh_FIELDS}->{$key})) { carp("Duplicate, non-repeatable subfield '$key' found, ignoring"); next; + } elsif (!$caption->capfield($key)) { + carp("Subfield '$key' has no corresponding caption, ignoring"); + next; } if ($self->{_mfhdh_COMPRESSED}) { $self->{_mfhdh_FIELDS}->{$key}{HOLDINGS} = [split(/\-/, $val, -1)]; @@ -116,8 +119,15 @@ sub field_values { if (exists $self->fields->{$key}) { my @values = @{$self->fields->{$key}{HOLDINGS}}; return \@values; + } elsif ($self->caption->capfield($key)) { + carp("No values found for existing caption subfield '$key', returning '*' (unknown value indicator)"); + if ($self->is_compressed) { + return ['*', '*']; + } else { + return ['*']; + } } else { - return undef; + return; } } @@ -161,6 +171,11 @@ sub is_open_ended { sub caption { my $self = shift; + my $caption = shift; + + if ($caption) { + $self->{_mfhdh_CAPTION} = $caption; + } return $self->{_mfhdh_CAPTION}; } -- 2.11.0