XEOF
print "Query: $prettyquery, " if $prettyquery;
print "No. matches= $nrecords\n";
}
sub printHeader {
## ! fix - may have already done
...
print <
$dataname query results
\n";
print "Query: $prettyquery, " if $prettyquery;
print "No. matches= $nrecords\n";
}
sub printResultsReports {
local( $dpath, $dfile, $items, $repstyle, $contype) = @_;
##? need gopher support
print STDERR "printResultsReports: path=$dpath data=$dfile items=$items\n" if $debug;
$err= &openResultList( $dpath, $dfile);
if ($err) { return; }
&getResultListInfo( $dpath, $dfile);
if ($items eq "*") { $items= "1..$nrecords"; } # faster to just step thru RLIB
local @list = ("1","2");
$items =~ tr/ /,/;
$items =~ s/--/-/g;
$items =~ s/-/../g; ## let 1-5 work for eval()
@list = eval("($items);"); # items in format "1,2,3..5,7,9..20"
local $idlist= undef;
local ($item, $i);
foreach $item (@list) {
&seekResultItem( $item);
local $line = ;
##print STDERR "item=$item line=$line" if $debug;
if ($line =~ /([A-Za-z]{4}\d+)/) {
$idlist .= "+" if ($i>0);
$idlist .= $1;
$i++;
}
}
&closeResultList();
if ($idlist) {
if ($repstyle) { $idlist .= "&content=$repstyle"; }
if ($contype) { $idlist .= "&mimetype=$contype"; }
## print STDERR "${idurl}?${idlist}\n" if $debug;
return &redirectToUrl("${idurl}?${idlist}", 1);
}
else {
print STDERR " no ids found in $askdata \n" if $debug;
return &putNoResults("Error reading results to query '$prettyquery'", 1);
}
}
sub convertCodes {
if (defined &main::ConvertCodes) { return &main::ConvertCodes( @_ ); }
else { return @_; }
}
sub printResultList {
local( $dpath, $dfile, $pgsize, $startNum) = @_;
local($str,$i);
local($do_table)=0;
$pagesize= $pgsize if ($pgsize>0);
if ($javaResList || $ENV{'FB_QUERYLIST_X'}==1 ) {
local(@myclasses) = ( "fbqueryj.jar", "jgl3.1.0.jar" );
&initJavaEnv(@myclasses);
$japp= "flybase.query.FbQuery";
$jflags= "";
$javaparms = "debug " . $javaparms if ($debug);
$javaparms .= " path=$dpath" if ($dpath);
$javaparms .= " class=$fbidtag" if ($fbidtag);
$javaparms .= " maxhit=$pagesize";
$javaparms .= " start=$startNum" if ($startNum);
local($cmd)= "$javabin $jflags $japp $javaparms kind=querylist data=$dfile";
print STDERR "printResultList: $cmd\n" if $debug;
system($cmd);
unlink $envtemp;
return;
}
print STDERR "printResultList: path=$dpath data=$dfile start=$startNum\n" if $debug;
&putContentType();
$err= &openResultList( $dpath, $dfile);
if ($err) { $onepageOfMatches= 1; &printHeader(); return; }
&getResultListInfo( $dpath, $dfile);
&setClassVars($fbidtag);
if( !($dohtml) ) { ## GOPHER
## for( $i=0; $i <= $#outarray; $i++) { print $outarray[$i]; }
return;
}
if( !$startNum || $startNum<1 ) { $startNum=1; }
## &out_html_hits_page(@outarray);
$onepageOfMatches= ($pagesize >= $nrecords);
&printHeader();
if( $ENV{'FB_LIST_HSTYLE'} ne 'preformat' ) { $do_table=1; } ## eq 'table' ??
if( $do_table ) {
local(@heads)= &getColHeader(1);
print "\n";
print "";
foreach $hd ( @heads ) {
print "| $hd | ";
}
print "
\n";
}
else {
local($colhdr)= &getColHeader(0);
print "\n";
print "$colhdr\n";
}
local($irow, $linenum);
local($more)= 1;
while ($more)
{
$lineno= $startNum + $irow;
$more= 0 if ($lineno > $nrecords);
$more= 0 if ($irow >= $pagesize);
last if (!$more);
$irow++;
&seekResultItem( $lineno);
$str = ;
##$more= 0 if (!$str);
if ($str) {
$str =~ s|\n+$||;
local @tparts = split(/\t/, $str, 999);
if( $do_table ) {
$str = ($irow % 2 == 1) ? "" : "
";
print $str;
print "| ". $lineno ." | ";
}
else { print "- "; }
local($i);
%vals= ();
$id= undef;
for ( $i=0; $i<=$#tparts; $i++ ) {
local $part= $tparts[$i];
$part =~ s/^RETE\|//;
if ($part =~ /^[A-Za-z]{4}\d/) { $id= $part; }
else {
($key,$num,$val)= split(' ',$part,3);
# print STDERR "key=$key num=$num val=$val\n" if $debug;
#$key= 'SYM' if ($key eq "GSYM"); ## hack fix for FBgn
##$val= &getCommonOrgName($val) if ($key eq 'ORG');
if ($key eq "ID") { $id= $val; }
elsif (!$val || $numIsVal{ $key }) { $val= $num; }
else { ($val) = convertCodes( $val ); }
}
if ($headsize{$key}) { $vals{$key}= $val; }
}
for ( $i=0; $i<=$#headkeys; $i++ ) {
local $key= $headkeys[$i];
local $val= $vals{ $key };
$val= "-" if (!$val || $val =~ m/^\s+$/);
local $dolink= (($key eq $gSymbolKey) && $id);
if ($dolink) { $url= $idurl . '?' . $id; }
if( $do_table ) {
print '
| ';
print "" if ($dolink);
print $val;
print '' if ($dolink);
print ' | ';
}
else {
print "" if ($dolink);
print $val;
print '' if ($dolink);
local $spc= ' ';
local $len= $headsize{$key} - length($val) - 1;
$spc .= substr(' ',0,$len) if ($len>0);
print $spc;
}
}
if( $do_table ) { print "
"; }
}
print " \n";
}
if ( $do_table ) { print "
\n"; }
else { print "\n"; }
print "
\n";
&putpagebar( $startNum, $nrecords, $pagesize);
print $footer if ($footer);
print "\n"; ## dang - may not be last - move to &printEnd() ??
&closeResultList();
}
sub initJavaEnv {
local(@classes) = @_;
$jlib = "$gopath/.etc/jlib";
$envtemp = "$gopath/tmp/fbjava$$.env";
if (!$contenttype) { $contenttype= $ENV{'CGI_CONTYPE'}; }
if (!$contenttype) { $contenttype= $ENV{'CONTENT_TYPE'}; }
if (!$contenttype) { $contenttype= "text/html"; }
if ($contenttype eq "application/x-www-form-urlencoded") { $contenttype= "text/html"; }
$javapath= "$gopath/.totop/java-local/";
if (! -d $javapath ) {
$javapath= "$gopath/.totop/bin-local/java/";
if (! -d $javapath ) { $javapath= $ENV{"JAVA_HOME"}; }
}
if ( -d $javapath ) {
$javabin= "$javapath/bin/java";
$javalib= "$javapath/lib/classes.zip";
}
else {
return &putNoResults("No java runtime available", $noexit);
}
## ?? set $javalib from $ENV{"CLASSPATH"} ??
$classpath= "$jlib";
local($i);
for ($i= 0; $i<=$#classes; $i++) {
$classpath .= ":$jlib/" . $classes[$i];
}
$classpath .= ":$javalib";
$ENV{"CLASSPATH"}= $classpath;
print STDERR "CLASSPATH='$classpath'\n" if $debug;
open(ENVF,">$envtemp");
while (local($key,$val) = each %ENV) { print ENVF "$key=$val\n"; }
close(ENVF);
$javaparms= "httpcall mimetype=$contenttype env=${envtemp} ";
}
sub setClassVars {
local($_) = @_; ## parameter is section value or FBid value
local($idokay);
$idokay = 1;
@views= ("text/html","text/plain","text/acode","text/acode-pretty", "text/xml" );
$gSymbolKey='SYM';
if (/^FBgn/i) {
$dataname = "FlyBase Genes"; ## if (!$dataname || $dataname =~ /FlyBase data/);
$fbidtag = "FBgn";
@repStyles= ("short","long","abstract","reftable","allele-table");
$gSymbolKey='GSYM';
$visibleFields0='GSYM:15=Symbol|NAM:15=Name|CLA:8=Class' .
'|CLOC:15=Map Location=KLOC|ALESR:10=No. Alleles|SK:10=No. Stocks' .
'|REF:10=No. Ref.|DBA:10=No. DNA acc.|DT:8=Date|RESZ:8=Rept. size';
$visibleFields='GSYM:15=Symbol|NAM:15=Name' .
'|CLOC:15=Map Location=KLOC|ALESR:8=Alleles|SK:8=Stocks' .
'|REF:6=Refs|DBA:8=DNA acc.|DT:8=Date|RESZ:8=Rept. size';
$briefFields='GSYM:15=Symbol|NAM:25=Name|CLOC:15=Map Location=KLOC|SK:10=No. Stocks';
$sortKinds='KLOC=2|DT=3|RESZ=1|DBA=1|REF=1|SK=1|ALESR=1';
}
elsif (/^FBal/i) {
$dataname = "FlyBase Alleles"; ## if (!$dataname || $dataname =~ /FlyBase data/);
$fbidtag = "FBal";
## $colhdr= ' Map location | Symbol .......................';
@repStyles= ("short","long","abstract","reftable");
$gSymbolKey='GSYM';
$visibleFields0='GSYM:15=Symbol|NAM:15=Name|CLA:8=Class|SK:8=Stocks|REF:8=Ref.s';
$visibleFields='GSYM:15=Symbol|NAM:15=Name|SK:8=Stocks|REF:8=Ref.s';
$briefFields= $visibleFields;
$sortKinds='KLOC=2|DT=3|RESZ=1|DBA=1|REF=1|SK=1|ALESR=1';
}
elsif (/^FBab/i) {
$dataname = "FlyBase Aberrations"; ## if (!$dataname || $dataname =~ /FlyBase data/);
$fbidtag = "FBab";
@repStyles= ("short","long","abstract","reftable");
$gSymbolKey='GSYM';
$visibleFields0='GSYM:15=Symbol|NAM:15=Name|CLA:8=Class' .
'|CLOC:15=Map Location=KLOC|ALESR:10=No. Variants|SK:10=No. Stocks' .
'|REF:10=No. Ref.|DT:10=Date|RESZ:10=Rept. size';
$visibleFields='GSYM:15=Symbol|NAM:15=Name|CLA:8=Class' .
'|CLOC:15=Map Location=KLOC|SK:10=No. Stocks|REF:6=Refs|DT:10=Date';
$briefFields='GSYM:15=Symbol|NAM:25=Name|CLOC:15=Map Location=KLOC|SK:10=No. Stocks';
$sortKinds='KLOC=2|DT=3|RESZ=1|DBA=1|REF=1|SK=1|ALESR=1';
}
elsif (/^FBba/i) {
$dataname = "FlyBase Balancers"; ## if (!$dataname || $dataname =~ /FlyBase data/);
$fbidtag = "FBba";
@repStyles= ("short","long","abstract","reftable");
$gSymbolKey='GSYM';
$visibleFields='GSYM:15=Symbol|NAM:15=Name|CLA:8=Class|SK:10=No. Stocks|REF:6=Refs';
$briefFields= $visibleFields;
$sortKinds='KLOC=2|DT=3|RESZ=1|DBA=1|REF=1|SK=1|ALESR=1';
}
elsif (/^FBrf/i) {
$dataname = "FlyBase References"; ## if (!$dataname || $dataname =~ /FlyBase data/);
$fbidtag = "FBrf";
## $colhdr= ' First Author..... | Year | Title................... | Journal/Book';
push(@views, ("application/endnote","application/refer" ));
@repStyles= ("long");
$gSymbolKey='AU';
$visibleFields='AU:20=Authors|YR:6=Year|TI:30=Title|REFM:15=Mini ref.|TP:8=Class';
$visibleFields0='AU:20=Authors|YR:6=Year|TI:30=Title|REFM:15=Mini ref.';
$briefFields='AU:25=Authors|YR:6=Year|TI:50=Title';
$sortKinds='YR=4';
}
elsif (/^FBcl/i || /^XXcl/i) {
$dataname = "FlyBase Clones"; ## if (!$dataname || $dataname =~ /FlyBase data/);
$fbidtag = "FBcl";
@repStyles= ( "long");
$gSymbolKey='SYM';
$visibleFields='SYM:15=Symbol|CLA:8=Class|CCLOC:15=Map Location|DBA:8=DNA acc.|CPW:10=Lib. plate well';
$briefFields= $visibleFields;
# CCLOC:15=Map Location=KLOC -- when KLOC is available
$sortKinds='KLOC=2|DT=3|RESZ=1|DBA=1|CPW=1';
}
elsif (/^FBpp/i) {
$dataname = "FlyBase Polypeptides"; ## if (!$dataname || $dataname =~ /FlyBase data/);
$fbidtag = "FBpp";
@repStyles= ("short","long","abstract","reftable");
$gSymbolKey='SYM';
## $visibleFields='SYM:15=Symbol|AAL:8=Length|TRS:10=Size (KD)|DBA:8=DNA acc.|HG:8=Homologs' .
## $visibleFields='SYM:15=Symbol|AAL:8=Length|TRS:10=Size (KD)|REF:6=Refs|DT:8=Date|RESZ:10=Rept. size';
$visibleFields='SYM:15=Symbol|AAL:8=Length|TRS:10=Size (KD)|HG:6=Homologs|DBA:6=DB Links|REF:6=Refs|DT:8=Date|RESZ:10=Rept. size';
$briefFields= $visibleFields;
$sortKinds='DT=3|RESZ=1'; # DBA=1|HG=1|REF=1 ## < 0) { # more than 1
foreach $v (@repStyles) { $reportStyles .= "