Changeset 8797


Ignore:
Timestamp:
2004-12-14T14:08:32+13:00 (19 years ago)
Author:
kjdon
Message:

added new oidtypes 'assigned' (from stephen de gabrielle) and fixed up the dirname one too. both of these default to hash ids if they can't get a valid id

Location:
trunk/gsdl/perllib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/doc.pm

    r8716 r8797  
    128128    my ($type) = @_;
    129129
    130     if ($type =~ /^(hash|incremental|dirname)$/) {
     130    if ($type =~ /^(hash|incremental|dirname|assigned)$/) {
    131131    $self->{'OIDtype'} = $type;
    132132    } else {
     
    631631    my ($OID) = @_;
    632632   
     633    my $use_hash_oid = 0;
    633634    # if an OID wasn't provided claculate one
    634635    if (!defined $OID) {
    635636    $OID = "NULL";
    636 
    637     if ($self->{'OIDtype'} eq "incremental") {
     637    if ($self->{'OIDtype'} eq "hash") {
     638        $use_hash_oid = 1;
     639    } elsif ($self->{'OIDtype'} eq "incremental") {
    638640        $OID = "D" . $OIDcount;
    639641        $OIDcount ++;
     
    642644        $OID = 'J';
    643645        my $filename = $self->get_source_filename();
    644         if (defined($filename) && -e $filename) {
     646        if (defined($filename)) { # && -e $filename) {
    645647        $OID = &File::Basename::dirname($filename);
    646648        if (defined $OID) {
    647649            $OID = 'J'.&File::Basename::basename($OID);
     650            $OID =~ s/\.//; #remove any periods
    648651        } else {
    649             print STDERR "Failed to find base for filename ($filename).....\n";
    650             die("\n"); 
     652            print STDERR "Failed to find base for filename ($filename)...generating hash id\n";
     653            $use_hash_oid = 1;
    651654        }
    652655        } else {
    653         print STDERR "Failed to find filename.....\n";
    654         die("\n");
     656        print STDERR "Failed to find filename, generating hash id\n";
     657        $use_hash_oid = 1;
    655658        }   
    656659       
     660    } elsif ($self->{'OIDtype'} eq "assigned") {
     661        my $identifier = $self->get_metadata_element ($self->get_top_section(), "dc.Identifier");
     662        if (defined $identifier && $identifier ne "") {
     663        $OID = "D" . $self->get_metadata_element ($self->get_top_section(), "dc.Identifier");
     664        $OID =~ s/\.//; #remove any periods
     665        } else {
     666        # need a hash id
     667        print STDERR "no dc.Identifier found, generating hash id\n";
     668        $use_hash_oid = 1;
     669        }
     670               
    657671    } else {
     672        $use_hash_oid = 1;
     673    }
     674
     675    if ($use_hash_oid) {
     676       
    658677        # "hash" OID - feed file to hashfile.exe
    659678        #my $filename = $self->get_source_filename();
  • trunk/gsdl/perllib/docproc.pm

    r8716 r8797  
    4545}
    4646
    47 # OIDtype may be "hash" or "incremental" or "dirname"
     47# OIDtype may be "hash" or "incremental" or "dirname" or "assigned"
    4848sub set_OIDtype {
    4949    my $self = shift (@_);
    5050    my ($type) = @_;
    5151
    52     if ($type =~ /^(hash|incremental|dirname)$/) {
     52    if ($type =~ /^(hash|incremental|dirname|assigned)$/) {
    5353    $self->{'OIDtype'} = $type;
    5454    } else {
Note: See TracChangeset for help on using the changeset viewer.