#!d:\perl\bin\perl.exe

use DBI;
use DBD::mysql;

$db=DBI->connect('DBI:mysql:plum_data');

$runidx=$ARGV[0];
($run)=fetchtable('select * from runs where idx='.$runidx);
$tblname=$run->{tblname};
$min=$run->{min};
$max=$run->{max};
$db->disconnect();
$order=$run->{numcombos};

$db=DBI->connect('DBI:mysql:plum_output');

#####################################################################################################

@crewtrng=findxcds('crewtrng_xcd');
 $xcds{crewtrng}=\@crewtrng;

@upmass=findxcds('upmass_xcd');
 $xcds{upmass}=\@upmass;

@stowage=findxcds('stowage_xcd');
 $xcds{stowage}=\@stowage;

@middecks=findxcds('middecks_xcd');
 $xcds{middecks}=\@middecks;

@crewtime=findxcds('crewtime_xcd');
 $xcds{crewtime}=\@crewtime;

@crewtend=findxcds('energy_crewtend_xcd');
 $xcds{crewtend}=\@crewtend;
 
@MTL=findxcds('MTL_xcd');
 $xcds{MTL}=\@MTL;

@LTL=findxcds('LTL_xcd');
 $xcds{LTL}=\@LTL;

@MTL_crewtend=findxcds('MTL_crewtend_xcd');
 $xcds{MTL_crewtend}=\@MTL_crewtend;

@LTL_crewtend=findxcds('LTL_crewtend_xcd');
 $xcds{LTL_crewtend}=\@LTL_crewtend;
 
@energy=findxcds('energy_xcd');
 $xcds{energy}=\@energy;

@keepalive=findxcds('keepalive_xcd');
 $xcds{keepalive}=\@keepalive;

@acoustics=findxcds('acoustics_xcd');
 $xcds{acoustics}=\@acoustics;

@acoustics_crewtend=findxcds('acoustics_crewtend_xcd');
 $xcds{acoustics_crewtend}=\@acoustics_crewtend;
 
@any_exceeded=findxcds('any_exceeded_inc');
 $xcds{any_exceeded}=\@any_exceeded;
#####################################################################################################
##open FOO,">log.txt";
##print FOO 'nums';
##for($k=0;$k!=$max;$k++){print FOO "\t$k"}
##print FOO "\n";
##
##print FOO 'trng';
##foreach(@crewtrng){print FOO "\t$_";}
##print FOO "\n";
##
##print FOO 'stow';
##foreach(@stowage){print FOO "\t$_";}
##print FOO "\n";
##
##print FOO 'mass';
##foreach(@upmass){print FOO "\t$_";}
##print FOO "\n";
##
##print FOO 'mids';
##foreach(@middecks){print FOO "\t$_";}
##print FOO "\n";
##close FOO;
#####################################################################################################

for($count=$min;$count!=$max+1;$count++)
 {
 open FILE,">d:\\plum\\docs\\output\\".$tblname.'_count_'.$count.'.txt';

# print FILE "CrewMTLTot\tCrewLTLTot\tIncAcousticsTot\tCrewAcousticsTot\tCrewEnergyTot\n";
 print FILE "Series_Series";
 print FILE "\tUpmassTot";
 print FILE "\tStowageTot";
 print FILE "\tMiddecksTot";
 print FILE "\tTrngTot";
 print FILE "\tTimeTot";
 print FILE "\tMTLIncLengthTot";
 print FILE "\tLTLIncLengthTot";
 print FILE "\tEnergyTot";
 print FILE "\tAnyIncLengthTot";
 print FILE "\t";
 print FILE "\t";
 print FILE "\tIncAcousticsTot";
 print FILE "\t";
 print FILE "\tKeepAliveTot";
 print FILE "\tCrewtend power";
 print FILE "\n";

 print FILE "ceeds Avail. Resources";
 print FILE "\t".($xcds{upmass}->[$count]);
 print FILE "\t".($xcds{stowage}->[$count]);
 print FILE "\t".($xcds{middecks}->[$count]);
 print FILE "\t".($xcds{crewtrng}->[$count]);
 print FILE "\t".($xcds{crewtime}->[$count]);
 print FILE "\t".($xcds{MTL}->[$count]);
 print FILE "\t".($xcds{LTL}->[$count]);
 print FILE "\t".($xcds{energy}->[$count]);
 print FILE "\t".($xcds{any_exceeded}->[$count]);
 print FILE "\t".($xcds{MTL_crewtend_xcd}->[$count]);
 print FILE "\t".($xcds{LTL_crewtend_xcd}->[$count]);
 print FILE "\t".($xcds{acoustics}->[$count]);
 print FILE "\t".($xcds{acoustics_crewtend}->[$count]);
 print FILE "\t".($xcds{keepalive}->[$count]);
 print FILE "\t".($xcds{crewtend}->[$count]);

 print FILE "\n";

 print FILE "Under 100% Utilization";
 print FILE "\t".($order-$xcds{upmass}->[$count]);
 print FILE "\t".($order-$xcds{stowage}->[$count]);
 print FILE "\t".($order-$xcds{middecks}->[$count]);
 print FILE "\t".($order-$xcds{crewtrng}->[$count]);
 print FILE "\t".($order-$xcds{crewtime}->[$count]);
 print FILE "\t".($order-$xcds{MTL}->[$count]);
 print FILE "\t".($order-$xcds{LTL}->[$count]);
 print FILE "\t".($order-$xcds{energy}->[$count]);
 print FILE "\t".($order-$xcds{any_exceeded}->[$count]);
 print FILE "\t".($order-$xcds{MTL_crewtend_xcd}->[$count]);
 print FILE "\t".($order-$xcds{MTL_crewtend_xcd}->[$count]);
 print FILE "\t".($order-$xcds{acoustics}->[$count]);
 print FILE "\t".($order-$xcds{acoustics_crewtend}->[$count]);
 print FILE "\t".($order-$xcds{keepalive}->[$count]);
 print FILE "\t".($order-$xcds{crewtend}->[$count]);

 close FILE;
 }

$db->disconnect();

###############################################
# Begin calculation funcs #####################
###############################################

sub findxcds{
	my @xcds;
	my $fieldname;
	$fieldname=shift;
	my @table;
	@table=fetchtable('select count(idx) as numexceeded,selectednum from '.$tblname.' where '.$fieldname.'=1 group by selectednum order by selectednum');
	if(@table == 0)
	 {
	 for($n=0;$n!=$max+1;$n++)
	  {
	  $table[$n]={selectednum=>$n,numexceeded=>0};
	  }
	 }
	foreach(@table)
	 {
	 $xcds[$_->{selectednum}]=$_->{numexceeded};
	 }
	foreach(@xcds)
	 {
	 if($_=='')
	  {
	  $_=0;
	  }
	 }
	
	return @xcds;
}

###############################################
# Begin library funcs #########################
###############################################

sub sql_query{
	if($_[0] eq '')
	 {
	 return;
	 }
	if($_[1] eq '')
	 {
	 $_[1]=$db;
	 }
	my $rst=$_[1]->prepare($_[0]);
	$rst->execute();
	return $rst;
}

sub fetchrow{
	my $row=$_[0]->fetchrow_hashref();
	return $row;
}

sub fetch_hash{
	my $row=$_[0]->fetchrow_hashref();
	return %{$row};
}

sub fetchtable{
	my $table=$_[0];
	my $rst=sql_query($table);
	my @rows;
	while($row=fetchrow($rst))
	 {
	 push @rows,$row;
	 }
	$rst->finish();
	return @rows;
}