From: Shawn Boyette Date: Mon, 27 Jul 2009 16:06:22 +0000 (+0000) Subject: MDMP require version bumped X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=commitdiff_plain;h=9805df13c0d3a2f385f1e9f09210312107a32b57 MDMP require version bumped believe non-holding multis work now null non-holdings data handled better --- diff --git a/extract_holdings b/extract_holdings index 117aef5..58b7575 100755 --- a/extract_holdings +++ b/extract_holdings @@ -3,7 +3,7 @@ use strict; use warnings; use Getopt::Long; -use Equinox::Migration::MapDrivenMARCXMLProc 1.003; +use Equinox::Migration::MapDrivenMARCXMLProc 1.005; use Equinox::Migration::MARCXMLSampler; my $VERSION = '1.001'; @@ -28,7 +28,7 @@ print "\n"; sub extract_holdings { my ($c) = @_; - print "Parsing records for extraction... "; + print "Parsing records for extraction:\n"; my $m = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => $c->{marcfile}, mapfile => $c->{map}, verbose => 1, @@ -51,9 +51,9 @@ sub extract_holdings { print HOLDINGS "BEGIN;\n\negid, hseq, " unless $j; my $rec = $m->{data}{recs}[$i]; my $k = 0; # holding-within-record pointer - # for each holdings tag in the record... - while ( defined $rec->{tmap}{ $c->{holdings} }[$k] ) { - my $holdidx = $rec->{tmap}{ $c->{holdings} }[$k]; + + for my $holdidx ( @{ $rec->{tmap}{ $c->{holdings} } } ) { + # for each holdings tag in the record... my $tagid = $rec->{tags}[$holdidx]{tag}; $k++; @@ -80,11 +80,21 @@ sub extract_holdings { for my $othertag ( sort keys %{$rec->{tmap}} ) { next if $othertag eq $c->{holdings}; # ignoring the holdings, o'course my $idx = $rec->{tmap}{$othertag}[0]; # get index into tags struct + unless (defined $idx) { + push @out, ''; + next; + } for my $sub ( sort keys %{$rec->{tags}[$idx]{uni}} ) { push @out, $rec->{tags}[$idx]{uni}{$sub}; print HOLDINGS "l_", $m->name($rec->{tags}[$idx]{tag}, $sub), ", " unless $j; } + for my $sub ( sort keys %{$multis->{$othertag}} ) { + for my $value ( @{$rec->{tags}[$idx]{multi}{$sub}} ) { + my $fh = $MULTIFILE{"$othertag$sub"}; + print $fh join("\t", $rec->{egid}, $j, $value), "\n"; + } + } } # and dump it @@ -92,11 +102,9 @@ sub extract_holdings { print HOLDINGS join("\t", @out); print HOLDINGS "\n"; $j++; - - @out = undef; } $i++; - print "\r$i"; + print "\r$i $j"; } print "\n"; }