#! /usr/bin/perl

print "begin;\n";
print "delete from temppoll;\n";
print "delete from placements;\n";
print "delete from dhcp;\n";
print "delete from switches;\n";
print "SELECT pg_catalog.setval('switches_switch_seq', 1, false);\n";
print "SELECT pg_catalog.setval('polls_poll_seq', 1, false);\n";

open PATCHLIST, "patchlist.txt"
	or die "patchlist.txt: $!";

my $cc = 241;
my $dd = 0;

my $i = 1;
while (<PATCHLIST>) {
	chomp;
	my ($name, $distro, $port) = split / /;

	$name =~ /e(\d+)-(\d+)/;
	my ($e, $s) = ($1, $2);

	my $x = int(202 + $e * 8.25);
	my $y;

	$x += 7 if ($e >= 19);
	$x += 14 if ($e >= 35);
	$x += 9 if ($e >= 51);
	$x += 9 if ($e >= 68 && $s < 4);

	my ($c, $d);
	if ($s <= 3) {
		$c = $e;
		$d = ($s - 1) * 64;

		$y = 470 - $s * 48;
	} else {
		$c = $e + 1;
		$d = ($s - 4) * 64;

		$y = 400 - $s * 48 - ($s - 3) * 2;
	}

	my $xx = $x + 12;
	my $yy = $y + (($s > 3) ? 50 : 48);

	$dk = $dd + 7 + ($cc - 241) * 42;

# lasses magic-factor =)
	$dk += 4;
	if ($dk > 13) {
		$dk += 3;
	}	

	print "insert into switches (ip, sysname, switchtype) values ('87.76.$cc.$dk', 'e$e-${s}sw', 'es3024');\n";
	print "insert into placements (switch, placement) values ($i, box '(($x,$y),($xx,$yy))');\n";
	print "insert into dhcp (switch, network) values ($i, '87.76.$c.$d/26');\n";
	$i++;

	$dd++;
	if ($dd == 42) {
		$cc++;
		$dd = 0;
	}
}

print "end;\n";
