From: Mike Taylor
Date: Wed, 25 Apr 2007 13:28:42 +0000 (+0000)
Subject: Deletion using same record rather then recordIdOpaque
X-Git-Tag: CPAN-v1.02~54^2~414
X-Git-Url: http://jsfdemo.indexdata.com/?a=commitdiff_plain;h=186c5aadab9191b81b9e3dab96ad9fa4071a72a3;p=irspy-moved-to-github.git
Deletion using same record rather then recordIdOpaque
---
diff --git a/web/htdocs/details/delete.mc b/web/htdocs/details/delete.mc
index c1b65ff..89cf5d3 100644
--- a/web/htdocs/details/delete.mc
+++ b/web/htdocs/details/delete.mc
@@ -1,4 +1,4 @@
-%# $Id: delete.mc,v 1.5 2007-02-20 19:21:26 mike Exp $
+%# $Id: delete.mc,v 1.6 2007-04-25 13:28:42 mike Exp $
<%args>
$id
$really => 0
@@ -15,14 +15,33 @@ $really => 0
% } else {
<%perl>
+ # We can't delete records using recordIdOpaque, since character
+ # sets are handled differently here in extended services from how
+ # they are used in the Alvis filter's record-parsing, and so
+ # non-ASCII characters come out differently in the two contexts.
+ # Instead, we must send a record whose contents indicate the ID of
+ # that which we wish to delete. There are two ways, both
+ # unsatisfactory: we could either fetch the actual record them
+ # resubmit it in the deletion request (which wastes a search and a
+ # fetch) or we could build a record by hand from the parsed-out
+ # components (which is error-prone and which I am not 100% certain
+ # will work since the other contents of the record will be
+ # different). The former evil seems to be the lesser.
my $conn = new ZOOM::Connection("localhost:8018/IR-Explain---1", 0,
user => "admin", password => "fruitbat",
elementSetName => "zeerex");
- # I am thinking that ZOOM should provide delete(), update(), etc.
+ my $rs = $conn->search(new ZOOM::Query::CQL(cql_target($id)));
+ if ($rs->size() == 0) {
+ $m->comp("/details/error.mc",
+ title => "Error", message => "No such ID '$id'");
+ return 0;
+ }
+ my $rec = $rs->record(0);
+ my $xml = $rec->render();
+
my $p = $conn->package();
$p->option(action => "recordDelete");
- $p->option(recordIdOpaque => $id);
- $p->option(record => ""); # Work around Zebra bug
+ $p->option(record => $xml);
$p->send("update");
$p->destroy();