Changeset 32818 for main/trunk


Ignore:
Timestamp:
2019-02-25T23:01:49+13:00 (5 years 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 edited

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        }
Note: See TracChangeset for help on using the changeset viewer.