#!/usr/bin/perl
use strict;
use warnings;

use Getopt::Long;
use Switch;

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

use LocalConfiguration;

use QA2aucmcccorrManager;
use QA2aucmcccorrUploadManager;


my $casp_version = uc($LOCAL_CONFIG->{CASP_VERSION});
my $RESULT_DIR = "/local/$casp_version/RESULTS/QA_analysis";

my $resultsupload_manager = new QA2aucmcccorrUploadManager();
my $actions;

# read arguments
GetOptions(
        "actions=s" => \$actions,
);


sub upload_mcc {
    my @dirs ;
    opendir D, "$RESULT_DIR";
    while(my $d = readdir(D)){
	if ($d =~ m/^A\.QA2.*stage[12]/){
		push @dirs, $d;
	}
    }
    closedir(D);
    foreach my $d (@dirs){
	my $dir = "$RESULT_DIR/$d";
	my $file = "QA2_Accuracy_5A-38A.txt";
	#print "$dir/$file";
	$resultsupload_manager->load_mcc($file, $dir);
    }
}

sub upload_auc {
    my @dirs ;
    opendir D, "$RESULT_DIR";
    while(my $d = readdir(D)){
        if ($d =~ m/^A\.QA2.*stage[12]/){
                push @dirs, $d;
        }
    }
    closedir(D);
    foreach my $d (@dirs){
        my $dir = "$RESULT_DIR/$d";
        my $file = "QA2_3.8_ROC_AUC.txt";
        #print "$dir/$file";
        $resultsupload_manager->load_auc($file, $dir);
    }
}

sub upload_fischer {
    my @dirs ;
    opendir D, "$RESULT_DIR";
    while(my $d = readdir(D)){
        if ($d =~ m/^A\.QA2.*stage[12]/){
                push @dirs, $d;
        }
    }
    closedir(D);
    foreach my $d (@dirs){
        my $dir = "$RESULT_DIR/$d";
        my $file = "QA2_CC_5A_SUMMARY.txt";
        #print "$dir/$file";
        $resultsupload_manager->load_fischer($file, $dir);
    }
}


sub run {
   for my $action (split(',', $actions)) {
           switch ($action) {
           case 'mcc' { upload_mcc(); }
           case 'auc' { upload_auc(); }
           case 'fischer' { upload_fischer(); }
           }
   }
}

run();

exit(0);
1;
