#!/usr/bin/perl -w

use Pg;
use strict;
use vars qw($haslo $conn $query $result $prevnrfrm $prevknrfrm 
	    $state $line);

$haslo=shift;

die "Potrzebny argument: sowo do konkordancji"  unless $haslo;
print STDERR "Generuj konkordancj dla hasa '$haslo'.\n";

$conn = Pg::connectdb("dbname = frek");

die "Could not connect to the database"
    unless $conn->status == PGRES_CONNECTION_OK;

$query = "select w.nrfrm, f.forma, wd.nrfrm
from wystapienia wd, interpretacje, leksemy, wystapienia w, formy f
where wd.wfid=ifid and ilid=lid and haslo='$haslo'
  and (w.nrfrm between wd.nrfrm-9 and wd.nrfrm+8) and
      w.wfid=f.fid
group by w.wid, w.nrfrm, f.forma, wd.wfid, wd.nrfrm
order by wd.wfid, wd.nrfrm, w.wid;
";

print STDERR "Przetwarzanie zapytania...";
$result = $conn->exec($query);

die $conn->errorMessage unless $result->resultStatus == PGRES_TUPLES_OK;
print STDERR " gotowe.\n";

$prevnrfrm=0; $prevknrfrm=0; $state=0; $line='';
while (my ($nrfrm,$forma,$knrfrm) = $result->fetchrow) {
#    $line .= ">" if ($prevnrfrm == $knrfrm && $nrfrm > $knrfrm);
    if ($knrfrm != $prevknrfrm) { 
	print  substr($line, 0, 79) . "\n";
	$line ='';
    }
    $line .= ' ' unless $nrfrm == $prevnrfrm;
    if ($prevnrfrm < $knrfrm && $nrfrm == $knrfrm) {
	$line = substr $line, -40;
#	$line .= "<";
    }
    $line .= "$forma" ;
#    print "$nrfrm $forma $knrfrm\n";
    $prevnrfrm=$nrfrm; $prevknrfrm=$knrfrm;
}

print  substr($line, 0, 79) . "\n";

