X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy.pm;h=5e6519f686018c7b582c5bd32c84d00f1fcc1afb;hp=fe1984c9cac629e1fd52e118ebacd33188972b2f;hb=6d012b5c316b35ce43de6eba65600cb24e6961cf;hpb=65b34ef4191b3a96d2f5ea120efc65b52ea73a94 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) = @_;