Changeset 32818 for main

Show
Ignore:
Timestamp:
25.02.2019 23:01:49 (10 months ago)
Author:
davidb
Message:

New option added to allow metadata values within CSV to be split into separate values

Location:
main/trunk/model-sites-dev/heritage-nz/collect/reports-2019/perllib/plugins
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/model-sites-dev/heritage-nz/collect/reports-2019/perllib/plugins/CSVFieldSeparator.pm

    r32817 r32818  
    4343    'type' => "string", 
    4444    'deft' => "auto", 
     45    'reqd' => "no" }, 
     46      { 'name' => "metadata_value_separator", 
     47    'desc' => "{CSVFieldSeparator.metadata_value_separator}", 
     48    'type' => "string", 
     49    'deft' => "", 
    4550    'reqd' => "no" } 
    4651    ]; 
  • main/trunk/model-sites-dev/heritage-nz/collect/reports-2019/perllib/plugins/CSVPlugin.pm

    r32817 r32818  
    130130    } 
    131131    else { 
    132         print STDERR "Error: Badly formatted CSV field line: $csv_file_field_line.\n"; 
     132    print STDERR "Error: Badly formatted CSV field line: $csv_file_field_line.\n"; 
    133133    } 
    134134 
     
    154154    my $separate_char = $self->{'separate_char'}; 
    155155 
     156    my $md_val_sep = $self->{'metadata_value_separator'}; 
     157    undef $md_val_sep if ($md_val_sep eq ""); 
     158 
    156159    my $csv = Text::CSV->new(); 
    157160    $csv->sep_char($separate_char); 
     
    166169        # Only bother with non-empty values 
    167170        if ($md_val ne "" && defined($csv_file_fields[$i])) { 
    168         $doc_obj->add_utf8_metadata($section, $csv_file_fields[$i], $md_val); 
     171        if (defined $md_val_sep) { 
     172            my $md_name = $csv_file_fields[$i]; 
     173 
     174            my @within_md_vals = split(/${md_val_sep}/,$md_val); 
     175            foreach my $within_md_val (@within_md_vals) { 
     176            $doc_obj->add_utf8_metadata($section, $md_name, $within_md_val); 
     177            } 
     178        } 
     179        else { 
     180            $doc_obj->add_utf8_metadata($section, $csv_file_fields[$i], $md_val); 
     181        } 
    169182        } 
    170183    } 
  • main/trunk/model-sites-dev/heritage-nz/collect/reports-2019/perllib/plugins/MetadataCSVPlugin.pm

    r32817 r32818  
    146146    my $separate_char = $self->{'csv_field_separator'}; 
    147147 
     148    my $md_val_sep = $self->{'metadata_value_separator'}; 
     149    undef $md_val_sep if ($md_val_sep eq ""); 
     150 
    148151    my @csv_file_lines = split(/\n/, $csv_file_content); 
    149152    my $csv_file_field_line = shift(@csv_file_lines); 
     
    198201        # Only bother with non-empty values 
    199202        if ($md_val ne "" && defined($csv_file_fields[$i])) { 
    200             if (!defined $csv_line_metadata{$csv_file_fields[$i]}) { 
    201             $csv_line_metadata{$csv_file_fields[$i]} = []; 
     203 
     204            my $md_name = $csv_file_fields[$i]; 
     205 
     206            if (!defined $md_name) { 
     207            $csv_line_metadata{$md_name} = []; 
    202208            } 
    203             push (@{$csv_line_metadata{$csv_file_fields[$i]}}, $md_val); 
     209 
     210            if (defined $md_val_sep) {           
     211             
     212            my @within_md_vals = split(/${md_val_sep}/,$md_val); 
     213            push (@{$csv_line_metadata{$md_name}}, @within_md_vals); 
     214 
     215#           foreach my $within_md_val (@within_md_vals) { 
     216#               push (@{$csv_line_metadata{$md_name}}, $within_md_val); 
     217#           } 
     218            } 
     219            else { 
     220            push (@{$csv_line_metadata{$md_name}}, $md_val); 
     221            } 
    204222        } 
    205223        }