Changeset 10157


Ignore:
Timestamp:
2005-06-23T11:22:04+12:00 (19 years ago)
Author:
davidb
Message:

arcinfo.pm upgraded to support incremental building. Opportunity also taken
to improve readability of code. Constants used instead of [0] [1] accesses
to array indexes.

File:
1 edited

Legend:

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

    r7904 r10157  
    3434
    3535package arcinfo;
     36
     37use constant ORDER_OID_INDEX  => 0;
     38use constant ORDER_SORT_INDEX => 1;
     39
     40use constant INFO_FILE_INDEX    => 0;
     41use constant INFO_STATUS_INDEX  => 1;
     42
     43# File format read in: OID <tab> Filename <tab> Optional-Index-Status
     44
     45# Index status can be:
     46#  I = Index for the first time
     47#  R = Reindex
     48#  D = Delete
     49#  B = Been indexed
    3650
    3751sub new {
     
    91105    my $i = 0;
    92106    while ($i < scalar (@{$self->{'order'}})) {
    93         if ($self->{'order'}->[$i]->[0] eq $OID) {
     107        if ($self->{'order'}->[$i]->[ORDER_OID_INDEX] eq $OID) {
    94108        splice (@{$self->{'order'}}, $i, 1);
    95109        last;
     
    103117sub add_info {
    104118    my $self = shift (@_);
    105     my ($OID, $doc_file, $sortmeta) = @_;
     119    my ($OID, $doc_file, $index_status, $sortmeta) = @_;
    106120    $sortmeta = "" unless defined $sortmeta;
     121    $index_status = "I" unless defined $index_status; # I = needs indexing
    107122
    108123    if (! defined($OID)) {
     
    110125    return undef;
    111126    }
     127
    112128    $self->delete_info ($OID);
    113     $self->{'info'}->{$OID} = [$doc_file];
     129    $self->{'info'}->{$OID} = [$doc_file,$index_status];
    114130    push (@{$self->{'order'}}, [$OID, $sortmeta]);
    115131}
    116132
    117 # returns a list of the form [[OID, doc_file], ...]
    118 sub get_OID_list {
    119     my $self = shift (@_);
    120 
    121     my ($OID);
     133sub set_status_info {
     134    my $self = shift (@_);
     135    my ($OID, $index_status) = @_;
     136
     137    my $OID_info = $self->{'info'}->{$OID};
     138    $OID_info->[INFO_STATUS_INDEX] = $index_status;
     139}
     140
     141
     142sub get_status_info {
     143    my $self = shift (@_);
     144    my ($OID) = @_;
     145
     146    my $index_status = undef;
     147
     148    my $OID_info = $self->{'info'}->{$OID};
     149    if (defined $OID_info) {
     150    $index_status = $OID_info->[INFO_STATUS_INDEX];
     151    }
     152    else {
     153    die "Unable to find document id $OID\n";
     154    }
     155
     156    return $index_status;
     157
     158}
     159
     160
     161# returns a list of the form [[OID, doc_file, index_status], ...]
     162sub get_OID_list
     163{
     164    my $self = shift (@_);
     165
     166    my $order = $self->{'order'};
     167
     168    my @sorted_order
     169    = sort {$a->[ORDER_SORT_INDEX] cmp $b->[ORDER_SORT_INDEX]} @$order;
     170
    122171    my @list = ();
    123172
    124     foreach $OID (sort {$a->[1] cmp $b->[1]} @{$self->{'order'}}) {
    125     push (@list, [$OID->[0], $self->{'info'}->{$OID->[0]}->[0]]);
     173    foreach my $OID_order (@sorted_order) {
     174    my $OID = $OID_order->[ORDER_OID_INDEX];
     175    my $OID_info = $self->{'info'}->{$OID};
     176
     177    push (@list, [$OID, $OID_info->[INFO_FILE_INDEX],
     178              $OID_info->[INFO_STATUS_INDEX]]);
    126179    }
    127180
     
    133186    my $self = shift (@_);
    134187
    135     my ($OID);
     188    my $order = $self->{'order'};
     189
     190    my @sorted_order
     191    = sort {$a->[ORDER_SORT_INDEX] cmp $b->[ORDER_SORT_INDEX]} @$order;
     192
    136193    my @list = ();
    137194
    138     foreach $OID (sort {$a->[1] cmp $b->[1]} @{$self->{'order'}}) {
    139     push (@list, [$self->{'info'}->{$OID->[0]}->[0], $OID->[0]]);
     195    foreach $OID_order (@sorted_order) {
     196    my $OID = $OID_order->[ORDER_OID_INDEX];
     197    my $OID_info = $self->{'info'}->{$OID};
     198
     199    push (@list, [$OID_info->[INFO_FILE_INDEX], $OID]);
    140200    }
    141201
Note: See TracChangeset for help on using the changeset viewer.