Ignore:
Timestamp:
2023-09-25T23:02:24+13:00 (9 months ago)
Author:
anupama
Message:

When committing r38193 yesterday (after only eyeballing the changes and refactorings to make sure everything made sense), it turns out there were lots of errors that I only discovered when testing the code today. Now there are no errors listed in my JS console output to do with syntax errors in the modmetadataaction.pm perl file, but although remove_import_metadata_array is displayed as working (still need to check the actual metadata.xml file), attempts to delete from archives fails with something to do with a dv file not being found (dv appears to be document versioning). I still have to investigate this and then once fixed, check if remove_index_metadata_array also works or not. Still need to commit changes made today tosrc/java

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/cgiactions/modmetadataaction.pm

    r38193 r38217  
    15071507    my $gsdl_cgi  = $self->{'gsdl_cgi'};
    15081508    my $infodbtype = $self->{'infodbtype'};
    1509    
     1509
    15101510
    15111511    # Obtain the collect and archive dir   
     
    15221522    my $metavalue = $self->{'metavalue'};
    15231523
    1524     my $status = $self->set_archives_metadata_entry($gsdl_cgi,$archive_dir, $infodbtype,
    1525             $docid,$dv, $metaname,$metapos,$metavalue,$metamode,$prevmetavalue);
     1524    my $metamode = $self->{'metamode'};
     1525   
     1526    my $dv = $self->{'dv'};
     1527   
     1528    my $status = $self->remove_archives_metadata_entry($gsdl_cgi,$archive_dir, $infodbtype,
     1529            $docid,$docid_secnum,$dv, $metaname,$metapos,$metavalue,$metamode);
    15261530   
    15271531    if ($status == 0)
     
    15491553{
    15501554    my $self = shift @_;
    1551     my ($gsdl_cgi, $archive_dir, $infodbtype, $docid, $dv, $metaname, $metapos, $metavalue, $metamode) = @_;
     1555    my ($gsdl_cgi, $archive_dir, $infodbtype, $docid, $docid_secnum, $dv, $metaname, $metapos, $metavalue, $metamode) = @_;
    15521556   
    15531557    $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/));
     
    15631567        $metapos = 0;
    15641568    }
    1565 
    1566     my $metamode = $self->{'metamode'};
     1569   
    15671570    $metamode = undef if(defined $metamode && ($metamode =~ m/^\s*$/));
    15681571
     
    15731576    my $doc_file = $doc_rec->{'doc-file'}->[0];
    15741577
    1575     # check if request if for file-level doc-version history 'nminus-<n>' version
    1576     my $dv = $self->{'dv'};
     1578    # check if request if for file-level doc-version history 'nminus-<n>' version   
    15771579    if (defined $dv && ($dv ne "")) {
    15781580        # Need to insert '_fldv_history/nminus-<n>' into doc_filename
     
    22742276    my $metamode = $self->{'metamode'};
    22752277
    2276     $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid, $metaname, $metapos, $metavalue, $metamode);
     2278    my $metadata_xml_filename = $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid, $metaname, $metapos, $metavalue, $metamode);
    22772279
    22782280    # any errors would have been reported inside the remove_import_metadata_entry
     
    23412343    $self->remove_from_metadata_xml($gsdl_cgi, $metadata_xml_filename, $metaname, $metapos, $metavalue, $import_tailname, $metamode); # metamode has no meaning for removing meta, but is used by set_meta when overriding All
    23422344
    2343     return $error_message;
     2345    return $metadata_xml_filename;
    23442346}
    23452347
     
    26162618    my $self = shift @_;
    26172619    my ($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue) = @_;
    2618 
     2620    my $gsdl_cgi  = $self->{'gsdl_cgi'};
     2621   
    26192622    $metapos = undef if(defined $metapos && ($metapos =~ m/^\s*$/));
    26202623    $metavalue = undef if(defined $metavalue && ($metavalue =~ m/^\s*$/)); # necessary to force fallback to undef here
     
    32983301
    32993302
    3300 #############################################################
     3303############################# REMOVE METADATA ARRAY METHODS ############################
    33013304
    33023305
     
    33833386        my $metavalue = $doc_array_rec->{'metavalue'};
    33843387        # remove-import-metadata and remove-archives-metadata recognise metamode option
    3385         # but not remove-index-metadata
     3388        # but not remove-index-metadata (nor remove-live-metadata)
    33863389        #my $metamode = $doc_array_rec->{'metamode'} || $self->{'metamode'};
    33873390
     
    33993402            $status = $self->remove_index_metadata_entry($collect_dir,$collect,$infodbtype,$docid,$metaname,$metapos,$metavalue); # how do we use metamode in set_meta_entry?
    34003403           
    3401             #if($metamode eq "override") { # now, having overridden the metavalue for the first,
    3402             ## need to accumulate subsequent metavals for this metaname, else the just-assigned
    3403             ## metavalue for this metaname will be lost
    3404             #$metamode = "accumulate";
    3405             #}
    34063404        }           
    34073405        }
     
    34993497    push(@all_docids,$docid);
    35003498
     3499    my $dbkey = "";
    35013500    my $metaname  = $doc_array_rec->{'metaname'};
    35023501    if(defined $metaname) {
    3503         my $dbkey = "$docid.$metaname";
     3502        $dbkey = "$docid.$metaname";
    35043503
    35053504        # Remove the key
     
    35133512        foreach my $metatable_rec ( @$metatable ) {
    35143513        $metaname  = $metatable_rec->{'metaname'};
    3515         my $dbkey = "$docid.$metaname";
     3514        $dbkey = "$docid.$metaname";
    35163515       
    35173516        my $cmd = "gdbmdel \"$infodb_file_path\" \"$dbkey\"";
     
    36263625    my $doc_array = decode_json $json_str;
    36273626   
    3628     #my $global_status = 0;
    3629     #my $global_mess = "";
     3627    my $global_status = 0;
     3628    my $global_mess = "";
    36303629   
    36313630    my @all_docids = ();
     
    36353634    my $status = -1;
    36363635    my $docid = $doc_array_rec->{'docid'};
     3636
     3637    my $metadata_xml_filename = undef;
    36373638   
    36383639    my ($docid_root,$docid_secnum);
     
    36543655        my $metamode = $doc_array_rec->{'metamode'} || $self->{'metamode'} || undef; # see set_import_meta_array for fallback
    36553656       
    3656         $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid
     3657        $metadata_xml_filename = $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid
    36573658       
    36583659    } elsif (defined $doc_array_rec->{'metatable'}) { # if no metaname, we expect a metatable
     
    36663667        if(defined $metapositions) {
    36673668            foreach my $metapos ( @$metapositions ) {           
    3668             $metavalue = undef;
     3669            my $metavalue = undef;
    36693670           
    3670             $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid
     3671            $metadata_xml_filename = $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid
    36713672           
    36723673            #if($metamode eq "override") { # now, having overridden the first metavalue of the metaname,
     
    36823683            foreach my $metavalue ( @$metavals ) {
    36833684            $metavalue =~ s/&lt;(.*?)&gt;/<$1>/g;
    3684             $metapos = undef;
     3685            my $metapos = undef;
    36853686           
    36863687            $self->remove_import_metadata_entry($gsdl_cgi, $arcinfo_doc_filename, $infodbtype, $docid_root, $metaname, $metapos, $metavalue, $metamode); # at this point, docid_root = docid
     
    36953696        }
    36963697    }
     3698
     3699    # errors would have caused a call to die, so can't report those
     3700    if (defined $metadata_xml_filename) {
     3701       
     3702        $global_mess .= "remove-import-metadata successful: Key[$docid] -> $metadata_xml_filename\n";
     3703    }
    36973704    }
    36983705
     
    37003707    # always a success message, as any failure would have caused a call to die within remove_import_metadata_entry
    37013708    my $mess = "remove-import-metadata-array successful: Keys[ ".join(", ",@all_docids)."]\n";
     3709    $mess .= $global_mess . "\n";
    37023710    $gsdl_cgi->generate_ok_message($mess);
    37033711}
     
    37323740    foreach my $doc_array_rec ( @$doc_array ) {
    37333741    my $status    = -1;
    3734     my $docid     = $doc_array_rec->{'docid'};
     3742    my $full_docid     = $doc_array_rec->{'docid'};
     3743    my ($docid, $docid_secnum) = ($full_docid =~ m/^(.*?)(\..*)?$/);
     3744    # usercomments meta are at root and so docid_secnum will be undef which is acceptable
    37353745    my $dv        = $doc_array_rec->{'dv'};
    37363746   
    3737     push(@all_docids,$docid);
     3747    push(@all_docids,$full_docid);
    37383748   
    37393749    my $metaname  = $doc_array_rec->{'metaname'};
     
    37453755       
    37463756        $status = $self->remove_archives_metadata_entry($gsdl_cgi,$archive_dir,$infodbtype,
    3747                  $docid,$dv, $metaname,$metapos,$metavalue,$metamode);
     3757             $docid, $docid_secnum, $dv, $metaname,$metapos,$metavalue,$metamode);
    37483758
    37493759    } elsif (defined $doc_array_rec->{'metatable'}) { # if no metaname, we expect a metatable
     
    37563766        if(defined $metapositions) {
    37573767            foreach my $metapos ( @$metapositions ) {           
    3758             $metavalue = undef;
     3768            my $metavalue = undef;
    37593769           
    37603770            $self->remove_archives_metadata_entry($gsdl_cgi, $archive_dir, $infodbtype,
    3761                       $docid,$dv, $metaname, $metapos, $metavalue, $metamode);
     3771                  $docid,$docid_secnum,$dv, $metaname,$metapos,$metavalue,$metamode);
    37623772           
    37633773            #if($metamode eq "override") { # now, having overridden the first metavalue of the metaname,
     
    37733783            foreach my $metavalue ( @$metavals ) {
    37743784            $metavalue =~ s/&lt;(.*?)&gt;/<$1>/g;
    3775             $metapos = undef;
     3785            my $metapos = undef;
    37763786
    37773787            $status = $self->remove_archives_metadata_entry($gsdl_cgi,$archive_dir,$infodbtype,
     
    37903800        # Catch error if set infodb entry failed
    37913801        $global_status = $status;
    3792         $global_mess .= "Failed to remove archives metadata key: $docid\n";
     3802        $global_mess .= "Failed to remove archives metadata key: $full_docid\n";
    37933803        $global_mess .= "Exit status: $status\n";
    37943804        $global_mess .= "System Error Message: $!\n";
Note: See TracChangeset for help on using the changeset viewer.