Changeset 316 for trunk/gsdl/perllib/classify/AZList.pm
- Timestamp:
- 1999-06-30T15:35:39+12:00 (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/perllib/classify/AZList.pm
r256 r316 11 11 12 12 return bless { 13 'OID'=>"NULL",14 13 'list'=>{}, 15 14 'metaname' => $options[0] … … 23 22 } 24 23 25 sub set_OID {26 my $self = shift (@_);27 my ($OID) = @_;28 29 $self->{'OID'} = $OID;30 }31 32 sub get_OID {33 my $self = shift (@_);34 return $self->{'OID'};35 }36 37 24 sub classify { 38 25 my $self = shift (@_); … … 45 32 # if this document doesn't contain the metadata element we're 46 33 # sorting by we won't include it in this classification 47 48 34 if (defined $metavalue) { 49 35 if ($self->{'metaname'} eq 'Creator') { … … 59 45 } 60 46 61 sub output_classify_info { 62 my $self = shift (@_); 63 my ($handle) = @_; 47 sub get_classify_info { 48 my $self = shift (@_); 64 49 65 50 my @classlist = sort {$self->{'list'}->{$a} cmp $self->{'list'}->{$b};} keys %{$self->{'list'}}; 66 51 my $subclasses = $self->splitlist (\@classlist); 67 52 53 my ($classifyinfo); 54 68 55 if (scalar @$subclasses) { 69 70 my @contents = ();71 map { push (@contents, "\".$_->[1]"); } @$subclasses;72 # write out top level entry73 $self->output_entry ($handle, $self->{'OID'}, $self->{'metaname'}, \@contents, "AZList");74 75 # write out the entries for each sub-classification76 map {$self->output_entry ($handle, "$self->{'OID'}.$_->[1]", $_->[0], $_->[2]);} @$subclasses;56 $classifyinfo = $self->get_entry ($self->{'metaname'}, "AZList"); 57 foreach $subclass (@$subclasses) { 58 my $tempclassify = $self->get_entry($subclass->[0], "AZList"); 59 foreach $subsubOID (@{$subclass->[2]}) { 60 push (@{$tempclassify->{'contains'}}, {'OID'=>$subsubOID}); 61 } 62 push (@{$classifyinfo->{'contains'}}, $tempclassify); 63 } 77 64 78 65 } else { 79 80 # write out top level entry 81 $self->output_entry ($handle, $self->{'OID'}, $self->{'metaname'}, \@classlist, "AZList"); 82 } 66 $classifyinfo = $self->get_entry($self->{'metaname'}, "AZList"); 67 foreach $subOID (@classlist) { 68 push (@{$classifyinfo->{'contains'}}, {'OID'=>$subOID}); 69 } 70 } 71 72 return $classifyinfo; 73 } 74 75 sub get_entry { 76 my $self = shift (@_); 77 my ($title, $classifytype) = @_; 78 79 # organise into classification structure 80 my %classifyinfo = ('classifytype'=>$classifytype, 81 'Title'=>$title, 82 'contains'=>[]); 83 84 return \%classifyinfo; 83 85 } 84 86 … … 199 201 } 200 202 201 sub output_entry {202 my $self = shift (@_);203 my ($handle, $OID, $title, $contentsref, $classifytype) = @_;204 205 print $handle "[$OID]\n";206 print $handle "<doctype>classify\n";207 print $handle "<hastxt>0\n";208 print $handle "<Title>$title\n";209 print $handle "<classifytype>$classifytype\n" if defined $classifytype;210 if (scalar @$contentsref) {211 print $handle "<contains>", join (";", @$contentsref), "\n";212 }213 print $handle '-' x 70, "\n";214 }215 216 203 # format an english name for sorting 217 204 # i.e. convert to lowercase, put surname before
Note:
See TracChangeset
for help on using the changeset viewer.