1 # $Id: Connection.pm,v 1.8 2007-03-05 19:43:10 mike Exp $
3 package ZOOM::IRSpy::Connection;
10 our @ISA = qw(ZOOM::Connection);
12 use ZOOM::IRSpy::Record;
13 use ZOOM::IRSpy::Utils qw(cql_target render_record);
15 use ZOOM::IRSpy::Task::Connect;
16 use ZOOM::IRSpy::Task::Search;
17 use ZOOM::IRSpy::Task::Retrieve;
22 ZOOM::IRSpy::Connection - ZOOM::Connection subclass with IRSpy functionality
26 This class provides some additional private data and methods that are
27 used by IRSpy but which would be useless in any other application.
28 Keeping the private data in these objects removes the need for ugly
29 mappings in the IRSpy object itself; adding the methods makes the
30 application code cleaner.
32 The constructor takes an two additional leading arguments: a reference
33 to the IRSpy object that it is associated with, and the target ID of
43 my $this = $class->SUPER::create(@_);
44 $this->option(host => $target);
45 $this->{irspy} = $irspy;
48 my $query = cql_target($target);
49 my $rs = $irspy->{conn}->search(new ZOOM::Query::CQL($query));
51 $this->log("irspy", "query '$query' found $n records");
53 $zeerex = render_record($rs, 0, "zeerex") if $n > 0;
54 $this->{record} = new ZOOM::IRSpy::Record($this, $target, $zeerex);
62 return $this->{irspy};
70 my $old = $this->{record};
71 $this->{record} = $new if defined $new;
79 return $this->{tasks};
87 my $old = $this->{current_task};
89 $this->{current_task} = $new;
90 $this->log("irspy_task", "set current task to $new");
101 my $old = $this->{next_task};
103 $this->{next_task} = $new;
104 $this->log("irspy_task", "set next task to $new");
113 my($level, @msg) = @_;
115 $this->irspy()->log($level, $this->option("host"), " ", @msg);
121 my($udata, $options, %cb) = @_;
123 my $task = new ZOOM::IRSpy::Task::Connect($this, $udata, $options, %cb);
124 $this->add_task($task);
128 sub irspy_search_pqf {
130 my($query, $udata, $options, %cb) = @_;
132 my $task = new ZOOM::IRSpy::Task::Search($query,
133 $this, $udata, $options, %cb);
134 $this->add_task($task);
138 sub irspy_rs_record {
140 my($rs, $index0, $udata, $options, %cb) = @_;
142 my $task = new ZOOM::IRSpy::Task::Retrieve($rs, $index0,
143 $this, $udata, $options, %cb);
144 $this->add_task($task);
152 my $tasks = $this->{tasks};
153 $tasks->[-1]->{next} = $task if @$tasks > 0;
155 $this->log("irspy_task", "added task $task");
161 return ref($this) . "(" . $this->option("host") . ")";
164 use overload '""' => \&render;
173 Mike Taylor, E<lt>mike@indexdata.comE<gt>
175 =head1 COPYRIGHT AND LICENSE
177 Copyright (C) 2006 by Index Data ApS.
179 This library is free software; you can redistribute it and/or modify
180 it under the same terms as Perl itself, either Perl version 5.8.7 or,
181 at your option, any later version of Perl 5 you may have available.