Lines 697-705
sub marc_records_to_documents {
Link Here
|
697 |
$altscript = 1; |
697 |
$altscript = 1; |
698 |
} |
698 |
} |
699 |
} |
699 |
} |
|
|
700 |
|
700 |
# Handle references to GEOGR_NAME authorities |
701 |
# Handle references to GEOGR_NAME authorities |
701 |
if ($marcflavour eq 'marc21' && $tag eq '651') { |
702 |
if ( $marcflavour eq 'marc21' && $tag eq '651' ) { |
702 |
$self->embed_geographic_name($field, $record_document, $data_fields_rules); |
703 |
$self->embed_geographic_name( $field, $record_document, $data_fields_rules ); |
703 |
} |
704 |
} |
704 |
|
705 |
|
705 |
my $data_field_rules = $data_fields_rules->{$tag}; |
706 |
my $data_field_rules = $data_fields_rules->{$tag}; |
Lines 983-990
sub marc_records_to_documents {
Link Here
|
983 |
return \@record_documents; |
984 |
return \@record_documents; |
984 |
} |
985 |
} |
985 |
|
986 |
|
|
|
987 |
=head2 embed_geographic_name($field, $record_document, $rules) |
988 |
|
989 |
$self->embed_geographic_name( $field, $record_document, $data_fields_rules ); |
990 |
|
991 |
Extract geographic fields from an authority linked to a given record |
992 |
|
993 |
=over 4 |
994 |
|
995 |
=item C<$field> |
996 |
|
997 |
MARC::Field refering to the GEOGR_NAME authority |
998 |
|
999 |
=item C<$record_document> |
1000 |
|
1001 |
Hashref representing the Elasticsearch document on which mappings should be |
1002 |
applied. |
1003 |
|
1004 |
=item C<$rules> |
1005 |
|
1006 |
MARC mapping rules for the provided field. |
1007 |
|
1008 |
=back |
1009 |
|
1010 |
=cut |
1011 |
|
986 |
sub embed_geographic_name { |
1012 |
sub embed_geographic_name { |
987 |
my ($self, $field, $record_document, $rules) = @_; |
1013 |
my ( $self, $field, $record_document, $rules ) = @_; |
988 |
|
1014 |
|
989 |
my $authid = $field->subfield('9'); |
1015 |
my $authid = $field->subfield('9'); |
990 |
return unless $authid; |
1016 |
return unless $authid; |
Lines 993-1014
sub embed_geographic_name {
Link Here
|
993 |
|
1019 |
|
994 |
my $tag = '034'; |
1020 |
my $tag = '034'; |
995 |
|
1021 |
|
996 |
my $auth_marc = $authority->record; |
1022 |
my $auth_marc = $authority->record; |
997 |
my @coordinate_fields = $auth_marc->field($tag); |
1023 |
my @coordinate_fields = $auth_marc->field($tag); |
998 |
|
1024 |
|
999 |
for my $field (@coordinate_fields) { |
1025 |
for my $field (@coordinate_fields) { |
1000 |
my $data_field_rules = $rules->{$tag}; |
1026 |
my $data_field_rules = $rules->{$tag}; |
1001 |
if ($data_field_rules) { |
1027 |
if ($data_field_rules) { |
1002 |
my $subfields_mappings = $data_field_rules->{subfields}; |
1028 |
my $subfields_mappings = $data_field_rules->{subfields}; |
1003 |
my $wildcard_mappings = $subfields_mappings->{'*'}; |
1029 |
my $wildcard_mappings = $subfields_mappings->{'*'}; |
1004 |
foreach my $subfield ($field->subfields()) { |
1030 |
foreach my $subfield ( $field->subfields() ) { |
1005 |
my ($code, $data) = @{$subfield}; |
1031 |
my ( $code, $data ) = @{$subfield}; |
1006 |
my $mappings = $subfields_mappings->{$code} // []; |
1032 |
my $mappings = $subfields_mappings->{$code} // []; |
1007 |
if (@{$mappings}) { |
1033 |
if ( @{$mappings} ) { |
1008 |
$self->_process_mappings($mappings, $data, $record_document, { |
1034 |
$self->_process_mappings( |
|
|
1035 |
$mappings, |
1036 |
$data, |
1037 |
$record_document, |
1038 |
{ |
1009 |
data_source => 'subfield', |
1039 |
data_source => 'subfield', |
1010 |
code => $code, |
1040 |
code => $code, |
1011 |
field => $field |
1041 |
field => $field |
1012 |
} |
1042 |
} |
1013 |
); |
1043 |
); |
1014 |
} |
1044 |
} |
1015 |
- |
|
|