Changeset 24487

Show
Ignore:
Timestamp:
26.08.2011 09:39:01 (8 years ago)
Author:
sjm84
Message:

Added two new options in EmbeddedMetadataPlugin? for filtering the embedded sets that are returned

Location:
main/trunk/greenstone2/perllib
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugins/EmbeddedMetadataPlugin.pm

    r24419 r24487  
    7575    'list' => [{'name' => "true", 'desc' => "{common.true}"}, {'name' => "false", 'desc' => "{common.false}"}], 
    7676    'deft' => "true" 
     77    },{ 
     78    'name' => "set_filter_list", 
     79    'desc' => "{EmbeddedMetadataPlugin.set_filter_list}", 
     80    'type' => "string" 
     81    },{ 
     82    'name' => "set_filter_regexp", 
     83    'desc' => "{EmbeddedMetadataPlugin.set_filter_regexp}", 
     84    'type' => "string", 
     85    'deft' => ".*" #If changing this default, also need to update the constructor 
    7786    }]; 
    7887 
     
    102111    $exifTool->Options('Verbose'); 
    103112    $self->{'exiftool'} = $exifTool; 
     113     
     114    my $setFilterList = $self->{'set_filter_list'}; 
     115    my $setFilterRegexp = $self->{'set_filter_regexp'}; 
     116    if ((defined $setFilterList) && ($setFilterList ne "")) 
     117    { 
     118        if ((defined $setFilterRegexp) && ($setFilterRegexp ne ".*") && ($setFilterRegexp ne "")) 
     119        { 
     120            my $outhandle = $self->{'outhandle'}; 
     121            print $outhandle "Warning: can only specify 'set_filter_list' or 'set_filter_regexp'\n"; 
     122            print $outhandle "         defaulting to 'set_filter_list'\n"; 
     123        } 
     124 
     125        my @sets = split(/,/,$setFilterList); 
     126        my @sets_bracketed; 
     127        foreach my $s (@sets) 
     128        { 
     129            $s =~ s/^(ex\.)?(.*)$/(ex.$2)/; 
     130            push (@sets_bracketed, $s); 
     131        } 
     132 
     133        my $setFilterRegexp = join("|",@sets_bracketed); 
     134        $self->{'set_filter_regexp'} = $setFilterRegexp; 
     135    } 
    104136 
    105137    return bless $self, $class; 
     
    145177} 
    146178 
     179sub checkAgainstFilters 
     180{ 
     181    my $self = shift(@_); 
     182    my $name = shift(@_); 
     183     
     184    my $setFilterRegexp = $self->{'set_filter_regexp'}; 
     185    if((defined $setFilterRegexp) && ($setFilterRegexp ne "")) 
     186    { 
     187        return ($name =~ m/($setFilterRegexp)/i); 
     188    } 
     189    else 
     190    { 
     191        return 1; 
     192    } 
     193} 
    147194 
    148195sub extractEmbeddedMetadata() 
     
    215262                                foreach my $val (@vs) { 
    216263                                    if ($val =~ /\S/) { 
    217                                         push (@{$exif_metadata{$field}}, $self->gsSafe($val)); 
     264                                        push (@{$exif_metadata{$field}}, $self->gsSafe($val)) if $self->checkAgainstFilters($field); 
    218265                                        ++$metadata_count; 
    219266                                    } 
     
    222269                            else 
    223270                            { 
    224                                 push (@{$exif_metadata{$field}}, $self->gsSafe($v)); 
     271                                push (@{$exif_metadata{$field}}, $self->gsSafe($v)) if $self->checkAgainstFilters($field); 
    225272                                ++$metadata_count; 
    226273                            } 
     
    239286                            foreach my $val (@vs) { 
    240287                                if ($val =~ /\S/) { 
    241                                     push (@{$exif_metadata{$field}}, $self->gsSafe($val)); 
     288                                    push (@{$exif_metadata{$field}}, $self->gsSafe($val)) if $self->checkAgainstFilters($field); 
    242289                                    ++$metadata_count; 
    243290                                } 
     
    246293                        else 
    247294                        { 
    248                             push (@{$exif_metadata{$field}}, $self->gsSafe($allvals)); 
     295                            push (@{$exif_metadata{$field}}, $self->gsSafe($allvals)) if $self->checkAgainstFilters($field); 
    249296                            ++$metadata_count; 
    250297                        } 
     
    258305                        foreach my $v (@vs) { 
    259306                            if ($v =~ /\S/) { 
    260                                 push (@{$exif_metadata{$field}}, $self->gsSafe($v)); 
     307                                push (@{$exif_metadata{$field}}, $self->gsSafe($v)) if $self->checkAgainstFilters($field); 
    261308                                ++$metadata_count;  
    262309                            } 
     
    265312                } 
    266313                if (!$metadata_done) { 
    267                     push (@{$exif_metadata{$field}}, $self->gsSafe($value)); 
     314                    push (@{$exif_metadata{$field}}, $self->gsSafe($value)) if $self->checkAgainstFilters($field); 
    268315                    ++$metadata_count; 
    269316                } 
  • main/trunk/greenstone2/perllib/strings.properties

    r24291 r24487  
    866866EmbeddedMetadataPlugin.join_character:The character to use with join_before_split (default is a single space). 
    867867EmbeddedMetadataPlugin.trim_whitespace:Trim whitespace from start and end of any extracted metadata values (Note: this also applies to any values generated through joining with join_before_split or splitting through metadata_field_separator). 
     868EmbeddedMetadataPlugin.set_filter_list:A comma-separated list of the metadata sets we would like to retrieve. 
     869EmbeddedMetadataPlugin.set_filter_regexp:A regular expression that filters out the metadata we would like to retrieve. 
    868870 
    869871ExcelPlugin.desc:A plugin for importing Microsoft Excel files (versions 95 and 97).