From 65b8dde74fa273d86c0fe0a289fa3aa412bc601c Mon Sep 17 00:00:00 2001 From: djfiander Date: Sun, 2 Nov 2008 19:40:01 +0000 Subject: [PATCH] Add support for all three caption fields (853-855) and all three enumeration fields (863-865) git-svn-id: svn://svn.open-ils.org/ILS/trunk@11022 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/perlmods/OpenILS/Utils/MFHD.pm | 51 +++++++++++++++++++---------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Utils/MFHD.pm b/Open-ILS/src/perlmods/OpenILS/Utils/MFHD.pm index 087d940ef0..04df9a5cea 100755 --- a/Open-ILS/src/perlmods/OpenILS/Utils/MFHD.pm +++ b/Open-ILS/src/perlmods/OpenILS/Utils/MFHD.pm @@ -14,28 +14,41 @@ sub new { my $rec = shift; $self->{CAPTIONS} = {}; - foreach my $caption ($rec->field('853')) { - my $cap_id; - $cap_id = $caption->subfield('8') || '0'; - if (exists $self->{CAPTIONS}->{$cap_id}) { - carp "Multiple unlabelled MFHD captions"; + + foreach my $field ('853', '854', '855') { + my $captions = {}; + foreach my $caption ($rec->field($field)) { + my $cap_id; + + $cap_id = $caption->subfield('8') || '0'; + if (exists $captions->{$cap_id}) { + carp "Multiple unlabelled MFHD captions"; + } + $captions->{$cap_id} = new MFHD::Caption($caption); } - $self->{CAPTIONS}->{$cap_id} = new MFHD::Caption($caption); + $self->{CAPTIONS}->{$field} = $captions; } - $self->{HOLDINGS} = {}; - foreach my $holding ($rec->field('863')) { - my $linkage; - my ($link_id, $seqno); + foreach my $field ('863', '864', '865') { + my $holdings = {}; + my $cap_field; + + ($cap_field = $field) =~ s/6/5/; + + foreach my $holding ($rec->field($field)) { + my $linkage; + my ($link_id, $seqno); - $linkage = $holding->subfield('8'); - ($link_id, $seqno) = split(/\./, $linkage); + $linkage = $holding->subfield('8'); + ($link_id, $seqno) = split(/\./, $linkage); - if (!exists $self->{HOLDINGS}->{$link_id}) { - $self->{HOLDINGS}->{$link_id} = {}; + if (!exists $holdings->{$link_id}) { + $holdings->{$link_id} = {}; + } + $holdings->{$link_id}->{$seqno} = + new MFHD::Holding($seqno, $holding, $self->{CAPTIONS}->{$cap_field}->{$link_id}); } - $self->{HOLDINGS}->{$link_id}->{$seqno} = - new MFHD::Holding($seqno, $holding, $self->{CAPTIONS}->{$link_id}); + $self->{HOLDINGS}->{$field} = $holdings; } bless ($self, $class); @@ -44,15 +57,17 @@ sub new { sub captions { my $self = shift; + my $field = shift; - return sort keys %{$self->{CAPTIONS}} + return sort keys %{$self->{CAPTIONS}->{$field}} } sub holdings { my $self = shift; + my $field = shift; my $capid = shift; - return sort {$a->{SEQNO} <=> $b->{SEQNO}} values %{$self->{HOLDINGS}->{$capid}}; + return sort {$a->{SEQNO} <=> $b->{SEQNO}} values %{$self->{HOLDINGS}->{$field}->{$capid}}; } 1; -- 2.11.0