X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=www%2Fsearch.egw;h=0b2c02c10b72536c10c885b307643f11cf24caaa;hb=949f8c4efedfe6d191264853690c84f527e1790b;hp=26fce8de8c2143e6af4747fb040db09807c841d5;hpb=cbf0ef7549f996f4d96f41c6dafa76dc17dd7782;p=egate.git diff --git a/www/search.egw b/www/search.egw index 26fce8d..0b2c02c 100644 --- a/www/search.egw +++ b/www/search.egw @@ -1,13 +1,13 @@ { -# $Id: search.egw,v 1.5 1995/10/31 16:56:24 adam Exp $ +# $Id: search.egw,v 1.6 1995/11/01 16:15:45 adam Exp $ -proc search-response {} { +proc search-response {sno} { global sessionWait - set status [z39.1 responseStatus] + set status [z39.$sno responseStatus] if {[lindex $status 0] == "NSD"} { - z39.1 nextResultSetPosition 0 + z39.$sno nextResultSetPosition 0 set code [lindex $status 1] set msg [lindex $status 2] set addinfo [lindex $status 3] @@ -30,6 +30,7 @@ proc fail-response {} { proc display-brief {zset no} { global env + global setNo global sessionId set type [$zset type $no] @@ -57,7 +58,7 @@ proc display-brief {zset no} { set year [lindex [$zset getMarc $no field 260 * c] 0] } ] } { html { } $title {} + html $sessionId {/showfull.egw/} $setNo + $no {"> } $title {} html " ${year} " } htmlr {
} @@ -116,8 +117,10 @@ proc display-full {zset no} { } proc display-rec {from to} { + global setNo + while {$from <= $to} { - display-brief z39.1 $from + display-brief z39.$setNo $from incr from } } @@ -153,26 +156,23 @@ proc build-query {} { return $q } +proc research {setNo oldHost piggy} { + global hist global sessionWait - global host - - set newHost $sessionParms - set databases [lindex $targets($newHost) 1] - htmlr { WWW/Z39.50 Gateway Search } $newHost { } - htmlr {} - wflush - - if {[catch {z39 callback ok-response}]} { + set host $hist($setNo,host) + if {[catch {z39 failback fail-response}]} { ir z39 } - if {$newHost != $host} { - set host $newHost - z39 disconnect - z39 callback ok-response - z39 failback fail-response + if {[catch {set oldHost [z39 connect]}]} { + set oldHost "" + } + z39 callback ok-response + z39 failback fail-response + if {$oldHost != $host} { + catch {z39 disconnect} - htmlr {Connecting to target } $host {
} + html "Connecting to target " $host "
\n" set sessionWait 0 if {[catch {z39 connect $host}]} { htmlr "Cannot connect to target ${host}
" @@ -195,60 +195,155 @@ proc build-query {} { wabort } } - ir-set z39.1 z39 - set b [wform base] - if {$b == ""} { - z39.1 databaseNames [lindex $targets($host) 1] - } else { - z39.1 databaseNames [list $b] - htmlr {selected: } $b {
} + if {![catch {z39.$setNo smallSetUpperBound 0}]} { + return } - z39.1 preferredRecordSyntax USMARC - - set query [build-query] + ir-set z39.$setNo z39 + eval z39.$setNo databaseNames $hist($setNo,database) - htmlr {
query: --} $query {--
} - htmlr {sessionId: } $sessionId {
} - htmlr {sessionParms: } $sessionParms {
} - htmlr {form: } [wform] {
} - htmlr {databases: } $databases {
} - htmlr {selected: } [wform base] {

} + z39.$setNo preferredRecordSyntax USMARC - z39 callback search-response + z39 callback search-response $setNo + if {$piggy} { + z39.$setNo largeSetLowerBound 999999 + z39.$setNo smallSetUpperBound 0 + z39.$setNo mediumSetPresentNumber $hist($setNo,maxPresent) + } else { + z39.$setNo largeSetLowerBound 2 + z39.$setNo smallSetUpperBound 0 + z39.$setNo mediumSetPresentNumber 0 + } set sessionWait 0 - z39.1 search $query + z39.$setNo search $hist($setNo,query) zwait sessionWait - if {$sessionWait == 1} { - set r [z39.1 resultCount] - htmlr { } $r { hits

} - } else { + if {$sessionWait != 1} { htmlr {} wabort } - set setOffset [z39.1 numberOfRecordsReturned] - display-rec 1 $setOffset +} + + global sessionWait + global nextSetNo + global setNo + global hist + + set oldHost $hist($setNo,host) + + if {[wform menu1] == ""} { + set setNo [lindex $sessionParms 0] + } else { + if {![info exists hist($nextSetNo,host)]} { + set hist($nextSetNo,host) $oldHost + } + set setNo $nextSetNo + incr nextSetNo + + set hist($setNo,query) [build-query] + set b [wform base] + if {$b == ""} { + set hist($setNo,database) $databases + } else { + set hist($setNo,database) $b + } + set hist($setNo,maxPresent) [wform hits] + if {$hist($setNo,maxPresent) == ""} { + set hist($setNo,maxPresent) 30 + } + } + set host $hist($setNo,host) + set databases [lindex $targets($host) 1] + + htmlr { WWW/Z39.50 Gateway Search } $host { } + htmlr {} + html "

Search result

\n" wflush - incr setOffset - set setMax [z39.1 resultCount] - if {$setMax > 30} { - set setMax 30 + + + set startPos [lindex $sessionParms 1] + set endPos [lindex $sessionParms 2] + if {$startPos == ""} { + research $setNo $oldHost 1 + + set r [z39.$setNo resultCount] + html "

$r hits


\n" + set setOffset [z39.$setNo numberOfRecordsReturned] + display-rec 1 $setOffset + wflush + incr setOffset + set setMax [z39.$setNo resultCount] + if {$setMax > $hist($setNo,maxPresent)} { + set setMax $hist($setNo,maxPresent) + } + } else { + research $setNo $oldHost 0 + + set setOffset $startPos + set setMax [z39.$setNo resultCount] + if {$setMax > $endPos} { + set setMax $endPos + } } set toGet [expr 1 + $setMax - $setOffset] while {$toGet > 0} { - set sessionWait 0 - z39.1 present $setOffset $toGet - zwait sessionWait - if {$sessionWait != "1"} { - break + for {set got 0} {$got < $toGet} {incr got} { + if {[z39.$setNo type [expr $setOffset + $got]] == ""} { + break + } + } + if {$got < $toGet} { + set sessionWait 0 + z39.$setNo present $setOffset $toGet + zwait sessionWait + if {$sessionWait != "1"} { + break + } + set got [z39.$setNo numberOfRecordsReturned] } - set got [z39.1 numberOfRecordsReturned] display-rec $setOffset [expr $got + $setOffset - 1] set setOffset [expr $got + $setOffset] set toGet [expr 1 + $setMax - $setOffset] wflush } } + +{ + html "
\n" + html "Debug information
\n" + html "sessionId: $sessionId
\n" + html "sessionParms: $sessionParms
\n" + foreach e {SERVER_NAME PATH_INFO SCRIPT_NAME} { + html $e {: } $env($e) {
} \n + } + html "form: " [wform] "
\n" + html "target: " $host "
\n" + html "databases: " $hist($setNo,database) "
\n" + html "selected: " [wform base] "
\n" + html "query: ->" $hist($setNo,query) "<-
" + html "setNo: " $setNo "
\n" + html "nextSetNo: " $nextSetNo "
\n" +} + +
+{ + if {$setMax < [z39.$setNo resultCount]} { + html { Next } "| \n" + } + if {$startPos != ""} { + html { Prev } "| \n" + } + html { New target } " | \n" + html { New query } +} -