#!/usr/bin/perl

### this doesn't work yet ###

use warnings; 
use strict;
#use DataBrowser qw(browse);
use lib "/cluster/bin/scripts";
use Encode;
use HgDb;

unless (scalar(@ARGV) == 2) {
	
	print STDERR<<END;
usage: encodeQaSqlRelease <release.sql> <sponsor>
example: encodeQaSqlRelease release.sql wong

END

exit(1);
}
my $host = `hostname`;
chomp $host;
unless ($host eq "hgwbeta") {
	die "must be run on hgwbeta\n";
}
my $in = $ARGV[0];
my $sponsor = $ARGV[1];
my $db = HgDb->new(DB => 'qapushq') or die "die: Can't connect to DB: qapushq\n";
my $sth = $db->execute("show tables") or die "die: Can't show tables\n";
$db->execute("LOCK TABLES pushQ WRITE");
my $idmax = $db->execute("select qid from pushQ order by qid desc limit 1");

my @row = $idmax->fetchrow_array;
my $id = sprintf "%06d", ($row[0] + 1);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
my $time =  sprintf "%04d-%02d-%02d", $year,($mon+1),$mday;

open IN, "$in";

my %fields;
my $grab = 0;
my $currentField = "";
while (<IN>) {

	my $line = $_;
	chomp $line;
	
	if ($line =~ m/(\S+)=\{/) {
		$grab = 1;
		$currentField = $1;
		$fields{$currentField} = [];
		next;
	}
	if ($line =~ m/^\}$/) {
		$grab = 0;
	}
	if ($grab) {
		push @{$fields{$currentField}},$line;
	}
}
close IN;
my @columns;
my @values;

foreach my $key (keys %fields) {

	push @columns, "$key";
	my $value = "";
	foreach my $val (@{$fields{$key}}) {
		$value = $value . "$val\n";
	}
	chomp $value;
	push @values, $value;

}
push @columns, "qadate";
push @values, $time;
push @columns, "sponsor";
push @values, $sponsor;
unshift @columns, "qid";
unshift @values, "$id";
my @fakes = qw(pqid cgis onlineHelp stat extSource lockUser lockDateTime featureBits importance);
for my $key (@fakes) {
	push @columns, $key;
	push @values, "";
}
my $return = $db->insert('pushQ', \@columns, \@values);
$db->execute("UNLOCK TABLES");
#my $return;
unless ($return) {
	print "inserted as qID: $id\n";
} else {
	print "ERROR: $return\n";
}
