package QA2aseUploadManager;

use strict;
use warnings;

use DBI;
use lib qw(Core);
use lib qw(Classes);

use Database;

use Configuration;
use LocalConfiguration;

use QA2aseManager;

my $upload_manager = undef;

my $MODEL_FORMAT = "stage(\\d{1})";

sub new {
    my ($class) = @_;
    return $upload_manager if (defined($upload_manager));
    my $self = { };
    $upload_manager = bless $self, $class;
    return $upload_manager;    
}


sub parseDirName {
    my ($self, $dirname) = @_;
    my $model = undef;
    my $score = undef;
    if ($dirname =~ m/$MODEL_FORMAT/){
	my $m = $1;
	$model = $m;
    }
    return $model;
}


sub load{
    my ($self, $file, $dir) = @_;
    my $infile = sprintf("%s/%s", $dir, $file);
    my $mod = $self->parseDirName($dir);
    my $manager = new QA2aseManager();
    if (open IN, "< $infile") {
	while (my $l = <IN>){
		chomp $l;
		my %model = $manager->get_new_model();
		$model{model} = $mod;
		#gr_code,gr_name,target,ts_model,ase
		#034,Davis-EMAconsensus,T0859,T0859TS455_2,83.84539489492
		my @tokens = split(/,/, $l);
		$model{gr_code} = $tokens[0];
		$model{gr_name} = $tokens[1];
		$model{target} = $tokens[2];
		$model{ts_model} = $tokens[3];
		$model{ase} = $tokens[4];
		my $id = $manager->exist_by_parameters(%model);
		if (defined($id) && $id > 0){
			$model{id} = $id;
			$manager->update(%model);
		} else {
			$manager->add(%model);
		}
	}
	close (IN);
    } else {
       warn "Couldn't open file $infile\n";
    }

}

1;
