Ignore:
Timestamp:
2009-02-03T09:46:33+13:00 (15 years ago)
Author:
davidb
Message:

Addition of 'edit_mode' parameter to classify(). This can be either 'add' 'delete' or 'reindex' (should think about renaming the last one to something more appropriate, e.g. update).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/perllib/classify/HFileHierarchy.pm

    r17209 r18455  
    197197{
    198198    my $self = shift (@_);
    199     my ($doc_obj,$sortmeta,$metavalues) = @_;
     199    my ($doc_obj,$edit_mode,$sortmeta,$metavalues) = @_;
     200
     201    my $outhandle = $self->{'outhandle'};
    200202
    201203    my $doc_OID = $doc_obj->get_OID();
     
    204206    if ((defined $self->{'descriptorlist'}->{$metaelement}) &&
    205207        (defined $self->{'locatorlist'}->{$self->{'descriptorlist'}->{$metaelement}})) {
    206         push (@{$self->{'locatorlist'}->{$self->{'descriptorlist'}->{$metaelement}}->{'contents'}},
    207           [$doc_OID, $sortmeta]);
    208         my $localid = $self->{'descriptorlist'}->{$metaelement};
    209         my $classid = $self->get_number();
    210 
    211         $doc_obj->add_metadata($doc_obj->get_top_section(), "memberof", "CL$classid.$localid");
     208
     209        if ($edit_mode eq "delete") {
     210        # find it, and remove it
     211        my $existing_list = $self->{'locatorlist'}->{$self->{'descriptorlist'}->{$metaelement}}->{'contents'};
     212       
     213        my $filtered_list = [];
     214        foreach my $existing_oid_pair (@$existing_list) {
     215            if ($existing_oid_pair->[0] eq $doc_OID) {
     216            print $outhandle "  Deleting $doc_OID for $metaelement in hierarchy\n";
     217            }
     218            else {
     219            push(@$filtered_list,$existing_oid_pair);
     220            }
     221        }
     222        $self->{'locatorlist'}->{$self->{'descriptorlist'}->{$metaelement}}->{'contents'} = $filtered_list;
     223        }
     224        else {
     225        push (@{$self->{'locatorlist'}->{$self->{'descriptorlist'}->{$metaelement}}->{'contents'}},
     226              [$doc_OID, $sortmeta]);
     227        my $localid = $self->{'descriptorlist'}->{$metaelement};
     228        my $classid = $self->get_number();
     229
     230        $doc_obj->add_metadata($doc_obj->get_top_section(), "memberof", "CL$classid.$localid");
     231        }
    212232    }
    213233    }
Note: See TracChangeset for help on using the changeset viewer.