From 6d012b5c316b35ce43de6eba65600cb24e6961cf Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Thu, 11 Dec 2014 12:33:50 +0000 Subject: [PATCH] Fix bug IR-350. Newly created records now get an auto-generated UDB, "irspy-NUMBER". --- lib/ZOOM/IRSpy.pm | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/lib/ZOOM/IRSpy.pm b/lib/ZOOM/IRSpy.pm index fe1984c..5e6519f 100644 --- a/lib/ZOOM/IRSpy.pm +++ b/lib/ZOOM/IRSpy.pm @@ -1,4 +1,3 @@ - package ZOOM::IRSpy; use 5.008; @@ -366,10 +365,13 @@ sub _rewrite_irspy_record { } -my $_reliabilityField = { +my $_specialFields = { reliability => [ reliability => 0, - "Calculated reliability of server", - "e:serverInfo/e:reliability" ], + "Calculated reliability of server", + "e:serverInfo/e:reliability" ], + udb => [ udb => 0, + "Access Name (Unique DB)", + "e:databaseInfo/i:udb" ], }; sub _rewrite_zeerex_record { @@ -378,7 +380,12 @@ sub _rewrite_zeerex_record { # Add reliability score my $xc = irspy_xpath_context($rec); my($nok, $nall, $percent) = calc_reliability_stats($xc); - modify_xml_document($xc, $_reliabilityField, { reliability => $percent }); + modify_xml_document($xc, $_specialFields, { reliability => $percent }); + + if (!defined $oldid) { + # New record: generate a UDB for it. + modify_xml_document($xc, $_specialFields, { udb => _next_udb() }); + } my $p = $conn->package(); $p->option(action => "specialUpdate"); @@ -407,6 +414,19 @@ sub _rewrite_zeerex_record { } +sub _next_udb { + use IndexData::Utils::PersistentCounter; + + my $file = $ENV{IRSPY_COUNTER_FILE} + or die "no IRSPY_COUNTER_FILE in environment"; + my $counter = new IndexData::Utils::PersistentCounter($file) + or die "can't open counter file '$file': $!"; + my $val = $counter->next() + or die "can't get counter value from '$file': $!"; + return "irspy-$val"; +} + + sub _delete_record { my($conn, $id) = @_; -- 1.7.10.4