projects
/
irspy-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New, identical to xeno.conf except for <VirtualHost> name.
[irspy-moved-to-github.git]
/
lib
/
ZOOM
/
IRSpy
/
Connection.pm
diff --git
a/lib/ZOOM/IRSpy/Connection.pm
b/lib/ZOOM/IRSpy/Connection.pm
index
7923893
..
a25d2ea
100644
(file)
--- a/
lib/ZOOM/IRSpy/Connection.pm
+++ b/
lib/ZOOM/IRSpy/Connection.pm
@@
-1,4
+1,4
@@
-# $Id: Connection.pm,v 1.2 2006-10-11 16:46:01 mike Exp $
+# $Id: Connection.pm,v 1.16 2007-05-01 16:30:17 mike Exp $
package ZOOM::IRSpy::Connection;
package ZOOM::IRSpy::Connection;
@@
-9,8
+9,12
@@
use warnings;
use ZOOM;
our @ISA = qw(ZOOM::Connection);
use ZOOM;
our @ISA = qw(ZOOM::Connection);
+use ZOOM::IRSpy::Record;
+use ZOOM::IRSpy::Utils qw(cql_target render_record irspy_identifier2target);
+
use ZOOM::IRSpy::Task::Connect;
use ZOOM::IRSpy::Task::Search;
use ZOOM::IRSpy::Task::Connect;
use ZOOM::IRSpy::Task::Search;
+use ZOOM::IRSpy::Task::Retrieve;
=head1 NAME
=head1 NAME
@@
-25,24
+29,41
@@
Keeping the private data in these objects removes the need for ugly
mappings in the IRSpy object itself; adding the methods makes the
application code cleaner.
mappings in the IRSpy object itself; adding the methods makes the
application code cleaner.
-The constructor takes an additional first argument, a reference to the
-IRSpy object that it is associated with.
+The constructor takes an two additional leading arguments: a reference
+to the IRSpy object that it is associated with, and the target ID of
+the connection.
=cut
sub create {
my $class = shift();
my $irspy = shift();
=cut
sub create {
my $class = shift();
my $irspy = shift();
+ my $id = shift();
my $this = $class->SUPER::create(@_);
my $this = $class->SUPER::create(@_);
+ my $target = irspy_identifier2target($id);
+ $this->option(host => $target);
$this->{irspy} = $irspy;
$this->{irspy} = $irspy;
- $this->{record} = undef;
$this->{tasks} = [];
$this->{tasks} = [];
+ my $query = cql_target($id);
+ my $rs = $irspy->{conn}->search(new ZOOM::Query::CQL($query));
+ my $n = $rs->size();
+ $this->log("irspy", "query '$query' found $n records");
+ my $zeerex;
+ $zeerex = render_record($rs, 0, "zeerex") if $n > 0;
+ $this->{record} = new ZOOM::IRSpy::Record($this, $target, $zeerex);
+
return $this;
}
return $this;
}
+sub destroy {
+ my $this = shift();
+ $this->SUPER::destroy(@_);
+}
+
+
sub irspy {
my $this = shift();
return $this->{irspy};
sub irspy {
my $this = shift();
return $this->{irspy};
@@
-73,7
+94,7
@@
sub current_task {
my $old = $this->{current_task};
if (defined $new) {
$this->{current_task} = $new;
my $old = $this->{current_task};
if (defined $new) {
$this->{current_task} = $new;
- $this->log("irspy_debug", "set current task to $new");
+ $this->log("irspy_task", "set current task to $new");
}
return $old;
}
return $old;
@@
-87,7
+108,7
@@
sub next_task {
my $old = $this->{next_task};
if (defined $new) {
$this->{next_task} = $new;
my $old = $this->{next_task};
if (defined $new) {
$this->{next_task} = $new;
- $this->log("irspy_debug", "set next task to $new");
+ $this->log("irspy_task", "set next task to $new");
}
return $old;
}
return $old;
@@
-104,19
+125,36
@@
sub log {
sub irspy_connect {
my $this = shift();
sub irspy_connect {
my $this = shift();
- my(%cb) = @_;
+ my($udata, $options, %cb) = @_;
+
+ $this->add_task(new ZOOM::IRSpy::Task::Connect
+ ($this, $udata, $options, %cb));
+}
+
+
+sub irspy_search {
+ my $this = shift();
+ my($qtype, $qstr, $udata, $options, %cb) = @_;
- $this->add_task(new ZOOM::IRSpy::Task::Connect($this, %cb));
- $this->log("irspy", "registered connect()");
+ #warn "calling $this->irspy_search(", join(", ", @_), ")\n";
+ $this->add_task(new ZOOM::IRSpy::Task::Search
+ ($qtype, $qstr, $this, $udata, $options, %cb));
}
}
+# Wrapper for backwards compatibility
sub irspy_search_pqf {
my $this = shift();
sub irspy_search_pqf {
my $this = shift();
- my($query, %cb) = @_;
+ return $this->irspy_search("pqf", @_);
+}
+
+
+sub irspy_rs_record {
+ my $this = shift();
+ my($rs, $index0, $udata, $options, %cb) = @_;
- $this->add_task(new ZOOM::IRSpy::Task::Search($query, $this, %cb));
- $this->log("irspy", "registered search_pqf($query)");
+ $this->add_task(new ZOOM::IRSpy::Task::Retrieve
+ ($rs, $index0, $this, $udata, $options, %cb));
}
}
@@
-127,10
+165,18
@@
sub add_task {
my $tasks = $this->{tasks};
$tasks->[-1]->{next} = $task if @$tasks > 0;
push @$tasks, $task;
my $tasks = $this->{tasks};
$tasks->[-1]->{next} = $task if @$tasks > 0;
push @$tasks, $task;
- $this->log("irspy", "added task $task");
+ $this->log("irspy_task", "added task $task");
}
}
+sub render {
+ my $this = shift();
+ return ref($this) . "(" . $this->option("host") . ")";
+}
+
+use overload '""' => \&render;
+
+
=head1 SEE ALSO
ZOOM::IRSpy
=head1 SEE ALSO
ZOOM::IRSpy