Ignore:
Timestamp:
1999-06-30T15:35:39+12:00 (25 years ago)
Author:
sjboddie
Message:
  • changed the way classifiers work
File:
1 edited

Legend:

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

    r256 r316  
    1111
    1212    return bless {
    13     'OID'=>"NULL",
    1413    'list'=>{},
    1514    'metaname' => $options[0]
     
    2322}
    2423
    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 
    3724sub classify {
    3825    my $self = shift (@_);
     
    4532    # if this document doesn't contain the metadata element we're
    4633    # sorting by we won't include it in this classification
    47 
    4834    if (defined $metavalue) {
    4935    if ($self->{'metaname'} eq 'Creator') {
     
    5945}
    6046
    61 sub output_classify_info {
    62     my $self = shift (@_);
    63     my ($handle) = @_;
     47sub get_classify_info {
     48    my $self = shift (@_);
    6449
    6550    my @classlist = sort {$self->{'list'}->{$a} cmp $self->{'list'}->{$b};} keys %{$self->{'list'}};
    6651    my $subclasses = $self->splitlist (\@classlist);
    6752
     53    my ($classifyinfo);
     54
    6855    if (scalar @$subclasses) {
    69    
    70     my @contents = ();
    71     map { push (@contents, "\".$_->[1]"); } @$subclasses;
    72     # write out top level entry
    73     $self->output_entry ($handle, $self->{'OID'}, $self->{'metaname'}, \@contents, "AZList");
    74 
    75     # write out the entries for each sub-classification
    76     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    }
    7764 
    7865    } 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
     75sub 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;
    8385}
    8486
     
    199201}
    200202
    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 
    216203# format an english name for sorting
    217204# i.e. convert to lowercase, put surname before
Note: See TracChangeset for help on using the changeset viewer.