Changeset 9353


Ignore:
Timestamp:
2005-03-10T11:59:45+13:00 (19 years ago)
Author:
davidb
Message:

Combination of metadata passed on through the 'saved_metadata' mechanismn
in conflict with metadata.xml files. The metadata.xml files were wiping
out any metadata already stored in saved_metadata. Code revised to merge
two structures rather than assign over the top.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/plugins/RecPlug.pm

    r9145 r9353  
    480480    push (@{$self->{'metakeysref'}}, @{$self->{'saved_targets'}});
    481481    foreach my $target (@{$self->{'saved_targets'}}) {
    482         $self->{'metadataref'}->{$target} = $self->{'saved_metadata'};
     482        my $file_metadata = $self->{'metadataref'}->{$target};
     483        my $saved_metadata = $self->{'saved_metadata'};
     484        $self->combine_metadata_structures($file_metadata,$saved_metadata);
    483485    }
    484486    }
     
    491493
    492494}
     495
     496sub store_saved_metadata
     497{
     498    my $self = shift(@_);
     499    my ($mname,$mvalue,$md_accumulate) = @_;
     500
     501    if (defined $self->{'saved_metadata'}->{$mname}) {
     502    if ($md_accumulate) {
     503        # accumulate mode - add value to existing value(s)
     504        if (ref ($self->{'saved_metadata'}->{$mname}) eq "ARRAY") {
     505        push (@{$self->{'saved_metadata'}->{$mname}}, $mvalue);
     506        } else {
     507        $self->{'saved_metadata'}->{$mname} =
     508            [$self->{'saved_metadata'}->{$mname}, $mvalue];
     509        }
     510    } else {
     511        # override mode
     512        $self->{'saved_metadata'}->{$mname} = $mvalue;
     513    }
     514    } else {
     515    if ($md_accumulate) {
     516        # accumulate mode - add value into (currently empty) array
     517        $self->{'saved_metadata'}->{$mname} = [$mvalue];
     518    } else {
     519        # override mode
     520        $self->{'saved_metadata'}->{$mname} = $mvalue;
     521    }
     522    }
     523}
     524
    493525
    494526sub Text {
     
    501533    # $_ == Metadata content
    502534    my $mname = $self->{'metadata_name'};
    503     if (defined $self->{'saved_metadata'}->{$mname}) {
    504         if ($self->{'metadata_accumulate'}) {
    505         # accumulate mode - add value to existing value(s)
    506         if (ref ($self->{'saved_metadata'}->{$mname}) eq "ARRAY") {
    507             push (@{$self->{'saved_metadata'}->{$mname}}, $_);
    508         } else {
    509             $self->{'saved_metadata'}->{$mname} =
    510             [$self->{'saved_metadata'}->{$mname}, $_];
    511         }
    512         } else {
    513         # override mode
    514         $self->{'saved_metadata'}->{$mname} = $_;
    515         }
    516     } else {
    517         if ($self->{'metadata_accumulate'}) {
    518         # accumulate mode - add value into (currently empty) array
    519         $self->{'saved_metadata'}->{$mname} = [$_];
    520         } else {
    521         # override mode
    522         $self->{'saved_metadata'}->{$mname} = $_;
    523         }
    524     }
     535    my $mvalue = $_;
     536    my $md_accumulate = $self->{'metadata_accumulate'};
     537    $self->store_saved_metadata($mname,$mvalue,$md_accumulate);
    525538    }
    526539}
Note: See TracChangeset for help on using the changeset viewer.