X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=www%2Fz39util.tcl;h=d78e5d62932d81457e37cf7fb1c18f287d67cdfb;hb=309c35b155c617707995d52197f64f7e17d143a2;hp=ffdb837000f422b564e1df54732ee8b2c1c59c28;hpb=5e8a1c1d1f14d915a82d9b8df5b09ba75bb201ec;p=egate.git diff --git a/www/z39util.tcl b/www/z39util.tcl index ffdb837..d78e5d6 100644 --- a/www/z39util.tcl +++ b/www/z39util.tcl @@ -1,5 +1,5 @@ # -# $Id: z39util.tcl,v 1.32 1996/02/21 14:58:35 adam Exp $ +# $Id: z39util.tcl,v 1.35 1996/03/05 18:50:26 adam Exp $ # proc saveState {} { uplevel #0 { @@ -70,7 +70,6 @@ proc display-brief {zset no tno} { global setNo global sessionId - html {
  • } set type [$zset type $no] if {$type == "SD"} { @@ -90,7 +89,15 @@ proc display-brief {zset no tno} { html [join [$zset getSutrs $no]] html "
    \n" return - } + } + if {$rtype == "WAIS"} { + html { } + html [join [$zset getWAIS $no headline]] + html {} + html "
    \n" + return + } if {![catch { set author [$zset getMarc $no field 100 * a] set corp [$zset getMarc $no field 110 * a] @@ -297,6 +304,69 @@ proc dl-marc-field-rec {zset no tag lead start stop startid sep} { } } +proc display-full-wais {zset no} { + set i 0 + set element junk + htmlToken l [join [$zset getWAIS $no text]] { + if {[string compare [string index $l 0] {<}]} { + set data($element) $l + continue + } + switch -exact $l { + { + set element title + } + { + set element dateOfLastModification + } + { + set element controlIdentifier + } + { + set element lastChecked + } + { + set element bytes + } + { + set element linkage + } + { + incr i + } +
  • { + set element "$i,linkage" + } + { + set element "$i,title" + } + default { + set element junk + } + } + } + html {Title: } {} $data(title) "
    \n" + html {URL: } $data(linkage) "
    \n" + html {Score: } [$zset getWAIS $no score] "
    \n" + html {Lines: } [$zset getWAIS $no lines] "
    \n" + if {[info exists data(bytes)]} { + html {Bytes: } $data(bytes) "
    \n" + } + if {[info exists data(dateOfLastModification)]} { + html {Last modified: } $data(dateOfLastModification) "
    \n" + } + if {[info exists data(lastChecked)]} { + html {Last checked: } $data(lastChecked) "
    \n" + } + html "\n" +} + proc display-full {zset no tno} { set type [$zset type $no] if {$type == "SD"} { @@ -315,7 +385,11 @@ proc display-full {zset no tno} { if {$rtype == "SUTRS"} { html [join [$zset getSutrs $no]] "
    \n" return - } + } + if {$rtype == "WAIS"} { + display-full-wais $zset $no + return + } if {[catch {set r [$zset getMarc $no line * * *]}]} { html "Unknown record type: $rtype
    \n" return @@ -453,6 +527,15 @@ proc build-query {t ilines} { set q {} for {set i 1} {$i <= $ilines} {incr i} { set term [join [egw_form entry$i]] + if {[lindex $targets($t) 6] == "1"} { + if {[string length $op] == 0} { + set q $term + } else { + set q "$term $q" + } + set op [egw_form logic$i] + continue + } if {[string length $term] > 0} { set field [join [egw_form menu$i]] foreach x [lindex $targets($t) 2] { @@ -496,9 +579,7 @@ proc z39scan {setNo scanNo tno scanLines scanPos cache} { set scanAttr $hist($setNo,scanAttr) set scanTerm $hist($setNo,$scanNo,scanTerm) } - if {[catch [list $zz failback fail-response]]} { - ir $zz - } + mkAssoc $zz $host if {[catch [list set oldHost [$zz connect]]]} { set oldHost "" } @@ -506,7 +587,7 @@ proc z39scan {setNo scanNo tno scanLines scanPos cache} { $zz callback ok-response $zz failback fail-response set thisHost [splitHostSpec $host] - if {$oldHost != $thisHost} { + if {[string compare $oldHost $thisHost]} { catch [list $zz disconnect] set sessionWait 0 @@ -656,16 +737,14 @@ proc z39search {setNo piggy tno elements} { set database $hist($setNo,database) set query $hist($setNo,query) } - if {[catch [list $zz failback fail-response]]} { - ir $zz - } + mkAssoc $zz $host if {[catch [list set oldHost [$zz connect]]]} { set oldHost "" } $zz callback ok-response $zz failback fail-response set thisHost [splitHostSpec $host] - if {$oldHost != $thisHost} { + if {[string compare $oldHost $thisHost]} { catch [list $zz disconnect] set sessionWait 0 @@ -690,7 +769,7 @@ proc z39search {setNo piggy tno elements} { $zz disconnect return 0 } - if {[catch {egw_wait sessionWait 60}]} { + if {$sessionWait == 0 && [catch {egw_wait sessionWait 60}]} { displayError "Cannot initialize target" $thisHost $zz disconnect return 0 @@ -717,8 +796,12 @@ proc z39search {setNo piggy tno elements} { } } } - ir-set $zz.$setNo $zz - + + if {[lindex $targets($host) 6] == "1"} { + wais-set $zz.$setNo $zz + } else { + ir-set $zz.$setNo $zz + } if {![lindex $targets($host) 5]} { set elements {} } @@ -743,7 +826,12 @@ proc z39search {setNo piggy tno elements} { } set sessionWait 0 egw_log debug "search: $query" - $zz.$setNo search $query + if {[catch {$zz.$setNo search $query}]} { + displayError "Search fail" "Connection closed" + html "\n" + $zz disconnect + return 0 + } if {[catch {egw_wait sessionWait 60}]} { egw_log debug "timeout/cancel in search" @@ -858,12 +946,10 @@ proc z39msearch {setNo elements start number cache} { egw_log debug "z39msearch start=$start number=$number elements=$elements" for {set i 1} {$i <= $not} {incr i} { set host $hist($setNo,$i,host) - if {[catch [list z39$i failback fail-m-response $i]]} { - ir z39$i - } + mkAssoc z39$i $host set oldHost [z39$i connect] set thisHost [splitHostSpec $host] - if {$oldHost != $thisHost} { + if {[string compare $oldHost $thisHost]} { catch {z39$i disconnect} } z39$i callback [list connect-m-response $i] @@ -874,7 +960,7 @@ proc z39msearch {setNo elements start number cache} { set oldHost [z39$i connect] set host $hist($setNo,$i,host) set thisHost [splitHostSpec $host] - if {$oldHost == $thisHost} { + if {![string compare $oldHost $thisHost]} { continue } egw_log debug "old=$oldHost this=$thisHost" @@ -893,8 +979,9 @@ proc z39msearch {setNo elements start number cache} { } set zleft 0 for {set i 1} {$i <= $not} {incr i} { + set host $hist($setNo,$i,host) if {$debug} { - html "host " [splitHostSpec $hist($setNo,$i,host)] ": " + html "host " [splitHostSpec $host] ": " } egw_log debug "i=$i zstatus=$zstatus($i)" if {$zstatus($i) < 1} { @@ -907,7 +994,12 @@ proc z39msearch {setNo elements start number cache} { if {$debug} { html "ok
    \n" } - ir-set z39$i.$setNo z39$i + + if {[lindex $targets($host) 6] == "1"} { + wais-set z39$i.$setNo z39$i + } else { + ir-set z39$i.$setNo z39$i + } set hist($setNo,$i,offset) 0 eval z39$i.$setNo databaseNames $hist($setNo,$i,database) @@ -1305,3 +1397,23 @@ proc splitHostSpec {host} { proc mergeHostSpec {host databases} { return ${host}.[join $databases -] } + +proc mkAssoc {assoc host} { + global targets + + if {[catch {$assoc failback fail-response}]} { + if {[lindex $targets($host) 6] == "1"} { + wais $assoc + } else { + ir $assoc + } + } else { + if {[lindex $targets($host) 6] == "1"} { + if {[$assoc comstack] == "wais"} return + wais $assoc + } else { + if {[$assoc comstack] == "tcpip"} return + ir $assoc + } + } +} \ No newline at end of file