--- trunk/MWS.pm 2004/05/04 14:00:03 3 +++ trunk/MWS.pm 2004/05/04 15:47:14 4 @@ -8,6 +8,7 @@ use Plucene::Simple; use Mail::Box::Manager; +use Config::IniFiles; require Exporter; @@ -29,9 +30,13 @@ my $self = {}; bless($self, $class); - my $index_file = shift || die "need index file"; + my $config_file = shift || die "need index file"; - $self->{index} = Plucene::Simple->open($index_file) || die "can't open index '$index_file': $!"; + $self->{config} = new Config::IniFiles( -file => $config_file ); + + my $index_file = $self->{config}->val('global', 'index') || croak "can't find [index] section in config file with path of index"; + + $self->{index} = Plucene::Simple->open($index_file) || croak "can't open index '$index_file': $!"; $self->{mgr} = Mail::Box::Manager->new; @@ -49,7 +54,8 @@ my ($mbox,$id) = split(/ /,$mbox_id); if (! $self->{folder}->{$mbox}) { - $self->{folder}->{$mbox} = $self->{mgr}->open($mbox); + my $mbox_path = $self->{config}->val('folders', $mbox) || croak "comeone removed folder $mbox from config?"; + $self->{folder}->{$mbox} = $self->{mgr}->open($mbox_path) || croak "can't open folder $mbox at '$mbox_path': $!"; print STDERR "## open($mbox)\n" if ($debug); } @@ -87,7 +93,21 @@ } return \@arr; } - + +sub fetch_all_results { + my $self = shift; + + croak "results called before search!" if (! $self->{'index_ids'}); + + my @arr; + + foreach my $id (@{$self->{'index_ids'}}) { + push @arr, $self->fetch_result_by_id($id); + } + + return @arr; +} + sub fetch_result { my $self = shift; @@ -99,7 +119,13 @@ my $id = $self->{'index_ids'}->[$curr]; - return if (! $id); + return $self->fetch_result_by_id($id); +} + +sub fetch_result_by_id { + my $self = shift; + + my $id = shift || return; my $message = $self->fetch_message($id);